// Generated from E:/seata/seata/sqlparser/seata-sqlparser-antlr/src/main/java/io/seata/sqlparser/antlr/mysql/antlr\MySqlParser.g4 by ANTLR 4.8
package io.seata.sqlparser.antlr.mysql.parser;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class MySqlParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.8", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		SPACE=1, SPEC_MYSQL_COMMENT=2, COMMENT_INPUT=3, LINE_COMMENT=4, ADD=5, 
		ALL=6, ALTER=7, ALWAYS=8, ANALYZE=9, AND=10, AS=11, ASC=12, BEFORE=13, 
		BETWEEN=14, BOTH=15, BY=16, CALL=17, CASCADE=18, CASE=19, CAST=20, CHANGE=21, 
		CHARACTER=22, CHECK=23, COLLATE=24, COLUMN=25, CONDITION=26, CONSTRAINT=27, 
		CONTINUE=28, CONVERT=29, CREATE=30, CROSS=31, CURRENT=32, CURRENT_USER=33, 
		CURSOR=34, DATABASE=35, DATABASES=36, DECLARE=37, DEFAULT=38, DELAYED=39, 
		DELETE=40, DESC=41, DESCRIBE=42, DETERMINISTIC=43, DIAGNOSTICS=44, DISTINCT=45, 
		DISTINCTROW=46, DROP=47, EACH=48, ELSE=49, ELSEIF=50, ENCLOSED=51, ESCAPED=52, 
		EXISTS=53, EXIT=54, EXPLAIN=55, FALSE=56, FETCH=57, FOR=58, FORCE=59, 
		FOREIGN=60, FROM=61, FULLTEXT=62, GENERATED=63, GET=64, GRANT=65, GROUP=66, 
		HAVING=67, HIGH_PRIORITY=68, IF=69, IGNORE=70, IN=71, INDEX=72, INFILE=73, 
		INNER=74, INOUT=75, INSERT=76, INTERVAL=77, INTO=78, IS=79, ITERATE=80, 
		JOIN=81, KEY=82, KEYS=83, KILL=84, LEADING=85, LEAVE=86, LEFT=87, LIKE=88, 
		LIMIT=89, LINEAR=90, LINES=91, LOAD=92, LOCK=93, LOOP=94, LOW_PRIORITY=95, 
		MASTER_BIND=96, MASTER_SSL_VERIFY_SERVER_CERT=97, MATCH=98, MAXVALUE=99, 
		MODIFIES=100, NATURAL=101, NOT=102, NO_WRITE_TO_BINLOG=103, NULL_LITERAL=104, 
		NUMBER=105, ON=106, OPTIMIZE=107, OPTION=108, OPTIONALLY=109, OR=110, 
		ORDER=111, OUT=112, OUTER=113, OUTFILE=114, PARTITION=115, PRIMARY=116, 
		PROCEDURE=117, PURGE=118, RANGE=119, READ=120, READS=121, REFERENCES=122, 
		REGEXP=123, RELEASE=124, RENAME=125, REPEAT=126, REPLACE=127, REQUIRE=128, 
		RESIGNAL=129, RESTRICT=130, RETURN=131, REVOKE=132, RIGHT=133, RLIKE=134, 
		SCHEMA=135, SCHEMAS=136, SELECT=137, SET=138, SEPARATOR=139, SHOW=140, 
		SIGNAL=141, SPATIAL=142, SQL=143, SQLEXCEPTION=144, SQLSTATE=145, SQLWARNING=146, 
		SQL_BIG_RESULT=147, SQL_CALC_FOUND_ROWS=148, SQL_SMALL_RESULT=149, SSL=150, 
		STACKED=151, STARTING=152, STRAIGHT_JOIN=153, TABLE=154, TERMINATED=155, 
		THEN=156, TO=157, TRAILING=158, TRIGGER=159, TRUE=160, UNDO=161, UNION=162, 
		UNIQUE=163, UNLOCK=164, UNSIGNED=165, UPDATE=166, USAGE=167, USE=168, 
		USING=169, VALUES=170, WHEN=171, WHERE=172, WHILE=173, WITH=174, WRITE=175, 
		XOR=176, ZEROFILL=177, TINYINT=178, SMALLINT=179, MEDIUMINT=180, MIDDLEINT=181, 
		INT=182, INT1=183, INT2=184, INT3=185, INT4=186, INT8=187, INTEGER=188, 
		BIGINT=189, REAL=190, DOUBLE=191, PRECISION=192, FLOAT=193, FLOAT4=194, 
		FLOAT8=195, DECIMAL=196, DEC=197, NUMERIC=198, DATE=199, TIME=200, TIMESTAMP=201, 
		DATETIME=202, YEAR=203, CHAR=204, VARCHAR=205, NVARCHAR=206, NATIONAL=207, 
		BINARY=208, VARBINARY=209, TINYBLOB=210, BLOB=211, MEDIUMBLOB=212, LONG=213, 
		LONGBLOB=214, TINYTEXT=215, TEXT=216, MEDIUMTEXT=217, LONGTEXT=218, ENUM=219, 
		VARYING=220, SERIAL=221, YEAR_MONTH=222, DAY_HOUR=223, DAY_MINUTE=224, 
		DAY_SECOND=225, HOUR_MINUTE=226, HOUR_SECOND=227, MINUTE_SECOND=228, SECOND_MICROSECOND=229, 
		MINUTE_MICROSECOND=230, HOUR_MICROSECOND=231, DAY_MICROSECOND=232, JSON_VALID=233, 
		JSON_SCHEMA_VALID=234, AVG=235, BIT_AND=236, BIT_OR=237, BIT_XOR=238, 
		COUNT=239, GROUP_CONCAT=240, MAX=241, MIN=242, STD=243, STDDEV=244, STDDEV_POP=245, 
		STDDEV_SAMP=246, SUM=247, VAR_POP=248, VAR_SAMP=249, VARIANCE=250, CURRENT_DATE=251, 
		CURRENT_TIME=252, CURRENT_TIMESTAMP=253, LOCALTIME=254, CURDATE=255, CURTIME=256, 
		DATE_ADD=257, DATE_SUB=258, EXTRACT=259, LOCALTIMESTAMP=260, NOW=261, 
		POSITION=262, SUBSTR=263, SUBSTRING=264, SYSDATE=265, TRIM=266, UTC_DATE=267, 
		UTC_TIME=268, UTC_TIMESTAMP=269, ACCOUNT=270, ACTION=271, AFTER=272, AGGREGATE=273, 
		ALGORITHM=274, ANY=275, AT=276, AUTHORS=277, AUTOCOMMIT=278, AUTOEXTEND_SIZE=279, 
		AUTO_INCREMENT=280, AVG_ROW_LENGTH=281, BEGIN=282, BINLOG=283, BIT=284, 
		BLOCK=285, BOOL=286, BOOLEAN=287, BTREE=288, CACHE=289, CASCADED=290, 
		CHAIN=291, CHANGED=292, CHANNEL=293, CHECKSUM=294, PAGE_CHECKSUM=295, 
		CIPHER=296, CLASS_ORIGIN=297, CLIENT=298, CLOSE=299, COALESCE=300, CODE=301, 
		COLUMNS=302, COLUMN_FORMAT=303, COLUMN_NAME=304, COMMENT=305, COMMIT=306, 
		COMPACT=307, COMPLETION=308, COMPRESSED=309, COMPRESSION=310, CONCURRENT=311, 
		CONNECTION=312, CONSISTENT=313, CONSTRAINT_CATALOG=314, CONSTRAINT_SCHEMA=315, 
		CONSTRAINT_NAME=316, CONTAINS=317, CONTEXT=318, CONTRIBUTORS=319, COPY=320, 
		CPU=321, CURSOR_NAME=322, DATA=323, DATAFILE=324, DEALLOCATE=325, DEFAULT_AUTH=326, 
		DEFINER=327, DELAY_KEY_WRITE=328, DES_KEY_FILE=329, DIRECTORY=330, DISABLE=331, 
		DISCARD=332, DISK=333, DO=334, DUMPFILE=335, DUPLICATE=336, DYNAMIC=337, 
		ENABLE=338, ENCRYPTION=339, END=340, ENDS=341, ENGINE=342, ENGINES=343, 
		ERROR=344, ERRORS=345, ESCAPE=346, EVEN=347, EVENT=348, EVENTS=349, EVERY=350, 
		EXCHANGE=351, EXCLUSIVE=352, EXPIRE=353, EXPORT=354, EXTENDED=355, EXTENT_SIZE=356, 
		FAST=357, FAULTS=358, FIELDS=359, FILE_BLOCK_SIZE=360, FILTER=361, FIRST=362, 
		FIXED=363, FLUSH=364, FOLLOWS=365, FOUND=366, FULL=367, FUNCTION=368, 
		GENERAL=369, GLOBAL=370, GRANTS=371, GROUP_REPLICATION=372, HANDLER=373, 
		HASH=374, HELP=375, HOST=376, HOSTS=377, IDENTIFIED=378, IGNORE_SERVER_IDS=379, 
		IMPORT=380, INDEXES=381, INITIAL_SIZE=382, INPLACE=383, INSERT_METHOD=384, 
		INSTALL=385, INSTANCE=386, INVISIBLE=387, INVOKER=388, IO=389, IO_THREAD=390, 
		IPC=391, ISOLATION=392, ISSUER=393, JSON=394, KEY_BLOCK_SIZE=395, LANGUAGE=396, 
		LAST=397, LEAVES=398, LESS=399, LEVEL=400, LIST=401, LOCAL=402, LOGFILE=403, 
		LOGS=404, MASTER=405, MASTER_AUTO_POSITION=406, MASTER_CONNECT_RETRY=407, 
		MASTER_DELAY=408, MASTER_HEARTBEAT_PERIOD=409, MASTER_HOST=410, MASTER_LOG_FILE=411, 
		MASTER_LOG_POS=412, MASTER_PASSWORD=413, MASTER_PORT=414, MASTER_RETRY_COUNT=415, 
		MASTER_SSL=416, MASTER_SSL_CA=417, MASTER_SSL_CAPATH=418, MASTER_SSL_CERT=419, 
		MASTER_SSL_CIPHER=420, MASTER_SSL_CRL=421, MASTER_SSL_CRLPATH=422, MASTER_SSL_KEY=423, 
		MASTER_TLS_VERSION=424, MASTER_USER=425, MAX_CONNECTIONS_PER_HOUR=426, 
		MAX_QUERIES_PER_HOUR=427, MAX_ROWS=428, MAX_SIZE=429, MAX_UPDATES_PER_HOUR=430, 
		MAX_USER_CONNECTIONS=431, MEDIUM=432, MEMBER=433, MERGE=434, MESSAGE_TEXT=435, 
		MID=436, MIGRATE=437, MIN_ROWS=438, MODE=439, MODIFY=440, MUTEX=441, MYSQL=442, 
		MYSQL_ERRNO=443, NAME=444, NAMES=445, NCHAR=446, NEVER=447, NEXT=448, 
		NO=449, NODEGROUP=450, NONE=451, OFFLINE=452, OFFSET=453, OF=454, OJ=455, 
		OLD_PASSWORD=456, ONE=457, ONLINE=458, ONLY=459, OPEN=460, OPTIMIZER_COSTS=461, 
		OPTIONS=462, OWNER=463, PACK_KEYS=464, PAGE=465, PARSER=466, PARTIAL=467, 
		PARTITIONING=468, PARTITIONS=469, PASSWORD=470, PHASE=471, PLUGIN=472, 
		PLUGIN_DIR=473, PLUGINS=474, PORT=475, PRECEDES=476, PREPARE=477, PRESERVE=478, 
		PREV=479, PROCESSLIST=480, PROFILE=481, PROFILES=482, PROXY=483, QUERY=484, 
		QUICK=485, REBUILD=486, RECOVER=487, REDO_BUFFER_SIZE=488, REDUNDANT=489, 
		RELAY=490, RELAY_LOG_FILE=491, RELAY_LOG_POS=492, RELAYLOG=493, REMOVE=494, 
		REORGANIZE=495, REPAIR=496, REPLICATE_DO_DB=497, REPLICATE_DO_TABLE=498, 
		REPLICATE_IGNORE_DB=499, REPLICATE_IGNORE_TABLE=500, REPLICATE_REWRITE_DB=501, 
		REPLICATE_WILD_DO_TABLE=502, REPLICATE_WILD_IGNORE_TABLE=503, REPLICATION=504, 
		RESET=505, RESUME=506, RETURNED_SQLSTATE=507, RETURNS=508, ROLE=509, ROLLBACK=510, 
		ROLLUP=511, ROTATE=512, ROW=513, ROWS=514, ROW_FORMAT=515, SAVEPOINT=516, 
		SCHEDULE=517, SECURITY=518, SERVER=519, SESSION=520, SHARE=521, SHARED=522, 
		SIGNED=523, SIMPLE=524, SLAVE=525, SLOW=526, SNAPSHOT=527, SOCKET=528, 
		SOME=529, SONAME=530, SOUNDS=531, SOURCE=532, SQL_AFTER_GTIDS=533, SQL_AFTER_MTS_GAPS=534, 
		SQL_BEFORE_GTIDS=535, SQL_BUFFER_RESULT=536, SQL_CACHE=537, SQL_NO_CACHE=538, 
		SQL_THREAD=539, START=540, STARTS=541, STATS_AUTO_RECALC=542, STATS_PERSISTENT=543, 
		STATS_SAMPLE_PAGES=544, STATUS=545, STOP=546, STORAGE=547, STORED=548, 
		STRING=549, SUBCLASS_ORIGIN=550, SUBJECT=551, SUBPARTITION=552, SUBPARTITIONS=553, 
		SUSPEND=554, SWAPS=555, SWITCHES=556, TABLE_NAME=557, TABLESPACE=558, 
		TEMPORARY=559, TEMPTABLE=560, THAN=561, TRADITIONAL=562, TRANSACTION=563, 
		TRANSACTIONAL=564, TRIGGERS=565, TRUNCATE=566, UNDEFINED=567, UNDOFILE=568, 
		UNDO_BUFFER_SIZE=569, UNINSTALL=570, UNKNOWN=571, UNTIL=572, UPGRADE=573, 
		USER=574, USE_FRM=575, USER_RESOURCES=576, VALIDATION=577, VALUE=578, 
		VARIABLES=579, VIEW=580, VIRTUAL=581, VISIBLE=582, WAIT=583, WARNINGS=584, 
		WITHOUT=585, WORK=586, WRAPPER=587, X509=588, XA=589, XML=590, EUR=591, 
		USA=592, JIS=593, ISO=594, INTERNAL=595, QUARTER=596, MONTH=597, DAY=598, 
		HOUR=599, MINUTE=600, WEEK=601, SECOND=602, MICROSECOND=603, TABLES=604, 
		ROUTINE=605, EXECUTE=606, FILE=607, PROCESS=608, RELOAD=609, SHUTDOWN=610, 
		SUPER=611, PRIVILEGES=612, APPLICATION_PASSWORD_ADMIN=613, AUDIT_ADMIN=614, 
		BACKUP_ADMIN=615, BINLOG_ADMIN=616, BINLOG_ENCRYPTION_ADMIN=617, CLONE_ADMIN=618, 
		CONNECTION_ADMIN=619, ENCRYPTION_KEY_ADMIN=620, FIREWALL_ADMIN=621, FIREWALL_USER=622, 
		GROUP_REPLICATION_ADMIN=623, INNODB_REDO_LOG_ARCHIVE=624, NDB_STORED_USER=625, 
		PERSIST_RO_VARIABLES_ADMIN=626, REPLICATION_APPLIER=627, REPLICATION_SLAVE_ADMIN=628, 
		RESOURCE_GROUP_ADMIN=629, RESOURCE_GROUP_USER=630, ROLE_ADMIN=631, SESSION_VARIABLES_ADMIN=632, 
		SET_USER_ID=633, SHOW_ROUTINE=634, SYSTEM_VARIABLES_ADMIN=635, TABLE_ENCRYPTION_ADMIN=636, 
		VERSION_TOKEN_ADMIN=637, XA_RECOVER_ADMIN=638, ARMSCII8=639, ASCII=640, 
		BIG5=641, CP1250=642, CP1251=643, CP1256=644, CP1257=645, CP850=646, CP852=647, 
		CP866=648, CP932=649, DEC8=650, EUCJPMS=651, EUCKR=652, GB2312=653, GBK=654, 
		GEOSTD8=655, GREEK=656, HEBREW=657, HP8=658, KEYBCS2=659, KOI8R=660, KOI8U=661, 
		LATIN1=662, LATIN2=663, LATIN5=664, LATIN7=665, MACCE=666, MACROMAN=667, 
		SJIS=668, SWE7=669, TIS620=670, UCS2=671, UJIS=672, UTF16=673, UTF16LE=674, 
		UTF32=675, UTF8=676, UTF8MB3=677, UTF8MB4=678, ARCHIVE=679, BLACKHOLE=680, 
		CSV=681, FEDERATED=682, INNODB=683, MEMORY=684, MRG_MYISAM=685, MYISAM=686, 
		NDB=687, NDBCLUSTER=688, PERFORMANCE_SCHEMA=689, TOKUDB=690, REPEATABLE=691, 
		COMMITTED=692, UNCOMMITTED=693, SERIALIZABLE=694, GEOMETRYCOLLECTION=695, 
		GEOMCOLLECTION=696, GEOMETRY=697, LINESTRING=698, MULTILINESTRING=699, 
		MULTIPOINT=700, MULTIPOLYGON=701, POINT=702, POLYGON=703, ABS=704, ACOS=705, 
		ADDDATE=706, ADDTIME=707, AES_DECRYPT=708, AES_ENCRYPT=709, AREA=710, 
		ASBINARY=711, ASIN=712, ASTEXT=713, ASWKB=714, ASWKT=715, ASYMMETRIC_DECRYPT=716, 
		ASYMMETRIC_DERIVE=717, ASYMMETRIC_ENCRYPT=718, ASYMMETRIC_SIGN=719, ASYMMETRIC_VERIFY=720, 
		ATAN=721, ATAN2=722, BENCHMARK=723, BIN=724, BIT_COUNT=725, BIT_LENGTH=726, 
		BUFFER=727, CATALOG_NAME=728, CEIL=729, CEILING=730, CENTROID=731, CHARACTER_LENGTH=732, 
		CHARSET=733, CHAR_LENGTH=734, COERCIBILITY=735, COLLATION=736, COMPRESS=737, 
		CONCAT=738, CONCAT_WS=739, CONNECTION_ID=740, CONV=741, CONVERT_TZ=742, 
		COS=743, COT=744, CRC32=745, CREATE_ASYMMETRIC_PRIV_KEY=746, CREATE_ASYMMETRIC_PUB_KEY=747, 
		CREATE_DH_PARAMETERS=748, CREATE_DIGEST=749, CROSSES=750, DATEDIFF=751, 
		DATE_FORMAT=752, DAYNAME=753, DAYOFMONTH=754, DAYOFWEEK=755, DAYOFYEAR=756, 
		DECODE=757, DEGREES=758, DES_DECRYPT=759, DES_ENCRYPT=760, DIMENSION=761, 
		DISJOINT=762, ELT=763, ENCODE=764, ENCRYPT=765, ENDPOINT=766, ENVELOPE=767, 
		EQUALS=768, EXP=769, EXPORT_SET=770, EXTERIORRING=771, EXTRACTVALUE=772, 
		FIELD=773, FIND_IN_SET=774, FLOOR=775, FORMAT=776, FOUND_ROWS=777, FROM_BASE64=778, 
		FROM_DAYS=779, FROM_UNIXTIME=780, GEOMCOLLFROMTEXT=781, GEOMCOLLFROMWKB=782, 
		GEOMETRYCOLLECTIONFROMTEXT=783, GEOMETRYCOLLECTIONFROMWKB=784, GEOMETRYFROMTEXT=785, 
		GEOMETRYFROMWKB=786, GEOMETRYN=787, GEOMETRYTYPE=788, GEOMFROMTEXT=789, 
		GEOMFROMWKB=790, GET_FORMAT=791, GET_LOCK=792, GLENGTH=793, GREATEST=794, 
		GTID_SUBSET=795, GTID_SUBTRACT=796, HEX=797, IFNULL=798, INET6_ATON=799, 
		INET6_NTOA=800, INET_ATON=801, INET_NTOA=802, INSTR=803, INTERIORRINGN=804, 
		INTERSECTS=805, ISCLOSED=806, ISEMPTY=807, ISNULL=808, ISSIMPLE=809, IS_FREE_LOCK=810, 
		IS_IPV4=811, IS_IPV4_COMPAT=812, IS_IPV4_MAPPED=813, IS_IPV6=814, IS_USED_LOCK=815, 
		LAST_INSERT_ID=816, LCASE=817, LEAST=818, LENGTH=819, LINEFROMTEXT=820, 
		LINEFROMWKB=821, LINESTRINGFROMTEXT=822, LINESTRINGFROMWKB=823, LN=824, 
		LOAD_FILE=825, LOCATE=826, LOG=827, LOG10=828, LOG2=829, LOWER=830, LPAD=831, 
		LTRIM=832, MAKEDATE=833, MAKETIME=834, MAKE_SET=835, MASTER_POS_WAIT=836, 
		MBRCONTAINS=837, MBRDISJOINT=838, MBREQUAL=839, MBRINTERSECTS=840, MBROVERLAPS=841, 
		MBRTOUCHES=842, MBRWITHIN=843, MD5=844, MLINEFROMTEXT=845, MLINEFROMWKB=846, 
		MONTHNAME=847, MPOINTFROMTEXT=848, MPOINTFROMWKB=849, MPOLYFROMTEXT=850, 
		MPOLYFROMWKB=851, MULTILINESTRINGFROMTEXT=852, MULTILINESTRINGFROMWKB=853, 
		MULTIPOINTFROMTEXT=854, MULTIPOINTFROMWKB=855, MULTIPOLYGONFROMTEXT=856, 
		MULTIPOLYGONFROMWKB=857, NAME_CONST=858, NULLIF=859, NUMGEOMETRIES=860, 
		NUMINTERIORRINGS=861, NUMPOINTS=862, OCT=863, OCTET_LENGTH=864, ORD=865, 
		OVERLAPS=866, PERIOD_ADD=867, PERIOD_DIFF=868, PI=869, POINTFROMTEXT=870, 
		POINTFROMWKB=871, POINTN=872, POLYFROMTEXT=873, POLYFROMWKB=874, POLYGONFROMTEXT=875, 
		POLYGONFROMWKB=876, POW=877, POWER=878, QUOTE=879, RADIANS=880, RAND=881, 
		RANDOM_BYTES=882, RELEASE_LOCK=883, REVERSE=884, ROUND=885, ROW_COUNT=886, 
		RPAD=887, RTRIM=888, SEC_TO_TIME=889, SESSION_USER=890, SHA=891, SHA1=892, 
		SHA2=893, SCHEMA_NAME=894, SIGN=895, SIN=896, SLEEP=897, SOUNDEX=898, 
		SQL_THREAD_WAIT_AFTER_GTIDS=899, SQRT=900, SRID=901, STARTPOINT=902, STRCMP=903, 
		STR_TO_DATE=904, ST_AREA=905, ST_ASBINARY=906, ST_ASTEXT=907, ST_ASWKB=908, 
		ST_ASWKT=909, ST_BUFFER=910, ST_CENTROID=911, ST_CONTAINS=912, ST_CROSSES=913, 
		ST_DIFFERENCE=914, ST_DIMENSION=915, ST_DISJOINT=916, ST_DISTANCE=917, 
		ST_ENDPOINT=918, ST_ENVELOPE=919, ST_EQUALS=920, ST_EXTERIORRING=921, 
		ST_GEOMCOLLFROMTEXT=922, ST_GEOMCOLLFROMTXT=923, ST_GEOMCOLLFROMWKB=924, 
		ST_GEOMETRYCOLLECTIONFROMTEXT=925, ST_GEOMETRYCOLLECTIONFROMWKB=926, ST_GEOMETRYFROMTEXT=927, 
		ST_GEOMETRYFROMWKB=928, ST_GEOMETRYN=929, ST_GEOMETRYTYPE=930, ST_GEOMFROMTEXT=931, 
		ST_GEOMFROMWKB=932, ST_INTERIORRINGN=933, ST_INTERSECTION=934, ST_INTERSECTS=935, 
		ST_ISCLOSED=936, ST_ISEMPTY=937, ST_ISSIMPLE=938, ST_LINEFROMTEXT=939, 
		ST_LINEFROMWKB=940, ST_LINESTRINGFROMTEXT=941, ST_LINESTRINGFROMWKB=942, 
		ST_NUMGEOMETRIES=943, ST_NUMINTERIORRING=944, ST_NUMINTERIORRINGS=945, 
		ST_NUMPOINTS=946, ST_OVERLAPS=947, ST_POINTFROMTEXT=948, ST_POINTFROMWKB=949, 
		ST_POINTN=950, ST_POLYFROMTEXT=951, ST_POLYFROMWKB=952, ST_POLYGONFROMTEXT=953, 
		ST_POLYGONFROMWKB=954, ST_SRID=955, ST_STARTPOINT=956, ST_SYMDIFFERENCE=957, 
		ST_TOUCHES=958, ST_UNION=959, ST_WITHIN=960, ST_X=961, ST_Y=962, SUBDATE=963, 
		SUBSTRING_INDEX=964, SUBTIME=965, SYSTEM_USER=966, TAN=967, TIMEDIFF=968, 
		TIMESTAMPADD=969, TIMESTAMPDIFF=970, TIME_FORMAT=971, TIME_TO_SEC=972, 
		TOUCHES=973, TO_BASE64=974, TO_DAYS=975, TO_SECONDS=976, UCASE=977, UNCOMPRESS=978, 
		UNCOMPRESSED_LENGTH=979, UNHEX=980, UNIX_TIMESTAMP=981, UPDATEXML=982, 
		UPPER=983, UUID=984, UUID_SHORT=985, VALIDATE_PASSWORD_STRENGTH=986, VERSION=987, 
		WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS=988, WEEKDAY=989, WEEKOFYEAR=990, WEIGHT_STRING=991, 
		WITHIN=992, YEARWEEK=993, Y_FUNCTION=994, X_FUNCTION=995, VAR_ASSIGN=996, 
		PLUS_ASSIGN=997, MINUS_ASSIGN=998, MULT_ASSIGN=999, DIV_ASSIGN=1000, MOD_ASSIGN=1001, 
		AND_ASSIGN=1002, XOR_ASSIGN=1003, OR_ASSIGN=1004, STAR=1005, DIVIDE=1006, 
		MODULE=1007, PLUS=1008, MINUSMINUS=1009, MINUS=1010, DIV=1011, MOD=1012, 
		EQUAL_SYMBOL=1013, GREATER_SYMBOL=1014, LESS_SYMBOL=1015, EXCLAMATION_SYMBOL=1016, 
		BIT_NOT_OP=1017, BIT_OR_OP=1018, BIT_AND_OP=1019, BIT_XOR_OP=1020, DOT=1021, 
		LR_BRACKET=1022, RR_BRACKET=1023, COMMA=1024, SEMI=1025, AT_SIGN=1026, 
		ZERO_DECIMAL=1027, ONE_DECIMAL=1028, TWO_DECIMAL=1029, SINGLE_QUOTE_SYMB=1030, 
		DOUBLE_QUOTE_SYMB=1031, REVERSE_QUOTE_SYMB=1032, COLON_SYMB=1033, CHARSET_REVERSE_QOUTE_STRING=1034, 
		FILESIZE_LITERAL=1035, START_NATIONAL_STRING_LITERAL=1036, STRING_LITERAL=1037, 
		DECIMAL_LITERAL=1038, HEXADECIMAL_LITERAL=1039, REAL_LITERAL=1040, NULL_SPEC_LITERAL=1041, 
		BIT_STRING=1042, STRING_CHARSET_NAME=1043, DOT_ID=1044, ID=1045, REVERSE_QUOTE_ID=1046, 
		STRING_USER_NAME=1047, LOCAL_ID=1048, GLOBAL_ID=1049, ERROR_RECONGNIGION=1050;
	public static final int
		RULE_root = 0, RULE_sqlStatements = 1, RULE_sqlStatement = 2, RULE_emptyStatement = 3, 
		RULE_ddlStatement = 4, RULE_dmlStatement = 5, RULE_transactionStatement = 6, 
		RULE_replicationStatement = 7, RULE_preparedStatement = 8, RULE_compoundStatement = 9, 
		RULE_administrationStatement = 10, RULE_utilityStatement = 11, RULE_createDatabase = 12, 
		RULE_createEvent = 13, RULE_createIndex = 14, RULE_createLogfileGroup = 15, 
		RULE_createProcedure = 16, RULE_createFunction = 17, RULE_createServer = 18, 
		RULE_createTable = 19, RULE_createTablespaceInnodb = 20, RULE_createTablespaceNdb = 21, 
		RULE_createTrigger = 22, RULE_createView = 23, RULE_createDatabaseOption = 24, 
		RULE_ownerStatement = 25, RULE_scheduleExpression = 26, RULE_timestampValue = 27, 
		RULE_intervalExpr = 28, RULE_intervalType = 29, RULE_enableType = 30, 
		RULE_indexType = 31, RULE_indexOption = 32, RULE_procedureParameter = 33, 
		RULE_functionParameter = 34, RULE_routineOption = 35, RULE_serverOption = 36, 
		RULE_createDefinitions = 37, RULE_createDefinition = 38, RULE_columnDefinition = 39, 
		RULE_columnConstraint = 40, RULE_tableConstraint = 41, RULE_referenceDefinition = 42, 
		RULE_referenceAction = 43, RULE_referenceControlType = 44, RULE_indexColumnDefinition = 45, 
		RULE_tableOption = 46, RULE_tablespaceStorage = 47, RULE_partitionDefinitions = 48, 
		RULE_partitionFunctionDefinition = 49, RULE_subpartitionFunctionDefinition = 50, 
		RULE_partitionDefinition = 51, RULE_partitionDefinerAtom = 52, RULE_partitionDefinerVector = 53, 
		RULE_subpartitionDefinition = 54, RULE_partitionOption = 55, RULE_alterDatabase = 56, 
		RULE_alterEvent = 57, RULE_alterFunction = 58, RULE_alterInstance = 59, 
		RULE_alterLogfileGroup = 60, RULE_alterProcedure = 61, RULE_alterServer = 62, 
		RULE_alterTable = 63, RULE_alterTablespace = 64, RULE_alterView = 65, 
		RULE_alterSpecification = 66, RULE_dropDatabase = 67, RULE_dropEvent = 68, 
		RULE_dropIndex = 69, RULE_dropLogfileGroup = 70, RULE_dropProcedure = 71, 
		RULE_dropFunction = 72, RULE_dropServer = 73, RULE_dropTable = 74, RULE_dropTablespace = 75, 
		RULE_dropTrigger = 76, RULE_dropView = 77, RULE_renameTable = 78, RULE_renameTableClause = 79, 
		RULE_truncateTable = 80, RULE_callStatement = 81, RULE_deleteStatement = 82, 
		RULE_doStatement = 83, RULE_handlerStatement = 84, RULE_insertStatement = 85, 
		RULE_loadDataStatement = 86, RULE_loadXmlStatement = 87, RULE_replaceStatement = 88, 
		RULE_selectStatement = 89, RULE_updateStatement = 90, RULE_insertStatementValue = 91, 
		RULE_updatedElement = 92, RULE_assignmentField = 93, RULE_lockClause = 94, 
		RULE_singleDeleteStatement = 95, RULE_multipleDeleteStatement = 96, RULE_handlerOpenStatement = 97, 
		RULE_handlerReadIndexStatement = 98, RULE_handlerReadStatement = 99, RULE_handlerCloseStatement = 100, 
		RULE_singleUpdateStatement = 101, RULE_multipleUpdateStatement = 102, 
		RULE_orderByClause = 103, RULE_orderByExpression = 104, RULE_tableSources = 105, 
		RULE_tableSource = 106, RULE_tableSourceItem = 107, RULE_indexHint = 108, 
		RULE_indexHintType = 109, RULE_joinPart = 110, RULE_queryExpression = 111, 
		RULE_queryExpressionNointo = 112, RULE_querySpecification = 113, RULE_querySpecificationNointo = 114, 
		RULE_unionParenthesis = 115, RULE_unionStatement = 116, RULE_selectSpec = 117, 
		RULE_selectElements = 118, RULE_selectElement = 119, RULE_selectIntoExpression = 120, 
		RULE_selectFieldsInto = 121, RULE_selectLinesInto = 122, RULE_fromClause = 123, 
		RULE_groupByItem = 124, RULE_limitClause = 125, RULE_limitClauseAtom = 126, 
		RULE_startTransaction = 127, RULE_beginWork = 128, RULE_commitWork = 129, 
		RULE_rollbackWork = 130, RULE_savepointStatement = 131, RULE_rollbackStatement = 132, 
		RULE_releaseStatement = 133, RULE_lockTables = 134, RULE_unlockTables = 135, 
		RULE_setAutocommitStatement = 136, RULE_setTransactionStatement = 137, 
		RULE_transactionMode = 138, RULE_lockTableElement = 139, RULE_lockAction = 140, 
		RULE_transactionOption = 141, RULE_transactionLevel = 142, RULE_changeMaster = 143, 
		RULE_changeReplicationFilter = 144, RULE_purgeBinaryLogs = 145, RULE_resetMaster = 146, 
		RULE_resetSlave = 147, RULE_startSlave = 148, RULE_stopSlave = 149, RULE_startGroupReplication = 150, 
		RULE_stopGroupReplication = 151, RULE_masterOption = 152, RULE_stringMasterOption = 153, 
		RULE_decimalMasterOption = 154, RULE_boolMasterOption = 155, RULE_channelOption = 156, 
		RULE_replicationFilter = 157, RULE_tablePair = 158, RULE_threadType = 159, 
		RULE_untilOption = 160, RULE_connectionOption = 161, RULE_gtuidSet = 162, 
		RULE_xaStartTransaction = 163, RULE_xaEndTransaction = 164, RULE_xaPrepareStatement = 165, 
		RULE_xaCommitWork = 166, RULE_xaRollbackWork = 167, RULE_xaRecoverWork = 168, 
		RULE_prepareStatement = 169, RULE_executeStatement = 170, RULE_deallocatePrepare = 171, 
		RULE_routineBody = 172, RULE_blockStatement = 173, RULE_caseStatement = 174, 
		RULE_ifStatement = 175, RULE_iterateStatement = 176, RULE_leaveStatement = 177, 
		RULE_loopStatement = 178, RULE_repeatStatement = 179, RULE_returnStatement = 180, 
		RULE_whileStatement = 181, RULE_cursorStatement = 182, RULE_declareVariable = 183, 
		RULE_declareCondition = 184, RULE_declareCursor = 185, RULE_declareHandler = 186, 
		RULE_handlerConditionValue = 187, RULE_procedureSqlStatement = 188, RULE_caseAlternative = 189, 
		RULE_elifAlternative = 190, RULE_alterUser = 191, RULE_createUser = 192, 
		RULE_dropUser = 193, RULE_grantStatement = 194, RULE_grantProxy = 195, 
		RULE_renameUser = 196, RULE_revokeStatement = 197, RULE_revokeProxy = 198, 
		RULE_setPasswordStatement = 199, RULE_userSpecification = 200, RULE_userAuthOption = 201, 
		RULE_tlsOption = 202, RULE_userResourceOption = 203, RULE_userPasswordOption = 204, 
		RULE_userLockOption = 205, RULE_privelegeClause = 206, RULE_privilege = 207, 
		RULE_privilegeLevel = 208, RULE_renameUserClause = 209, RULE_analyzeTable = 210, 
		RULE_checkTable = 211, RULE_checksumTable = 212, RULE_optimizeTable = 213, 
		RULE_repairTable = 214, RULE_checkTableOption = 215, RULE_createUdfunction = 216, 
		RULE_installPlugin = 217, RULE_uninstallPlugin = 218, RULE_setStatement = 219, 
		RULE_showStatement = 220, RULE_variableClause = 221, RULE_showCommonEntity = 222, 
		RULE_showFilter = 223, RULE_showGlobalInfoClause = 224, RULE_showSchemaEntity = 225, 
		RULE_showProfileType = 226, RULE_binlogStatement = 227, RULE_cacheIndexStatement = 228, 
		RULE_flushStatement = 229, RULE_killStatement = 230, RULE_loadIndexIntoCache = 231, 
		RULE_resetStatement = 232, RULE_shutdownStatement = 233, RULE_tableIndexes = 234, 
		RULE_flushOption = 235, RULE_flushTableOption = 236, RULE_loadedTableIndexes = 237, 
		RULE_simpleDescribeStatement = 238, RULE_fullDescribeStatement = 239, 
		RULE_helpStatement = 240, RULE_useStatement = 241, RULE_signalStatement = 242, 
		RULE_resignalStatement = 243, RULE_signalConditionInformation = 244, RULE_diagnosticsStatement = 245, 
		RULE_diagnosticsConditionInformationName = 246, RULE_describeObjectClause = 247, 
		RULE_fullId = 248, RULE_tableName = 249, RULE_fullColumnName = 250, RULE_indexColumnName = 251, 
		RULE_userName = 252, RULE_mysqlVariable = 253, RULE_charsetName = 254, 
		RULE_collationName = 255, RULE_engineName = 256, RULE_uuidSet = 257, RULE_xid = 258, 
		RULE_xuidStringId = 259, RULE_authPlugin = 260, RULE_uid = 261, RULE_simpleId = 262, 
		RULE_dottedId = 263, RULE_decimalLiteral = 264, RULE_fileSizeLiteral = 265, 
		RULE_stringLiteral = 266, RULE_booleanLiteral = 267, RULE_hexadecimalLiteral = 268, 
		RULE_nullNotnull = 269, RULE_constant = 270, RULE_dataType = 271, RULE_collectionOptions = 272, 
		RULE_convertedDataType = 273, RULE_lengthOneDimension = 274, RULE_lengthTwoDimension = 275, 
		RULE_lengthTwoOptionalDimension = 276, RULE_uidList = 277, RULE_tables = 278, 
		RULE_indexColumnNames = 279, RULE_expressions = 280, RULE_expressionsForUpdate = 281, 
		RULE_expressionsWithDefaults = 282, RULE_constants = 283, RULE_simpleStrings = 284, 
		RULE_userVariables = 285, RULE_defaultValue = 286, RULE_currentTimestamp = 287, 
		RULE_expressionOrDefault = 288, RULE_ifExists = 289, RULE_ifNotExists = 290, 
		RULE_functionCall = 291, RULE_specificFunction = 292, RULE_caseFuncAlternative = 293, 
		RULE_levelsInWeightString = 294, RULE_levelInWeightListElement = 295, 
		RULE_aggregateWindowedFunction = 296, RULE_scalarFunctionName = 297, RULE_passwordFunctionClause = 298, 
		RULE_functionArgs = 299, RULE_functionArg = 300, RULE_expression = 301, 
		RULE_predicate = 302, RULE_expressionForUpdate = 303, RULE_predicateForUpdate = 304, 
		RULE_expressionAtomForUpdate = 305, RULE_expressionAtom = 306, RULE_unaryOperator = 307, 
		RULE_comparisonOperator = 308, RULE_logicalOperator = 309, RULE_bitOperator = 310, 
		RULE_mathOperator = 311, RULE_charsetNameBase = 312, RULE_transactionLevelBase = 313, 
		RULE_privilegesBase = 314, RULE_intervalTypeBase = 315, RULE_dataTypeBase = 316, 
		RULE_keywordsCanBeId = 317, RULE_functionNameBase = 318;
	private static String[] makeRuleNames() {
		return new String[] {
			"root", "sqlStatements", "sqlStatement", "emptyStatement", "ddlStatement", 
			"dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement", 
			"compoundStatement", "administrationStatement", "utilityStatement", "createDatabase", 
			"createEvent", "createIndex", "createLogfileGroup", "createProcedure", 
			"createFunction", "createServer", "createTable", "createTablespaceInnodb", 
			"createTablespaceNdb", "createTrigger", "createView", "createDatabaseOption", 
			"ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", 
			"intervalType", "enableType", "indexType", "indexOption", "procedureParameter", 
			"functionParameter", "routineOption", "serverOption", "createDefinitions", 
			"createDefinition", "columnDefinition", "columnConstraint", "tableConstraint", 
			"referenceDefinition", "referenceAction", "referenceControlType", "indexColumnDefinition", 
			"tableOption", "tablespaceStorage", "partitionDefinitions", "partitionFunctionDefinition", 
			"subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", 
			"partitionDefinerVector", "subpartitionDefinition", "partitionOption", 
			"alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", 
			"alterProcedure", "alterServer", "alterTable", "alterTablespace", "alterView", 
			"alterSpecification", "dropDatabase", "dropEvent", "dropIndex", "dropLogfileGroup", 
			"dropProcedure", "dropFunction", "dropServer", "dropTable", "dropTablespace", 
			"dropTrigger", "dropView", "renameTable", "renameTableClause", "truncateTable", 
			"callStatement", "deleteStatement", "doStatement", "handlerStatement", 
			"insertStatement", "loadDataStatement", "loadXmlStatement", "replaceStatement", 
			"selectStatement", "updateStatement", "insertStatementValue", "updatedElement", 
			"assignmentField", "lockClause", "singleDeleteStatement", "multipleDeleteStatement", 
			"handlerOpenStatement", "handlerReadIndexStatement", "handlerReadStatement", 
			"handlerCloseStatement", "singleUpdateStatement", "multipleUpdateStatement", 
			"orderByClause", "orderByExpression", "tableSources", "tableSource", 
			"tableSourceItem", "indexHint", "indexHintType", "joinPart", "queryExpression", 
			"queryExpressionNointo", "querySpecification", "querySpecificationNointo", 
			"unionParenthesis", "unionStatement", "selectSpec", "selectElements", 
			"selectElement", "selectIntoExpression", "selectFieldsInto", "selectLinesInto", 
			"fromClause", "groupByItem", "limitClause", "limitClauseAtom", "startTransaction", 
			"beginWork", "commitWork", "rollbackWork", "savepointStatement", "rollbackStatement", 
			"releaseStatement", "lockTables", "unlockTables", "setAutocommitStatement", 
			"setTransactionStatement", "transactionMode", "lockTableElement", "lockAction", 
			"transactionOption", "transactionLevel", "changeMaster", "changeReplicationFilter", 
			"purgeBinaryLogs", "resetMaster", "resetSlave", "startSlave", "stopSlave", 
			"startGroupReplication", "stopGroupReplication", "masterOption", "stringMasterOption", 
			"decimalMasterOption", "boolMasterOption", "channelOption", "replicationFilter", 
			"tablePair", "threadType", "untilOption", "connectionOption", "gtuidSet", 
			"xaStartTransaction", "xaEndTransaction", "xaPrepareStatement", "xaCommitWork", 
			"xaRollbackWork", "xaRecoverWork", "prepareStatement", "executeStatement", 
			"deallocatePrepare", "routineBody", "blockStatement", "caseStatement", 
			"ifStatement", "iterateStatement", "leaveStatement", "loopStatement", 
			"repeatStatement", "returnStatement", "whileStatement", "cursorStatement", 
			"declareVariable", "declareCondition", "declareCursor", "declareHandler", 
			"handlerConditionValue", "procedureSqlStatement", "caseAlternative", 
			"elifAlternative", "alterUser", "createUser", "dropUser", "grantStatement", 
			"grantProxy", "renameUser", "revokeStatement", "revokeProxy", "setPasswordStatement", 
			"userSpecification", "userAuthOption", "tlsOption", "userResourceOption", 
			"userPasswordOption", "userLockOption", "privelegeClause", "privilege", 
			"privilegeLevel", "renameUserClause", "analyzeTable", "checkTable", "checksumTable", 
			"optimizeTable", "repairTable", "checkTableOption", "createUdfunction", 
			"installPlugin", "uninstallPlugin", "setStatement", "showStatement", 
			"variableClause", "showCommonEntity", "showFilter", "showGlobalInfoClause", 
			"showSchemaEntity", "showProfileType", "binlogStatement", "cacheIndexStatement", 
			"flushStatement", "killStatement", "loadIndexIntoCache", "resetStatement", 
			"shutdownStatement", "tableIndexes", "flushOption", "flushTableOption", 
			"loadedTableIndexes", "simpleDescribeStatement", "fullDescribeStatement", 
			"helpStatement", "useStatement", "signalStatement", "resignalStatement", 
			"signalConditionInformation", "diagnosticsStatement", "diagnosticsConditionInformationName", 
			"describeObjectClause", "fullId", "tableName", "fullColumnName", "indexColumnName", 
			"userName", "mysqlVariable", "charsetName", "collationName", "engineName", 
			"uuidSet", "xid", "xuidStringId", "authPlugin", "uid", "simpleId", "dottedId", 
			"decimalLiteral", "fileSizeLiteral", "stringLiteral", "booleanLiteral", 
			"hexadecimalLiteral", "nullNotnull", "constant", "dataType", "collectionOptions", 
			"convertedDataType", "lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", 
			"uidList", "tables", "indexColumnNames", "expressions", "expressionsForUpdate", 
			"expressionsWithDefaults", "constants", "simpleStrings", "userVariables", 
			"defaultValue", "currentTimestamp", "expressionOrDefault", "ifExists", 
			"ifNotExists", "functionCall", "specificFunction", "caseFuncAlternative", 
			"levelsInWeightString", "levelInWeightListElement", "aggregateWindowedFunction", 
			"scalarFunctionName", "passwordFunctionClause", "functionArgs", "functionArg", 
			"expression", "predicate", "expressionForUpdate", "predicateForUpdate", 
			"expressionAtomForUpdate", "expressionAtom", "unaryOperator", "comparisonOperator", 
			"logicalOperator", "bitOperator", "mathOperator", "charsetNameBase", 
			"transactionLevelBase", "privilegesBase", "intervalTypeBase", "dataTypeBase", 
			"keywordsCanBeId", "functionNameBase"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, null, null, null, null, "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", 
			"'ANALYZE'", "'AND'", "'AS'", "'ASC'", "'BEFORE'", "'BETWEEN'", "'BOTH'", 
			"'BY'", "'CALL'", "'CASCADE'", "'CASE'", "'CAST'", "'CHANGE'", "'CHARACTER'", 
			"'CHECK'", "'COLLATE'", "'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", 
			"'CONVERT'", "'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_USER'", "'CURSOR'", 
			"'DATABASE'", "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'", "'DELETE'", 
			"'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", "'DISTINCT'", 
			"'DISTINCTROW'", "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'", "'ENCLOSED'", 
			"'ESCAPED'", "'EXISTS'", "'EXIT'", "'EXPLAIN'", "'FALSE'", "'FETCH'", 
			"'FOR'", "'FORCE'", "'FOREIGN'", "'FROM'", "'FULLTEXT'", "'GENERATED'", 
			"'GET'", "'GRANT'", "'GROUP'", "'HAVING'", "'HIGH_PRIORITY'", "'IF'", 
			"'IGNORE'", "'IN'", "'INDEX'", "'INFILE'", "'INNER'", "'INOUT'", "'INSERT'", 
			"'INTERVAL'", "'INTO'", "'IS'", "'ITERATE'", "'JOIN'", "'KEY'", "'KEYS'", 
			"'KILL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LIKE'", "'LIMIT'", "'LINEAR'", 
			"'LINES'", "'LOAD'", "'LOCK'", "'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", 
			"'MASTER_SSL_VERIFY_SERVER_CERT'", "'MATCH'", "'MAXVALUE'", "'MODIFIES'", 
			"'NATURAL'", "'NOT'", "'NO_WRITE_TO_BINLOG'", "'NULL'", "'NUMBER'", "'ON'", 
			"'OPTIMIZE'", "'OPTION'", "'OPTIONALLY'", "'OR'", "'ORDER'", "'OUT'", 
			"'OUTER'", "'OUTFILE'", "'PARTITION'", "'PRIMARY'", "'PROCEDURE'", "'PURGE'", 
			"'RANGE'", "'READ'", "'READS'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", 
			"'RENAME'", "'REPEAT'", "'REPLACE'", "'REQUIRE'", "'RESIGNAL'", "'RESTRICT'", 
			"'RETURN'", "'REVOKE'", "'RIGHT'", "'RLIKE'", "'SCHEMA'", "'SCHEMAS'", 
			"'SELECT'", "'SET'", "'SEPARATOR'", "'SHOW'", "'SIGNAL'", "'SPATIAL'", 
			"'SQL'", "'SQLEXCEPTION'", "'SQLSTATE'", "'SQLWARNING'", "'SQL_BIG_RESULT'", 
			"'SQL_CALC_FOUND_ROWS'", "'SQL_SMALL_RESULT'", "'SSL'", "'STACKED'", 
			"'STARTING'", "'STRAIGHT_JOIN'", "'TABLE'", "'TERMINATED'", "'THEN'", 
			"'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'", "'UNIQUE'", 
			"'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", "'USING'", 
			"'VALUES'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'", 
			"'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'", 
			"'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'", 
			"'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'", 
			"'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", "'TIMESTAMP'", 
			"'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", "'NATIONAL'", 
			"'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'", 
			"'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'", 
			"'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", 
			"'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", 
			"'SECOND_MICROSECOND'", "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", 
			"'DAY_MICROSECOND'", "'JSON_VALID'", "'JSON_SCHEMA_VALID'", "'AVG'", 
			"'BIT_AND'", "'BIT_OR'", "'BIT_XOR'", "'COUNT'", "'GROUP_CONCAT'", "'MAX'", 
			"'MIN'", "'STD'", "'STDDEV'", "'STDDEV_POP'", "'STDDEV_SAMP'", "'SUM'", 
			"'VAR_POP'", "'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'", 
			"'CURRENT_TIMESTAMP'", "'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'", 
			"'DATE_SUB'", "'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", 
			"'SUBSTR'", "'SUBSTRING'", "'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", 
			"'UTC_TIMESTAMP'", "'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", 
			"'ALGORITHM'", "'ANY'", "'AT'", "'AUTHORS'", "'AUTOCOMMIT'", "'AUTOEXTEND_SIZE'", 
			"'AUTO_INCREMENT'", "'AVG_ROW_LENGTH'", "'BEGIN'", "'BINLOG'", "'BIT'", 
			"'BLOCK'", "'BOOL'", "'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", 
			"'CHAIN'", "'CHANGED'", "'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", 
			"'CIPHER'", "'CLASS_ORIGIN'", "'CLIENT'", "'CLOSE'", "'COALESCE'", "'CODE'", 
			"'COLUMNS'", "'COLUMN_FORMAT'", "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", 
			"'COMPACT'", "'COMPLETION'", "'COMPRESSED'", "'COMPRESSION'", "'CONCURRENT'", 
			"'CONNECTION'", "'CONSISTENT'", "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", 
			"'CONSTRAINT_NAME'", "'CONTAINS'", "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", 
			"'CPU'", "'CURSOR_NAME'", "'DATA'", "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", 
			"'DEFINER'", "'DELAY_KEY_WRITE'", "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", 
			"'DISCARD'", "'DISK'", "'DO'", "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", 
			"'ENABLE'", "'ENCRYPTION'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", 
			"'ERROR'", "'ERRORS'", "'ESCAPE'", "'EVEN'", "'EVENT'", "'EVENTS'", "'EVERY'", 
			"'EXCHANGE'", "'EXCLUSIVE'", "'EXPIRE'", "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", 
			"'FAST'", "'FAULTS'", "'FIELDS'", "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", 
			"'FIXED'", "'FLUSH'", "'FOLLOWS'", "'FOUND'", "'FULL'", "'FUNCTION'", 
			"'GENERAL'", "'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", "'HANDLER'", 
			"'HASH'", "'HELP'", "'HOST'", "'HOSTS'", "'IDENTIFIED'", "'IGNORE_SERVER_IDS'", 
			"'IMPORT'", "'INDEXES'", "'INITIAL_SIZE'", "'INPLACE'", "'INSERT_METHOD'", 
			"'INSTALL'", "'INSTANCE'", "'INVISIBLE'", "'INVOKER'", "'IO'", "'IO_THREAD'", 
			"'IPC'", "'ISOLATION'", "'ISSUER'", "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'", 
			"'LAST'", "'LEAVES'", "'LESS'", "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", 
			"'LOGS'", "'MASTER'", "'MASTER_AUTO_POSITION'", "'MASTER_CONNECT_RETRY'", 
			"'MASTER_DELAY'", "'MASTER_HEARTBEAT_PERIOD'", "'MASTER_HOST'", "'MASTER_LOG_FILE'", 
			"'MASTER_LOG_POS'", "'MASTER_PASSWORD'", "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", 
			"'MASTER_SSL'", "'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", 
			"'MASTER_SSL_CIPHER'", "'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'", 
			"'MASTER_TLS_VERSION'", "'MASTER_USER'", "'MAX_CONNECTIONS_PER_HOUR'", 
			"'MAX_QUERIES_PER_HOUR'", "'MAX_ROWS'", "'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'", 
			"'MAX_USER_CONNECTIONS'", "'MEDIUM'", "'MEMBER'", "'MERGE'", "'MESSAGE_TEXT'", 
			"'MID'", "'MIGRATE'", "'MIN_ROWS'", "'MODE'", "'MODIFY'", "'MUTEX'", 
			"'MYSQL'", "'MYSQL_ERRNO'", "'NAME'", "'NAMES'", "'NCHAR'", "'NEVER'", 
			"'NEXT'", "'NO'", "'NODEGROUP'", "'NONE'", "'OFFLINE'", "'OFFSET'", "'OF'", 
			"'OJ'", "'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", "'OPTIMIZER_COSTS'", 
			"'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", "'PARSER'", "'PARTIAL'", 
			"'PARTITIONING'", "'PARTITIONS'", "'PASSWORD'", "'PHASE'", "'PLUGIN'", 
			"'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", "'PREPARE'", "'PRESERVE'", 
			"'PREV'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", "'PROXY'", "'QUERY'", 
			"'QUICK'", "'REBUILD'", "'RECOVER'", "'REDO_BUFFER_SIZE'", "'REDUNDANT'", 
			"'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", "'RELAYLOG'", "'REMOVE'", 
			"'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", 
			"'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'", 
			"'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", 
			"'RESET'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNS'", "'ROLE'", 
			"'ROLLBACK'", "'ROLLUP'", "'ROTATE'", "'ROW'", "'ROWS'", "'ROW_FORMAT'", 
			"'SAVEPOINT'", "'SCHEDULE'", "'SECURITY'", "'SERVER'", "'SESSION'", "'SHARE'", 
			"'SHARED'", "'SIGNED'", "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'", 
			"'SOCKET'", "'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", 
			"'SQL_AFTER_MTS_GAPS'", "'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", 
			"'SQL_CACHE'", "'SQL_NO_CACHE'", "'SQL_THREAD'", "'START'", "'STARTS'", 
			"'STATS_AUTO_RECALC'", "'STATS_PERSISTENT'", "'STATS_SAMPLE_PAGES'", 
			"'STATUS'", "'STOP'", "'STORAGE'", "'STORED'", "'STRING'", "'SUBCLASS_ORIGIN'", 
			"'SUBJECT'", "'SUBPARTITION'", "'SUBPARTITIONS'", "'SUSPEND'", "'SWAPS'", 
			"'SWITCHES'", "'TABLE_NAME'", "'TABLESPACE'", "'TEMPORARY'", "'TEMPTABLE'", 
			"'THAN'", "'TRADITIONAL'", "'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", 
			"'TRUNCATE'", "'UNDEFINED'", "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'", 
			"'UNKNOWN'", "'UNTIL'", "'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'", 
			"'VALIDATION'", "'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", 
			"'WAIT'", "'WARNINGS'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", 
			"'XA'", "'XML'", "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", "'QUARTER'", 
			"'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", "'SECOND'", "'MICROSECOND'", 
			"'TABLES'", "'ROUTINE'", "'EXECUTE'", "'FILE'", "'PROCESS'", "'RELOAD'", 
			"'SHUTDOWN'", "'SUPER'", "'PRIVILEGES'", "'APPLICATION_PASSWORD_ADMIN'", 
			"'AUDIT_ADMIN'", "'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", 
			"'CLONE_ADMIN'", "'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'FIREWALL_ADMIN'", 
			"'FIREWALL_USER'", "'GROUP_REPLICATION_ADMIN'", "'INNODB_REDO_LOG_ARCHIVE'", 
			"'NDB_STORED_USER'", "'PERSIST_RO_VARIABLES_ADMIN'", "'REPLICATION_APPLIER'", 
			"'REPLICATION_SLAVE_ADMIN'", "'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", 
			"'ROLE_ADMIN'", null, "'SET_USER_ID'", "'SHOW_ROUTINE'", "'SYSTEM_VARIABLES_ADMIN'", 
			"'TABLE_ENCRYPTION_ADMIN'", "'VERSION_TOKEN_ADMIN'", "'XA_RECOVER_ADMIN'", 
			"'ARMSCII8'", "'ASCII'", "'BIG5'", "'CP1250'", "'CP1251'", "'CP1256'", 
			"'CP1257'", "'CP850'", "'CP852'", "'CP866'", "'CP932'", "'DEC8'", "'EUCJPMS'", 
			"'EUCKR'", "'GB2312'", "'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", "'HP8'", 
			"'KEYBCS2'", "'KOI8R'", "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", 
			"'LATIN7'", "'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", 
			"'UCS2'", "'UJIS'", "'UTF16'", "'UTF16LE'", "'UTF32'", "'UTF8'", "'UTF8MB3'", 
			"'UTF8MB4'", "'ARCHIVE'", "'BLACKHOLE'", "'CSV'", "'FEDERATED'", "'INNODB'", 
			"'MEMORY'", "'MRG_MYISAM'", "'MYISAM'", "'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", 
			"'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", 
			"'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", 
			"'MULTILINESTRING'", "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", 
			"'ABS'", "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", 
			"'AREA'", "'ASBINARY'", "'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", 
			"'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", 
			"'ATAN'", "'ATAN2'", "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", 
			"'BUFFER'", "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'", 
			"'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'", 
			"'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'", 
			"'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", "'CREATE_ASYMMETRIC_PUB_KEY'", 
			"'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'", 
			"'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'", 
			"'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", "'DIMENSION'", 
			"'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", "'ENDPOINT'", "'ENVELOPE'", 
			"'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", "'EXTRACTVALUE'", 
			"'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", "'FOUND_ROWS'", "'FROM_BASE64'", 
			"'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", "'GEOMCOLLFROMWKB'", 
			"'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", "'GEOMETRYFROMTEXT'", 
			"'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", "'GEOMFROMTEXT'", 
			"'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", "'GLENGTH'", "'GREATEST'", 
			"'GTID_SUBSET'", "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", "'INET6_ATON'", 
			"'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", "'INTERIORRINGN'", 
			"'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", "'ISSIMPLE'", 
			"'IS_FREE_LOCK'", "'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", 
			"'IS_IPV6'", "'IS_USED_LOCK'", "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", 
			"'LENGTH'", "'LINEFROMTEXT'", "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", 
			"'LINESTRINGFROMWKB'", "'LN'", "'LOAD_FILE'", "'LOCATE'", "'LOG'", "'LOG10'", 
			"'LOG2'", "'LOWER'", "'LPAD'", "'LTRIM'", "'MAKEDATE'", "'MAKETIME'", 
			"'MAKE_SET'", "'MASTER_POS_WAIT'", "'MBRCONTAINS'", "'MBRDISJOINT'", 
			"'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", "'MBRTOUCHES'", "'MBRWITHIN'", 
			"'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", "'MONTHNAME'", "'MPOINTFROMTEXT'", 
			"'MPOINTFROMWKB'", "'MPOLYFROMTEXT'", "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", 
			"'MULTILINESTRINGFROMWKB'", "'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", 
			"'MULTIPOLYGONFROMTEXT'", "'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", 
			"'NUMGEOMETRIES'", "'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", 
			"'ORD'", "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", "'POINTFROMTEXT'", 
			"'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", "'POLYFROMWKB'", "'POLYGONFROMTEXT'", 
			"'POLYGONFROMWKB'", "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", 
			"'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", "'ROW_COUNT'", 
			"'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", "'SESSION_USER'", "'SHA'", "'SHA1'", 
			"'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", 
			"'SQL_THREAD_WAIT_AFTER_GTIDS'", "'SQRT'", "'SRID'", "'STARTPOINT'", 
			"'STRCMP'", "'STR_TO_DATE'", "'ST_AREA'", "'ST_ASBINARY'", "'ST_ASTEXT'", 
			"'ST_ASWKB'", "'ST_ASWKT'", "'ST_BUFFER'", "'ST_CENTROID'", "'ST_CONTAINS'", 
			"'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'", "'ST_DISJOINT'", 
			"'ST_DISTANCE'", "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'", "'ST_EXTERIORRING'", 
			"'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", 
			"'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", 
			"'ST_GEOMETRYFROMTEXT'", "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", "'ST_GEOMETRYTYPE'", 
			"'ST_GEOMFROMTEXT'", "'ST_GEOMFROMWKB'", "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", 
			"'ST_INTERSECTS'", "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", 
			"'ST_LINEFROMTEXT'", "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", 
			"'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", 
			"'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'", 
			"'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", 
			"'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", 
			"'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", "'SUBDATE'", 
			"'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", "'TAN'", "'TIMEDIFF'", 
			"'TIMESTAMPADD'", "'TIMESTAMPDIFF'", "'TIME_FORMAT'", "'TIME_TO_SEC'", 
			"'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", "'TO_SECONDS'", "'UCASE'", "'UNCOMPRESS'", 
			"'UNCOMPRESSED_LENGTH'", "'UNHEX'", "'UNIX_TIMESTAMP'", "'UPDATEXML'", 
			"'UPPER'", "'UUID'", "'UUID_SHORT'", "'VALIDATE_PASSWORD_STRENGTH'", 
			"'VERSION'", "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", "'WEEKDAY'", "'WEEKOFYEAR'", 
			"'WEIGHT_STRING'", "'WITHIN'", "'YEARWEEK'", "'Y'", "'X'", "':='", "'+='", 
			"'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'*'", "'/'", 
			"'%'", "'+'", "'--'", "'-'", "'DIV'", "'MOD'", "'='", "'>'", "'<'", "'!'", 
			"'~'", "'|'", "'&'", "'^'", "'.'", "'('", "')'", "','", "';'", "'@'", 
			"'0'", "'1'", "'2'", "'''", "'\"'", "'`'", "':'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", 
			"ADD", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "AS", "ASC", "BEFORE", 
			"BETWEEN", "BOTH", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHANGE", 
			"CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONDITION", "CONSTRAINT", 
			"CONTINUE", "CONVERT", "CREATE", "CROSS", "CURRENT", "CURRENT_USER", 
			"CURSOR", "DATABASE", "DATABASES", "DECLARE", "DEFAULT", "DELAYED", "DELETE", 
			"DESC", "DESCRIBE", "DETERMINISTIC", "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", 
			"DROP", "EACH", "ELSE", "ELSEIF", "ENCLOSED", "ESCAPED", "EXISTS", "EXIT", 
			"EXPLAIN", "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN", "FROM", "FULLTEXT", 
			"GENERATED", "GET", "GRANT", "GROUP", "HAVING", "HIGH_PRIORITY", "IF", 
			"IGNORE", "IN", "INDEX", "INFILE", "INNER", "INOUT", "INSERT", "INTERVAL", 
			"INTO", "IS", "ITERATE", "JOIN", "KEY", "KEYS", "KILL", "LEADING", "LEAVE", 
			"LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", "LOCK", "LOOP", "LOW_PRIORITY", 
			"MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", "MATCH", "MAXVALUE", 
			"MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", "NULL_LITERAL", "NUMBER", 
			"ON", "OPTIMIZE", "OPTION", "OPTIONALLY", "OR", "ORDER", "OUT", "OUTER", 
			"OUTFILE", "PARTITION", "PRIMARY", "PROCEDURE", "PURGE", "RANGE", "READ", 
			"READS", "REFERENCES", "REGEXP", "RELEASE", "RENAME", "REPEAT", "REPLACE", 
			"REQUIRE", "RESIGNAL", "RESTRICT", "RETURN", "REVOKE", "RIGHT", "RLIKE", 
			"SCHEMA", "SCHEMAS", "SELECT", "SET", "SEPARATOR", "SHOW", "SIGNAL", 
			"SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", 
			"SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", 
			"STRAIGHT_JOIN", "TABLE", "TERMINATED", "THEN", "TO", "TRAILING", "TRIGGER", 
			"TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", "UNSIGNED", "UPDATE", "USAGE", 
			"USE", "USING", "VALUES", "WHEN", "WHERE", "WHILE", "WITH", "WRITE", 
			"XOR", "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", "MIDDLEINT", "INT", 
			"INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "BIGINT", "REAL", 
			"DOUBLE", "PRECISION", "FLOAT", "FLOAT4", "FLOAT8", "DECIMAL", "DEC", 
			"NUMERIC", "DATE", "TIME", "TIMESTAMP", "DATETIME", "YEAR", "CHAR", "VARCHAR", 
			"NVARCHAR", "NATIONAL", "BINARY", "VARBINARY", "TINYBLOB", "BLOB", "MEDIUMBLOB", 
			"LONG", "LONGBLOB", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", 
			"VARYING", "SERIAL", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", 
			"HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND", "SECOND_MICROSECOND", 
			"MINUTE_MICROSECOND", "HOUR_MICROSECOND", "DAY_MICROSECOND", "JSON_VALID", 
			"JSON_SCHEMA_VALID", "AVG", "BIT_AND", "BIT_OR", "BIT_XOR", "COUNT", 
			"GROUP_CONCAT", "MAX", "MIN", "STD", "STDDEV", "STDDEV_POP", "STDDEV_SAMP", 
			"SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", "CURRENT_DATE", "CURRENT_TIME", 
			"CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", "CURTIME", "DATE_ADD", "DATE_SUB", 
			"EXTRACT", "LOCALTIMESTAMP", "NOW", "POSITION", "SUBSTR", "SUBSTRING", 
			"SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "ACCOUNT", 
			"ACTION", "AFTER", "AGGREGATE", "ALGORITHM", "ANY", "AT", "AUTHORS", 
			"AUTOCOMMIT", "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG_ROW_LENGTH", 
			"BEGIN", "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN", "BTREE", "CACHE", 
			"CASCADED", "CHAIN", "CHANGED", "CHANNEL", "CHECKSUM", "PAGE_CHECKSUM", 
			"CIPHER", "CLASS_ORIGIN", "CLIENT", "CLOSE", "COALESCE", "CODE", "COLUMNS", 
			"COLUMN_FORMAT", "COLUMN_NAME", "COMMENT", "COMMIT", "COMPACT", "COMPLETION", 
			"COMPRESSED", "COMPRESSION", "CONCURRENT", "CONNECTION", "CONSISTENT", 
			"CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", "CONSTRAINT_NAME", "CONTAINS", 
			"CONTEXT", "CONTRIBUTORS", "COPY", "CPU", "CURSOR_NAME", "DATA", "DATAFILE", 
			"DEALLOCATE", "DEFAULT_AUTH", "DEFINER", "DELAY_KEY_WRITE", "DES_KEY_FILE", 
			"DIRECTORY", "DISABLE", "DISCARD", "DISK", "DO", "DUMPFILE", "DUPLICATE", 
			"DYNAMIC", "ENABLE", "ENCRYPTION", "END", "ENDS", "ENGINE", "ENGINES", 
			"ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT", "EVENTS", "EVERY", "EXCHANGE", 
			"EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", "EXTENT_SIZE", "FAST", "FAULTS", 
			"FIELDS", "FILE_BLOCK_SIZE", "FILTER", "FIRST", "FIXED", "FLUSH", "FOLLOWS", 
			"FOUND", "FULL", "FUNCTION", "GENERAL", "GLOBAL", "GRANTS", "GROUP_REPLICATION", 
			"HANDLER", "HASH", "HELP", "HOST", "HOSTS", "IDENTIFIED", "IGNORE_SERVER_IDS", 
			"IMPORT", "INDEXES", "INITIAL_SIZE", "INPLACE", "INSERT_METHOD", "INSTALL", 
			"INSTANCE", "INVISIBLE", "INVOKER", "IO", "IO_THREAD", "IPC", "ISOLATION", 
			"ISSUER", "JSON", "KEY_BLOCK_SIZE", "LANGUAGE", "LAST", "LEAVES", "LESS", 
			"LEVEL", "LIST", "LOCAL", "LOGFILE", "LOGS", "MASTER", "MASTER_AUTO_POSITION", 
			"MASTER_CONNECT_RETRY", "MASTER_DELAY", "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", 
			"MASTER_LOG_FILE", "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", 
			"MASTER_RETRY_COUNT", "MASTER_SSL", "MASTER_SSL_CA", "MASTER_SSL_CAPATH", 
			"MASTER_SSL_CERT", "MASTER_SSL_CIPHER", "MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", 
			"MASTER_SSL_KEY", "MASTER_TLS_VERSION", "MASTER_USER", "MAX_CONNECTIONS_PER_HOUR", 
			"MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", "MAX_UPDATES_PER_HOUR", 
			"MAX_USER_CONNECTIONS", "MEDIUM", "MEMBER", "MERGE", "MESSAGE_TEXT", 
			"MID", "MIGRATE", "MIN_ROWS", "MODE", "MODIFY", "MUTEX", "MYSQL", "MYSQL_ERRNO", 
			"NAME", "NAMES", "NCHAR", "NEVER", "NEXT", "NO", "NODEGROUP", "NONE", 
			"OFFLINE", "OFFSET", "OF", "OJ", "OLD_PASSWORD", "ONE", "ONLINE", "ONLY", 
			"OPEN", "OPTIMIZER_COSTS", "OPTIONS", "OWNER", "PACK_KEYS", "PAGE", "PARSER", 
			"PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", "PHASE", "PLUGIN", 
			"PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PREPARE", "PRESERVE", "PREV", 
			"PROCESSLIST", "PROFILE", "PROFILES", "PROXY", "QUERY", "QUICK", "REBUILD", 
			"RECOVER", "REDO_BUFFER_SIZE", "REDUNDANT", "RELAY", "RELAY_LOG_FILE", 
			"RELAY_LOG_POS", "RELAYLOG", "REMOVE", "REORGANIZE", "REPAIR", "REPLICATE_DO_DB", 
			"REPLICATE_DO_TABLE", "REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", 
			"REPLICATE_REWRITE_DB", "REPLICATE_WILD_DO_TABLE", "REPLICATE_WILD_IGNORE_TABLE", 
			"REPLICATION", "RESET", "RESUME", "RETURNED_SQLSTATE", "RETURNS", "ROLE", 
			"ROLLBACK", "ROLLUP", "ROTATE", "ROW", "ROWS", "ROW_FORMAT", "SAVEPOINT", 
			"SCHEDULE", "SECURITY", "SERVER", "SESSION", "SHARE", "SHARED", "SIGNED", 
			"SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET", "SOME", "SONAME", "SOUNDS", 
			"SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", "SQL_BEFORE_GTIDS", 
			"SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", "SQL_THREAD", "START", 
			"STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", 
			"STATUS", "STOP", "STORAGE", "STORED", "STRING", "SUBCLASS_ORIGIN", "SUBJECT", 
			"SUBPARTITION", "SUBPARTITIONS", "SUSPEND", "SWAPS", "SWITCHES", "TABLE_NAME", 
			"TABLESPACE", "TEMPORARY", "TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", 
			"TRANSACTIONAL", "TRIGGERS", "TRUNCATE", "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", 
			"UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", 
			"VALIDATION", "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", 
			"WARNINGS", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", "XML", "EUR", 
			"USA", "JIS", "ISO", "INTERNAL", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", 
			"WEEK", "SECOND", "MICROSECOND", "TABLES", "ROUTINE", "EXECUTE", "FILE", 
			"PROCESS", "RELOAD", "SHUTDOWN", "SUPER", "PRIVILEGES", "APPLICATION_PASSWORD_ADMIN", 
			"AUDIT_ADMIN", "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", 
			"CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", "FIREWALL_ADMIN", 
			"FIREWALL_USER", "GROUP_REPLICATION_ADMIN", "INNODB_REDO_LOG_ARCHIVE", 
			"NDB_STORED_USER", "PERSIST_RO_VARIABLES_ADMIN", "REPLICATION_APPLIER", 
			"REPLICATION_SLAVE_ADMIN", "RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", 
			"ROLE_ADMIN", "SESSION_VARIABLES_ADMIN", "SET_USER_ID", "SHOW_ROUTINE", 
			"SYSTEM_VARIABLES_ADMIN", "TABLE_ENCRYPTION_ADMIN", "VERSION_TOKEN_ADMIN", 
			"XA_RECOVER_ADMIN", "ARMSCII8", "ASCII", "BIG5", "CP1250", "CP1251", 
			"CP1256", "CP1257", "CP850", "CP852", "CP866", "CP932", "DEC8", "EUCJPMS", 
			"EUCKR", "GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", "HP8", "KEYBCS2", 
			"KOI8R", "KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", "MACCE", "MACROMAN", 
			"SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", "UTF16LE", "UTF32", 
			"UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", "BLACKHOLE", "CSV", "FEDERATED", 
			"INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", "NDBCLUSTER", "PERFORMANCE_SCHEMA", 
			"TOKUDB", "REPEATABLE", "COMMITTED", "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", 
			"GEOMCOLLECTION", "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", 
			"MULTIPOLYGON", "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", 
			"AES_DECRYPT", "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", 
			"ASWKT", "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", 
			"ASYMMETRIC_SIGN", "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", 
			"BIN", "BIT_COUNT", "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", 
			"CENTROID", "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", 
			"COLLATION", "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", 
			"CONVERT_TZ", "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", 
			"CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", 
			"DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", 
			"DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", 
			"ENCRYPT", "ENDPOINT", "ENVELOPE", "EQUALS", "EXP", "EXPORT_SET", "EXTERIORRING", 
			"EXTRACTVALUE", "FIELD", "FIND_IN_SET", "FLOOR", "FORMAT", "FOUND_ROWS", 
			"FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", "GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", 
			"GEOMETRYCOLLECTIONFROMTEXT", "GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", 
			"GEOMETRYFROMWKB", "GEOMETRYN", "GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", 
			"GET_FORMAT", "GET_LOCK", "GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT", 
			"HEX", "IFNULL", "INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA", 
			"INSTR", "INTERIORRINGN", "INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", 
			"ISSIMPLE", "IS_FREE_LOCK", "IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", 
			"IS_IPV6", "IS_USED_LOCK", "LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", 
			"LINEFROMTEXT", "LINEFROMWKB", "LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", 
			"LN", "LOAD_FILE", "LOCATE", "LOG", "LOG10", "LOG2", "LOWER", "LPAD", 
			"LTRIM", "MAKEDATE", "MAKETIME", "MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", 
			"MBRDISJOINT", "MBREQUAL", "MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", 
			"MBRWITHIN", "MD5", "MLINEFROMTEXT", "MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", 
			"MPOINTFROMWKB", "MPOLYFROMTEXT", "MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", 
			"MULTILINESTRINGFROMWKB", "MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", 
			"MULTIPOLYGONFROMTEXT", "MULTIPOLYGONFROMWKB", "NAME_CONST", "NULLIF", 
			"NUMGEOMETRIES", "NUMINTERIORRINGS", "NUMPOINTS", "OCT", "OCTET_LENGTH", 
			"ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", "PI", "POINTFROMTEXT", 
			"POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", "POLYGONFROMTEXT", 
			"POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", "RAND", "RANDOM_BYTES", 
			"RELEASE_LOCK", "REVERSE", "ROUND", "ROW_COUNT", "RPAD", "RTRIM", "SEC_TO_TIME", 
			"SESSION_USER", "SHA", "SHA1", "SHA2", "SCHEMA_NAME", "SIGN", "SIN", 
			"SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", "SQRT", "SRID", "STARTPOINT", 
			"STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", "ST_ASTEXT", "ST_ASWKB", 
			"ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", "ST_CROSSES", 
			"ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE", "ST_ENDPOINT", 
			"ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", 
			"ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", 
			"ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", 
			"ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", 
			"ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", 
			"ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", 
			"ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", 
			"ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", 
			"ST_POINTN", "ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", 
			"ST_POLYGONFROMWKB", "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", 
			"ST_TOUCHES", "ST_UNION", "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", 
			"SUBTIME", "SYSTEM_USER", "TAN", "TIMEDIFF", "TIMESTAMPADD", "TIMESTAMPDIFF", 
			"TIME_FORMAT", "TIME_TO_SEC", "TOUCHES", "TO_BASE64", "TO_DAYS", "TO_SECONDS", 
			"UCASE", "UNCOMPRESS", "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", 
			"UPDATEXML", "UPPER", "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", 
			"VERSION", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", "WEEKDAY", "WEEKOFYEAR", 
			"WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION", "X_FUNCTION", "VAR_ASSIGN", 
			"PLUS_ASSIGN", "MINUS_ASSIGN", "MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 
			"AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STAR", "DIVIDE", "MODULE", 
			"PLUS", "MINUSMINUS", "MINUS", "DIV", "MOD", "EQUAL_SYMBOL", "GREATER_SYMBOL", 
			"LESS_SYMBOL", "EXCLAMATION_SYMBOL", "BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", 
			"BIT_XOR_OP", "DOT", "LR_BRACKET", "RR_BRACKET", "COMMA", "SEMI", "AT_SIGN", 
			"ZERO_DECIMAL", "ONE_DECIMAL", "TWO_DECIMAL", "SINGLE_QUOTE_SYMB", "DOUBLE_QUOTE_SYMB", 
			"REVERSE_QUOTE_SYMB", "COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL", 
			"START_NATIONAL_STRING_LITERAL", "STRING_LITERAL", "DECIMAL_LITERAL", 
			"HEXADECIMAL_LITERAL", "REAL_LITERAL", "NULL_SPEC_LITERAL", "BIT_STRING", 
			"STRING_CHARSET_NAME", "DOT_ID", "ID", "REVERSE_QUOTE_ID", "STRING_USER_NAME", 
			"LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "<INVALID>";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "MySqlParser.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public MySqlParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	public static class RootContext extends ParserRuleContext {
		public TerminalNode EOF() { return getToken(MySqlParser.EOF, 0); }
		public SqlStatementsContext sqlStatements() {
			return getRuleContext(SqlStatementsContext.class,0);
		}
		public TerminalNode MINUSMINUS() { return getToken(MySqlParser.MINUSMINUS, 0); }
		public RootContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_root; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoot(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoot(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoot(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RootContext root() throws RecognitionException {
		RootContext _localctx = new RootContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_root);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(639);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALTER) | (1L << ANALYZE) | (1L << CALL) | (1L << CHANGE) | (1L << CHECK) | (1L << CREATE) | (1L << DELETE) | (1L << DESC) | (1L << DESCRIBE) | (1L << DROP) | (1L << EXPLAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (GET - 64)) | (1L << (GRANT - 64)) | (1L << (INSERT - 64)) | (1L << (KILL - 64)) | (1L << (LOAD - 64)) | (1L << (LOCK - 64)) | (1L << (OPTIMIZE - 64)) | (1L << (PURGE - 64)) | (1L << (RELEASE - 64)) | (1L << (RENAME - 64)) | (1L << (REPLACE - 64)))) != 0) || ((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (RESIGNAL - 129)) | (1L << (REVOKE - 129)) | (1L << (SELECT - 129)) | (1L << (SET - 129)) | (1L << (SHOW - 129)) | (1L << (SIGNAL - 129)) | (1L << (UNLOCK - 129)) | (1L << (UPDATE - 129)) | (1L << (USE - 129)))) != 0) || ((((_la - 282)) & ~0x3f) == 0 && ((1L << (_la - 282)) & ((1L << (BEGIN - 282)) | (1L << (BINLOG - 282)) | (1L << (CACHE - 282)) | (1L << (CHECKSUM - 282)) | (1L << (COMMIT - 282)) | (1L << (DEALLOCATE - 282)) | (1L << (DO - 282)))) != 0) || ((((_la - 364)) & ~0x3f) == 0 && ((1L << (_la - 364)) & ((1L << (FLUSH - 364)) | (1L << (HANDLER - 364)) | (1L << (HELP - 364)) | (1L << (INSTALL - 364)))) != 0) || ((((_la - 477)) & ~0x3f) == 0 && ((1L << (_la - 477)) & ((1L << (PREPARE - 477)) | (1L << (REPAIR - 477)) | (1L << (RESET - 477)) | (1L << (ROLLBACK - 477)) | (1L << (SAVEPOINT - 477)) | (1L << (START - 477)))) != 0) || ((((_la - 546)) & ~0x3f) == 0 && ((1L << (_la - 546)) & ((1L << (STOP - 546)) | (1L << (TRUNCATE - 546)) | (1L << (UNINSTALL - 546)) | (1L << (XA - 546)) | (1L << (EXECUTE - 546)))) != 0) || _la==SHUTDOWN || _la==LR_BRACKET || _la==SEMI) {
				{
				setState(638);
				sqlStatements();
				}
			}

			setState(642);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MINUSMINUS) {
				{
				setState(641);
				match(MINUSMINUS);
				}
			}

			setState(644);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SqlStatementsContext extends ParserRuleContext {
		public List<SqlStatementContext> sqlStatement() {
			return getRuleContexts(SqlStatementContext.class);
		}
		public SqlStatementContext sqlStatement(int i) {
			return getRuleContext(SqlStatementContext.class,i);
		}
		public List<EmptyStatementContext> emptyStatement() {
			return getRuleContexts(EmptyStatementContext.class);
		}
		public EmptyStatementContext emptyStatement(int i) {
			return getRuleContext(EmptyStatementContext.class,i);
		}
		public List<TerminalNode> SEMI() { return getTokens(MySqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(MySqlParser.SEMI, i);
		}
		public List<TerminalNode> MINUSMINUS() { return getTokens(MySqlParser.MINUSMINUS); }
		public TerminalNode MINUSMINUS(int i) {
			return getToken(MySqlParser.MINUSMINUS, i);
		}
		public SqlStatementsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sqlStatements; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlStatements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlStatements(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSqlStatements(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SqlStatementsContext sqlStatements() throws RecognitionException {
		SqlStatementsContext _localctx = new SqlStatementsContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_sqlStatements);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(656);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(654);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALTER:
					case ANALYZE:
					case CALL:
					case CHANGE:
					case CHECK:
					case CREATE:
					case DELETE:
					case DESC:
					case DESCRIBE:
					case DROP:
					case EXPLAIN:
					case GET:
					case GRANT:
					case INSERT:
					case KILL:
					case LOAD:
					case LOCK:
					case OPTIMIZE:
					case PURGE:
					case RELEASE:
					case RENAME:
					case REPLACE:
					case RESIGNAL:
					case REVOKE:
					case SELECT:
					case SET:
					case SHOW:
					case SIGNAL:
					case UNLOCK:
					case UPDATE:
					case USE:
					case BEGIN:
					case BINLOG:
					case CACHE:
					case CHECKSUM:
					case COMMIT:
					case DEALLOCATE:
					case DO:
					case FLUSH:
					case HANDLER:
					case HELP:
					case INSTALL:
					case PREPARE:
					case REPAIR:
					case RESET:
					case ROLLBACK:
					case SAVEPOINT:
					case START:
					case STOP:
					case TRUNCATE:
					case UNINSTALL:
					case XA:
					case EXECUTE:
					case SHUTDOWN:
					case LR_BRACKET:
						{
						setState(646);
						sqlStatement();
						setState(648);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==MINUSMINUS) {
							{
							setState(647);
							match(MINUSMINUS);
							}
						}

						setState(651);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
						case 1:
							{
							setState(650);
							match(SEMI);
							}
							break;
						}
						}
						break;
					case SEMI:
						{
						setState(653);
						emptyStatement();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(658);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			}
			setState(667);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case UNLOCK:
			case UPDATE:
			case USE:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CHECKSUM:
			case COMMIT:
			case DEALLOCATE:
			case DO:
			case FLUSH:
			case HANDLER:
			case HELP:
			case INSTALL:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case START:
			case STOP:
			case TRUNCATE:
			case UNINSTALL:
			case XA:
			case EXECUTE:
			case SHUTDOWN:
			case LR_BRACKET:
				{
				setState(659);
				sqlStatement();
				setState(664);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
				case 1:
					{
					setState(661);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==MINUSMINUS) {
						{
						setState(660);
						match(MINUSMINUS);
						}
					}

					setState(663);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case SEMI:
				{
				setState(666);
				emptyStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SqlStatementContext extends ParserRuleContext {
		public DdlStatementContext ddlStatement() {
			return getRuleContext(DdlStatementContext.class,0);
		}
		public DmlStatementContext dmlStatement() {
			return getRuleContext(DmlStatementContext.class,0);
		}
		public TransactionStatementContext transactionStatement() {
			return getRuleContext(TransactionStatementContext.class,0);
		}
		public ReplicationStatementContext replicationStatement() {
			return getRuleContext(ReplicationStatementContext.class,0);
		}
		public PreparedStatementContext preparedStatement() {
			return getRuleContext(PreparedStatementContext.class,0);
		}
		public AdministrationStatementContext administrationStatement() {
			return getRuleContext(AdministrationStatementContext.class,0);
		}
		public UtilityStatementContext utilityStatement() {
			return getRuleContext(UtilityStatementContext.class,0);
		}
		public SqlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sqlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSqlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SqlStatementContext sqlStatement() throws RecognitionException {
		SqlStatementContext _localctx = new SqlStatementContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_sqlStatement);
		try {
			setState(676);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(669);
				ddlStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(670);
				dmlStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(671);
				transactionStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(672);
				replicationStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(673);
				preparedStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(674);
				administrationStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(675);
				utilityStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EmptyStatementContext extends ParserRuleContext {
		public TerminalNode SEMI() { return getToken(MySqlParser.SEMI, 0); }
		public EmptyStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_emptyStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEmptyStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEmptyStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitEmptyStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EmptyStatementContext emptyStatement() throws RecognitionException {
		EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_emptyStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(678);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DdlStatementContext extends ParserRuleContext {
		public CreateDatabaseContext createDatabase() {
			return getRuleContext(CreateDatabaseContext.class,0);
		}
		public CreateEventContext createEvent() {
			return getRuleContext(CreateEventContext.class,0);
		}
		public CreateIndexContext createIndex() {
			return getRuleContext(CreateIndexContext.class,0);
		}
		public CreateLogfileGroupContext createLogfileGroup() {
			return getRuleContext(CreateLogfileGroupContext.class,0);
		}
		public CreateProcedureContext createProcedure() {
			return getRuleContext(CreateProcedureContext.class,0);
		}
		public CreateFunctionContext createFunction() {
			return getRuleContext(CreateFunctionContext.class,0);
		}
		public CreateServerContext createServer() {
			return getRuleContext(CreateServerContext.class,0);
		}
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public CreateTablespaceInnodbContext createTablespaceInnodb() {
			return getRuleContext(CreateTablespaceInnodbContext.class,0);
		}
		public CreateTablespaceNdbContext createTablespaceNdb() {
			return getRuleContext(CreateTablespaceNdbContext.class,0);
		}
		public CreateTriggerContext createTrigger() {
			return getRuleContext(CreateTriggerContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public AlterDatabaseContext alterDatabase() {
			return getRuleContext(AlterDatabaseContext.class,0);
		}
		public AlterEventContext alterEvent() {
			return getRuleContext(AlterEventContext.class,0);
		}
		public AlterFunctionContext alterFunction() {
			return getRuleContext(AlterFunctionContext.class,0);
		}
		public AlterInstanceContext alterInstance() {
			return getRuleContext(AlterInstanceContext.class,0);
		}
		public AlterLogfileGroupContext alterLogfileGroup() {
			return getRuleContext(AlterLogfileGroupContext.class,0);
		}
		public AlterProcedureContext alterProcedure() {
			return getRuleContext(AlterProcedureContext.class,0);
		}
		public AlterServerContext alterServer() {
			return getRuleContext(AlterServerContext.class,0);
		}
		public AlterTableContext alterTable() {
			return getRuleContext(AlterTableContext.class,0);
		}
		public AlterTablespaceContext alterTablespace() {
			return getRuleContext(AlterTablespaceContext.class,0);
		}
		public AlterViewContext alterView() {
			return getRuleContext(AlterViewContext.class,0);
		}
		public DropDatabaseContext dropDatabase() {
			return getRuleContext(DropDatabaseContext.class,0);
		}
		public DropEventContext dropEvent() {
			return getRuleContext(DropEventContext.class,0);
		}
		public DropIndexContext dropIndex() {
			return getRuleContext(DropIndexContext.class,0);
		}
		public DropLogfileGroupContext dropLogfileGroup() {
			return getRuleContext(DropLogfileGroupContext.class,0);
		}
		public DropProcedureContext dropProcedure() {
			return getRuleContext(DropProcedureContext.class,0);
		}
		public DropFunctionContext dropFunction() {
			return getRuleContext(DropFunctionContext.class,0);
		}
		public DropServerContext dropServer() {
			return getRuleContext(DropServerContext.class,0);
		}
		public DropTableContext dropTable() {
			return getRuleContext(DropTableContext.class,0);
		}
		public DropTablespaceContext dropTablespace() {
			return getRuleContext(DropTablespaceContext.class,0);
		}
		public DropTriggerContext dropTrigger() {
			return getRuleContext(DropTriggerContext.class,0);
		}
		public DropViewContext dropView() {
			return getRuleContext(DropViewContext.class,0);
		}
		public RenameTableContext renameTable() {
			return getRuleContext(RenameTableContext.class,0);
		}
		public TruncateTableContext truncateTable() {
			return getRuleContext(TruncateTableContext.class,0);
		}
		public DdlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ddlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDdlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDdlStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDdlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DdlStatementContext ddlStatement() throws RecognitionException {
		DdlStatementContext _localctx = new DdlStatementContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_ddlStatement);
		try {
			setState(715);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(680);
				createDatabase();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(681);
				createEvent();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(682);
				createIndex();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(683);
				createLogfileGroup();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(684);
				createProcedure();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(685);
				createFunction();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(686);
				createServer();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(687);
				createTable();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(688);
				createTablespaceInnodb();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(689);
				createTablespaceNdb();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(690);
				createTrigger();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(691);
				createView();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(692);
				alterDatabase();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(693);
				alterEvent();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(694);
				alterFunction();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(695);
				alterInstance();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(696);
				alterLogfileGroup();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(697);
				alterProcedure();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(698);
				alterServer();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(699);
				alterTable();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(700);
				alterTablespace();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(701);
				alterView();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(702);
				dropDatabase();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(703);
				dropEvent();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(704);
				dropIndex();
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(705);
				dropLogfileGroup();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(706);
				dropProcedure();
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(707);
				dropFunction();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(708);
				dropServer();
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(709);
				dropTable();
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(710);
				dropTablespace();
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(711);
				dropTrigger();
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(712);
				dropView();
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(713);
				renameTable();
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(714);
				truncateTable();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DmlStatementContext extends ParserRuleContext {
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public InsertStatementContext insertStatement() {
			return getRuleContext(InsertStatementContext.class,0);
		}
		public UpdateStatementContext updateStatement() {
			return getRuleContext(UpdateStatementContext.class,0);
		}
		public DeleteStatementContext deleteStatement() {
			return getRuleContext(DeleteStatementContext.class,0);
		}
		public ReplaceStatementContext replaceStatement() {
			return getRuleContext(ReplaceStatementContext.class,0);
		}
		public CallStatementContext callStatement() {
			return getRuleContext(CallStatementContext.class,0);
		}
		public LoadDataStatementContext loadDataStatement() {
			return getRuleContext(LoadDataStatementContext.class,0);
		}
		public LoadXmlStatementContext loadXmlStatement() {
			return getRuleContext(LoadXmlStatementContext.class,0);
		}
		public DoStatementContext doStatement() {
			return getRuleContext(DoStatementContext.class,0);
		}
		public HandlerStatementContext handlerStatement() {
			return getRuleContext(HandlerStatementContext.class,0);
		}
		public DmlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dmlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDmlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDmlStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDmlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DmlStatementContext dmlStatement() throws RecognitionException {
		DmlStatementContext _localctx = new DmlStatementContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_dmlStatement);
		try {
			setState(727);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(717);
				selectStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(718);
				insertStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(719);
				updateStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(720);
				deleteStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(721);
				replaceStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(722);
				callStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(723);
				loadDataStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(724);
				loadXmlStatement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(725);
				doStatement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(726);
				handlerStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionStatementContext extends ParserRuleContext {
		public StartTransactionContext startTransaction() {
			return getRuleContext(StartTransactionContext.class,0);
		}
		public BeginWorkContext beginWork() {
			return getRuleContext(BeginWorkContext.class,0);
		}
		public CommitWorkContext commitWork() {
			return getRuleContext(CommitWorkContext.class,0);
		}
		public RollbackWorkContext rollbackWork() {
			return getRuleContext(RollbackWorkContext.class,0);
		}
		public SavepointStatementContext savepointStatement() {
			return getRuleContext(SavepointStatementContext.class,0);
		}
		public RollbackStatementContext rollbackStatement() {
			return getRuleContext(RollbackStatementContext.class,0);
		}
		public ReleaseStatementContext releaseStatement() {
			return getRuleContext(ReleaseStatementContext.class,0);
		}
		public LockTablesContext lockTables() {
			return getRuleContext(LockTablesContext.class,0);
		}
		public UnlockTablesContext unlockTables() {
			return getRuleContext(UnlockTablesContext.class,0);
		}
		public TransactionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTransactionStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionStatementContext transactionStatement() throws RecognitionException {
		TransactionStatementContext _localctx = new TransactionStatementContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_transactionStatement);
		try {
			setState(738);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(729);
				startTransaction();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(730);
				beginWork();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(731);
				commitWork();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(732);
				rollbackWork();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(733);
				savepointStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(734);
				rollbackStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(735);
				releaseStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(736);
				lockTables();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(737);
				unlockTables();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplicationStatementContext extends ParserRuleContext {
		public ChangeMasterContext changeMaster() {
			return getRuleContext(ChangeMasterContext.class,0);
		}
		public ChangeReplicationFilterContext changeReplicationFilter() {
			return getRuleContext(ChangeReplicationFilterContext.class,0);
		}
		public PurgeBinaryLogsContext purgeBinaryLogs() {
			return getRuleContext(PurgeBinaryLogsContext.class,0);
		}
		public ResetMasterContext resetMaster() {
			return getRuleContext(ResetMasterContext.class,0);
		}
		public ResetSlaveContext resetSlave() {
			return getRuleContext(ResetSlaveContext.class,0);
		}
		public StartSlaveContext startSlave() {
			return getRuleContext(StartSlaveContext.class,0);
		}
		public StopSlaveContext stopSlave() {
			return getRuleContext(StopSlaveContext.class,0);
		}
		public StartGroupReplicationContext startGroupReplication() {
			return getRuleContext(StartGroupReplicationContext.class,0);
		}
		public StopGroupReplicationContext stopGroupReplication() {
			return getRuleContext(StopGroupReplicationContext.class,0);
		}
		public XaStartTransactionContext xaStartTransaction() {
			return getRuleContext(XaStartTransactionContext.class,0);
		}
		public XaEndTransactionContext xaEndTransaction() {
			return getRuleContext(XaEndTransactionContext.class,0);
		}
		public XaPrepareStatementContext xaPrepareStatement() {
			return getRuleContext(XaPrepareStatementContext.class,0);
		}
		public XaCommitWorkContext xaCommitWork() {
			return getRuleContext(XaCommitWorkContext.class,0);
		}
		public XaRollbackWorkContext xaRollbackWork() {
			return getRuleContext(XaRollbackWorkContext.class,0);
		}
		public XaRecoverWorkContext xaRecoverWork() {
			return getRuleContext(XaRecoverWorkContext.class,0);
		}
		public ReplicationStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replicationStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReplicationStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReplicationStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReplicationStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplicationStatementContext replicationStatement() throws RecognitionException {
		ReplicationStatementContext _localctx = new ReplicationStatementContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_replicationStatement);
		try {
			setState(755);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(740);
				changeMaster();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(741);
				changeReplicationFilter();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(742);
				purgeBinaryLogs();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(743);
				resetMaster();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(744);
				resetSlave();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(745);
				startSlave();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(746);
				stopSlave();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(747);
				startGroupReplication();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(748);
				stopGroupReplication();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(749);
				xaStartTransaction();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(750);
				xaEndTransaction();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(751);
				xaPrepareStatement();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(752);
				xaCommitWork();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(753);
				xaRollbackWork();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(754);
				xaRecoverWork();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PreparedStatementContext extends ParserRuleContext {
		public PrepareStatementContext prepareStatement() {
			return getRuleContext(PrepareStatementContext.class,0);
		}
		public ExecuteStatementContext executeStatement() {
			return getRuleContext(ExecuteStatementContext.class,0);
		}
		public DeallocatePrepareContext deallocatePrepare() {
			return getRuleContext(DeallocatePrepareContext.class,0);
		}
		public PreparedStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_preparedStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPreparedStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPreparedStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPreparedStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PreparedStatementContext preparedStatement() throws RecognitionException {
		PreparedStatementContext _localctx = new PreparedStatementContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_preparedStatement);
		try {
			setState(760);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PREPARE:
				enterOuterAlt(_localctx, 1);
				{
				setState(757);
				prepareStatement();
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 2);
				{
				setState(758);
				executeStatement();
				}
				break;
			case DROP:
			case DEALLOCATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(759);
				deallocatePrepare();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CompoundStatementContext extends ParserRuleContext {
		public BlockStatementContext blockStatement() {
			return getRuleContext(BlockStatementContext.class,0);
		}
		public CaseStatementContext caseStatement() {
			return getRuleContext(CaseStatementContext.class,0);
		}
		public IfStatementContext ifStatement() {
			return getRuleContext(IfStatementContext.class,0);
		}
		public LeaveStatementContext leaveStatement() {
			return getRuleContext(LeaveStatementContext.class,0);
		}
		public LoopStatementContext loopStatement() {
			return getRuleContext(LoopStatementContext.class,0);
		}
		public RepeatStatementContext repeatStatement() {
			return getRuleContext(RepeatStatementContext.class,0);
		}
		public WhileStatementContext whileStatement() {
			return getRuleContext(WhileStatementContext.class,0);
		}
		public IterateStatementContext iterateStatement() {
			return getRuleContext(IterateStatementContext.class,0);
		}
		public ReturnStatementContext returnStatement() {
			return getRuleContext(ReturnStatementContext.class,0);
		}
		public CursorStatementContext cursorStatement() {
			return getRuleContext(CursorStatementContext.class,0);
		}
		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_compoundStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCompoundStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCompoundStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCompoundStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CompoundStatementContext compoundStatement() throws RecognitionException {
		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_compoundStatement);
		try {
			setState(772);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(762);
				blockStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(763);
				caseStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(764);
				ifStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(765);
				leaveStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(766);
				loopStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(767);
				repeatStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(768);
				whileStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(769);
				iterateStatement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(770);
				returnStatement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(771);
				cursorStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AdministrationStatementContext extends ParserRuleContext {
		public AlterUserContext alterUser() {
			return getRuleContext(AlterUserContext.class,0);
		}
		public CreateUserContext createUser() {
			return getRuleContext(CreateUserContext.class,0);
		}
		public DropUserContext dropUser() {
			return getRuleContext(DropUserContext.class,0);
		}
		public GrantStatementContext grantStatement() {
			return getRuleContext(GrantStatementContext.class,0);
		}
		public GrantProxyContext grantProxy() {
			return getRuleContext(GrantProxyContext.class,0);
		}
		public RenameUserContext renameUser() {
			return getRuleContext(RenameUserContext.class,0);
		}
		public RevokeStatementContext revokeStatement() {
			return getRuleContext(RevokeStatementContext.class,0);
		}
		public RevokeProxyContext revokeProxy() {
			return getRuleContext(RevokeProxyContext.class,0);
		}
		public AnalyzeTableContext analyzeTable() {
			return getRuleContext(AnalyzeTableContext.class,0);
		}
		public CheckTableContext checkTable() {
			return getRuleContext(CheckTableContext.class,0);
		}
		public ChecksumTableContext checksumTable() {
			return getRuleContext(ChecksumTableContext.class,0);
		}
		public OptimizeTableContext optimizeTable() {
			return getRuleContext(OptimizeTableContext.class,0);
		}
		public RepairTableContext repairTable() {
			return getRuleContext(RepairTableContext.class,0);
		}
		public CreateUdfunctionContext createUdfunction() {
			return getRuleContext(CreateUdfunctionContext.class,0);
		}
		public InstallPluginContext installPlugin() {
			return getRuleContext(InstallPluginContext.class,0);
		}
		public UninstallPluginContext uninstallPlugin() {
			return getRuleContext(UninstallPluginContext.class,0);
		}
		public SetStatementContext setStatement() {
			return getRuleContext(SetStatementContext.class,0);
		}
		public ShowStatementContext showStatement() {
			return getRuleContext(ShowStatementContext.class,0);
		}
		public BinlogStatementContext binlogStatement() {
			return getRuleContext(BinlogStatementContext.class,0);
		}
		public CacheIndexStatementContext cacheIndexStatement() {
			return getRuleContext(CacheIndexStatementContext.class,0);
		}
		public FlushStatementContext flushStatement() {
			return getRuleContext(FlushStatementContext.class,0);
		}
		public KillStatementContext killStatement() {
			return getRuleContext(KillStatementContext.class,0);
		}
		public LoadIndexIntoCacheContext loadIndexIntoCache() {
			return getRuleContext(LoadIndexIntoCacheContext.class,0);
		}
		public ResetStatementContext resetStatement() {
			return getRuleContext(ResetStatementContext.class,0);
		}
		public ShutdownStatementContext shutdownStatement() {
			return getRuleContext(ShutdownStatementContext.class,0);
		}
		public AdministrationStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_administrationStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAdministrationStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAdministrationStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAdministrationStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AdministrationStatementContext administrationStatement() throws RecognitionException {
		AdministrationStatementContext _localctx = new AdministrationStatementContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_administrationStatement);
		try {
			setState(799);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(774);
				alterUser();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(775);
				createUser();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(776);
				dropUser();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(777);
				grantStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(778);
				grantProxy();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(779);
				renameUser();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(780);
				revokeStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(781);
				revokeProxy();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(782);
				analyzeTable();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(783);
				checkTable();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(784);
				checksumTable();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(785);
				optimizeTable();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(786);
				repairTable();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(787);
				createUdfunction();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(788);
				installPlugin();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(789);
				uninstallPlugin();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(790);
				setStatement();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(791);
				showStatement();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(792);
				binlogStatement();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(793);
				cacheIndexStatement();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(794);
				flushStatement();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(795);
				killStatement();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(796);
				loadIndexIntoCache();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(797);
				resetStatement();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(798);
				shutdownStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UtilityStatementContext extends ParserRuleContext {
		public SimpleDescribeStatementContext simpleDescribeStatement() {
			return getRuleContext(SimpleDescribeStatementContext.class,0);
		}
		public FullDescribeStatementContext fullDescribeStatement() {
			return getRuleContext(FullDescribeStatementContext.class,0);
		}
		public HelpStatementContext helpStatement() {
			return getRuleContext(HelpStatementContext.class,0);
		}
		public UseStatementContext useStatement() {
			return getRuleContext(UseStatementContext.class,0);
		}
		public SignalStatementContext signalStatement() {
			return getRuleContext(SignalStatementContext.class,0);
		}
		public ResignalStatementContext resignalStatement() {
			return getRuleContext(ResignalStatementContext.class,0);
		}
		public DiagnosticsStatementContext diagnosticsStatement() {
			return getRuleContext(DiagnosticsStatementContext.class,0);
		}
		public UtilityStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_utilityStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUtilityStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUtilityStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUtilityStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UtilityStatementContext utilityStatement() throws RecognitionException {
		UtilityStatementContext _localctx = new UtilityStatementContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_utilityStatement);
		try {
			setState(808);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(801);
				simpleDescribeStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(802);
				fullDescribeStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(803);
				helpStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(804);
				useStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(805);
				signalStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(806);
				resignalStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(807);
				diagnosticsStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseContext extends ParserRuleContext {
		public Token dbFormat;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List<CreateDatabaseOptionContext> createDatabaseOption() {
			return getRuleContexts(CreateDatabaseOptionContext.class);
		}
		public CreateDatabaseOptionContext createDatabaseOption(int i) {
			return getRuleContext(CreateDatabaseOptionContext.class,i);
		}
		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDatabase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseContext createDatabase() throws RecognitionException {
		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_createDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(810);
			match(CREATE);
			setState(811);
			((CreateDatabaseContext)_localctx).dbFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
				((CreateDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(813);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(812);
				ifNotExists();
				}
			}

			setState(815);
			uid();
			setState(819);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CHARACTER) | (1L << COLLATE) | (1L << DEFAULT))) != 0) || _la==CHARSET) {
				{
				{
				setState(816);
				createDatabaseOption();
				}
				}
				setState(821);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateEventContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List<TerminalNode> ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public EnableTypeContext enableType() {
			return getRuleContext(EnableTypeContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public CreateEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateEvent(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateEventContext createEvent() throws RecognitionException {
		CreateEventContext _localctx = new CreateEventContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_createEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(822);
			match(CREATE);
			setState(824);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(823);
				ownerStatement();
				}
			}

			setState(826);
			match(EVENT);
			setState(828);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(827);
				ifNotExists();
				}
			}

			setState(830);
			fullId();
			setState(831);
			match(ON);
			setState(832);
			match(SCHEDULE);
			setState(833);
			scheduleExpression();
			setState(840);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(834);
				match(ON);
				setState(835);
				match(COMPLETION);
				setState(837);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(836);
					match(NOT);
					}
				}

				setState(839);
				match(PRESERVE);
				}
			}

			setState(843);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISABLE || _la==ENABLE) {
				{
				setState(842);
				enableType();
				}
			}

			setState(847);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(845);
				match(COMMENT);
				setState(846);
				match(STRING_LITERAL);
				}
			}

			setState(849);
			match(DO);
			setState(850);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexContext extends ParserRuleContext {
		public Token intimeAction;
		public Token indexCategory;
		public Token algType;
		public Token lockType;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List<TerminalNode> ALGORITHM() { return getTokens(MySqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(MySqlParser.ALGORITHM, i);
		}
		public List<TerminalNode> LOCK() { return getTokens(MySqlParser.LOCK); }
		public TerminalNode LOCK(int i) {
			return getToken(MySqlParser.LOCK, i);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public List<TerminalNode> DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public List<TerminalNode> INPLACE() { return getTokens(MySqlParser.INPLACE); }
		public TerminalNode INPLACE(int i) {
			return getToken(MySqlParser.INPLACE, i);
		}
		public List<TerminalNode> COPY() { return getTokens(MySqlParser.COPY); }
		public TerminalNode COPY(int i) {
			return getToken(MySqlParser.COPY, i);
		}
		public List<TerminalNode> NONE() { return getTokens(MySqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(MySqlParser.NONE, i);
		}
		public List<TerminalNode> SHARED() { return getTokens(MySqlParser.SHARED); }
		public TerminalNode SHARED(int i) {
			return getToken(MySqlParser.SHARED, i);
		}
		public List<TerminalNode> EXCLUSIVE() { return getTokens(MySqlParser.EXCLUSIVE); }
		public TerminalNode EXCLUSIVE(int i) {
			return getToken(MySqlParser.EXCLUSIVE, i);
		}
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndex; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateIndexContext createIndex() throws RecognitionException {
		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_createIndex);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(852);
			match(CREATE);
			setState(854);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OFFLINE || _la==ONLINE) {
				{
				setState(853);
				((CreateIndexContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((CreateIndexContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(857);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) {
				{
				setState(856);
				((CreateIndexContext)_localctx).indexCategory = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) ) {
					((CreateIndexContext)_localctx).indexCategory = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(859);
			match(INDEX);
			setState(860);
			uid();
			setState(862);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(861);
				indexType();
				}
			}

			setState(864);
			match(ON);
			setState(865);
			tableName();
			setState(866);
			indexColumnNames();
			setState(870);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
				{
				{
				setState(867);
				indexOption();
				}
				}
				setState(872);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(885);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,33,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(883);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALGORITHM:
						{
						setState(873);
						match(ALGORITHM);
						setState(875);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(874);
							match(EQUAL_SYMBOL);
							}
						}

						setState(877);
						((CreateIndexContext)_localctx).algType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE) ) {
							((CreateIndexContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case LOCK:
						{
						setState(878);
						match(LOCK);
						setState(880);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(879);
							match(EQUAL_SYMBOL);
							}
						}

						setState(882);
						((CreateIndexContext)_localctx).lockType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
							((CreateIndexContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(887);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,33,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLogfileGroupContext extends ParserRuleContext {
		public Token undoFile;
		public FileSizeLiteralContext initSize;
		public FileSizeLiteralContext undoSize;
		public FileSizeLiteralContext redoSize;
		public Token comment;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySqlParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySqlParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List<FileSizeLiteralContext> fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public CreateLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateLogfileGroup(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateLogfileGroupContext createLogfileGroup() throws RecognitionException {
		CreateLogfileGroupContext _localctx = new CreateLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_createLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(888);
			match(CREATE);
			setState(889);
			match(LOGFILE);
			setState(890);
			match(GROUP);
			setState(891);
			uid();
			setState(892);
			match(ADD);
			setState(893);
			match(UNDOFILE);
			setState(894);
			((CreateLogfileGroupContext)_localctx).undoFile = match(STRING_LITERAL);
			setState(900);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(895);
				match(INITIAL_SIZE);
				setState(897);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(896);
					match(EQUAL_SYMBOL);
					}
				}

				setState(899);
				((CreateLogfileGroupContext)_localctx).initSize = fileSizeLiteral();
				}
			}

			setState(907);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO_BUFFER_SIZE) {
				{
				setState(902);
				match(UNDO_BUFFER_SIZE);
				setState(904);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(903);
					match(EQUAL_SYMBOL);
					}
				}

				setState(906);
				((CreateLogfileGroupContext)_localctx).undoSize = fileSizeLiteral();
				}
			}

			setState(914);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REDO_BUFFER_SIZE) {
				{
				setState(909);
				match(REDO_BUFFER_SIZE);
				setState(911);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(910);
					match(EQUAL_SYMBOL);
					}
				}

				setState(913);
				((CreateLogfileGroupContext)_localctx).redoSize = fileSizeLiteral();
				}
			}

			setState(921);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(916);
				match(NODEGROUP);
				setState(918);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(917);
					match(EQUAL_SYMBOL);
					}
				}

				setState(920);
				uid();
				}
			}

			setState(924);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(923);
				match(WAIT);
				}
			}

			setState(931);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(926);
				match(COMMENT);
				setState(928);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(927);
					match(EQUAL_SYMBOL);
					}
				}

				setState(930);
				((CreateLogfileGroupContext)_localctx).comment = match(STRING_LITERAL);
				}
			}

			setState(933);
			match(ENGINE);
			setState(935);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(934);
				match(EQUAL_SYMBOL);
				}
			}

			setState(937);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateProcedureContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List<ProcedureParameterContext> procedureParameter() {
			return getRuleContexts(ProcedureParameterContext.class);
		}
		public ProcedureParameterContext procedureParameter(int i) {
			return getRuleContext(ProcedureParameterContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<RoutineOptionContext> routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateProcedure(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateProcedureContext createProcedure() throws RecognitionException {
		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_createProcedure);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(939);
			match(CREATE);
			setState(941);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(940);
				ownerStatement();
				}
			}

			setState(943);
			match(PROCEDURE);
			setState(944);
			fullId();
			setState(945);
			match(LR_BRACKET);
			setState(947);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (IN - 71)) | (1L << (INOUT - 71)) | (1L << (LEFT - 71)) | (1L << (NUMBER - 71)) | (1L << (OUT - 71)) | (1L << (RIGHT - 71)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(946);
				procedureParameter();
				}
			}

			setState(953);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(949);
				match(COMMA);
				setState(950);
				procedureParameter();
				}
				}
				setState(955);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(956);
			match(RR_BRACKET);
			setState(960);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,49,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(957);
					routineOption();
					}
					} 
				}
				setState(962);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,49,_ctx);
			}
			setState(963);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateFunctionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public ReturnStatementContext returnStatement() {
			return getRuleContext(ReturnStatementContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List<FunctionParameterContext> functionParameter() {
			return getRuleContexts(FunctionParameterContext.class);
		}
		public FunctionParameterContext functionParameter(int i) {
			return getRuleContext(FunctionParameterContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<RoutineOptionContext> routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateFunction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateFunctionContext createFunction() throws RecognitionException {
		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_createFunction);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(965);
			match(CREATE);
			setState(967);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(966);
				ownerStatement();
				}
			}

			setState(969);
			match(FUNCTION);
			setState(970);
			fullId();
			setState(971);
			match(LR_BRACKET);
			setState(973);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(972);
				functionParameter();
				}
			}

			setState(979);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(975);
				match(COMMA);
				setState(976);
				functionParameter();
				}
				}
				setState(981);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(982);
			match(RR_BRACKET);
			setState(983);
			match(RETURNS);
			setState(984);
			dataType();
			setState(988);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,53,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(985);
					routineOption();
					}
					} 
				}
				setState(990);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,53,_ctx);
			}
			setState(993);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case CURRENT:
			case DATABASE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DIAGNOSTICS:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LEFT:
			case LOAD:
			case LOCK:
			case NUMBER:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case RIGHT:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case STACKED:
			case UNLOCK:
			case UPDATE:
			case USE:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case LR_BRACKET:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				{
				setState(991);
				routineBody();
				}
				break;
			case RETURN:
				{
				setState(992);
				returnStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateServerContext extends ParserRuleContext {
		public Token wrapperName;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(MySqlParser.WRAPPER, 0); }
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ServerOptionContext> serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode MYSQL() { return getToken(MySqlParser.MYSQL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateServer(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateServerContext createServer() throws RecognitionException {
		CreateServerContext _localctx = new CreateServerContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_createServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(995);
			match(CREATE);
			setState(996);
			match(SERVER);
			setState(997);
			uid();
			setState(998);
			match(FOREIGN);
			setState(999);
			match(DATA);
			setState(1000);
			match(WRAPPER);
			setState(1001);
			((CreateServerContext)_localctx).wrapperName = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==MYSQL || _la==STRING_LITERAL) ) {
				((CreateServerContext)_localctx).wrapperName = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1002);
			match(OPTIONS);
			setState(1003);
			match(LR_BRACKET);
			setState(1004);
			serverOption();
			setState(1009);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1005);
				match(COMMA);
				setState(1006);
				serverOption();
				}
				}
				setState(1011);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1012);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableContext extends ParserRuleContext {
		public CreateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTable; }
	 
		public CreateTableContext() { }
		public void copyFrom(CreateTableContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CopyCreateTableContext extends CreateTableContext {
		public TableNameContext parenthesisTable;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public List<TableNameContext> tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CopyCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCopyCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCopyCreateTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCopyCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ColumnCreateTableContext extends CreateTableContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public CreateDefinitionsContext createDefinitions() {
			return getRuleContext(CreateDefinitionsContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List<TableOptionContext> tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ColumnCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnCreateTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitColumnCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class QueryCreateTableContext extends CreateTableContext {
		public Token keyViolate;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateDefinitionsContext createDefinitions() {
			return getRuleContext(CreateDefinitionsContext.class,0);
		}
		public List<TableOptionContext> tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public QueryCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryCreateTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitQueryCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableContext createTable() throws RecognitionException {
		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_createTable);
		int _la;
		try {
			int _alt;
			setState(1092);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
			case 1:
				_localctx = new CopyCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1014);
				match(CREATE);
				setState(1016);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1015);
					match(TEMPORARY);
					}
				}

				setState(1018);
				match(TABLE);
				setState(1020);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(1019);
					ifNotExists();
					}
				}

				setState(1022);
				tableName();
				setState(1030);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LIKE:
					{
					setState(1023);
					match(LIKE);
					setState(1024);
					tableName();
					}
					break;
				case LR_BRACKET:
					{
					setState(1025);
					match(LR_BRACKET);
					setState(1026);
					match(LIKE);
					setState(1027);
					((CopyCreateTableContext)_localctx).parenthesisTable = tableName();
					setState(1028);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				_localctx = new QueryCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1032);
				match(CREATE);
				setState(1034);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1033);
					match(TEMPORARY);
					}
				}

				setState(1036);
				match(TABLE);
				setState(1038);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(1037);
					ifNotExists();
					}
				}

				setState(1040);
				tableName();
				setState(1042);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
				case 1:
					{
					setState(1041);
					createDefinitions();
					}
					break;
				}
				setState(1054);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 22)) & ~0x3f) == 0 && ((1L << (_la - 22)) & ((1L << (CHARACTER - 22)) | (1L << (COLLATE - 22)) | (1L << (DEFAULT - 22)) | (1L << (INDEX - 22)))) != 0) || _la==UNION || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (COMMENT - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONNECTION - 280)) | (1L << (DATA - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (ENGINE - 280)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (INSERT_METHOD - 384)) | (1L << (KEY_BLOCK_SIZE - 384)) | (1L << (MAX_ROWS - 384)) | (1L << (MIN_ROWS - 384)))) != 0) || ((((_la - 464)) & ~0x3f) == 0 && ((1L << (_la - 464)) & ((1L << (PACK_KEYS - 464)) | (1L << (PASSWORD - 464)) | (1L << (ROW_FORMAT - 464)))) != 0) || ((((_la - 542)) & ~0x3f) == 0 && ((1L << (_la - 542)) & ((1L << (STATS_AUTO_RECALC - 542)) | (1L << (STATS_PERSISTENT - 542)) | (1L << (STATS_SAMPLE_PAGES - 542)) | (1L << (STORAGE - 542)) | (1L << (TABLESPACE - 542)))) != 0) || _la==CHARSET) {
					{
					setState(1044);
					tableOption();
					setState(1051);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (((((_la - 22)) & ~0x3f) == 0 && ((1L << (_la - 22)) & ((1L << (CHARACTER - 22)) | (1L << (COLLATE - 22)) | (1L << (DEFAULT - 22)) | (1L << (INDEX - 22)))) != 0) || _la==UNION || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (COMMENT - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONNECTION - 280)) | (1L << (DATA - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (ENGINE - 280)))) != 0) || ((((_la - 384)) & ~0x3f) == 0 && ((1L << (_la - 384)) & ((1L << (INSERT_METHOD - 384)) | (1L << (KEY_BLOCK_SIZE - 384)) | (1L << (MAX_ROWS - 384)) | (1L << (MIN_ROWS - 384)))) != 0) || ((((_la - 464)) & ~0x3f) == 0 && ((1L << (_la - 464)) & ((1L << (PACK_KEYS - 464)) | (1L << (PASSWORD - 464)) | (1L << (ROW_FORMAT - 464)))) != 0) || ((((_la - 542)) & ~0x3f) == 0 && ((1L << (_la - 542)) & ((1L << (STATS_AUTO_RECALC - 542)) | (1L << (STATS_PERSISTENT - 542)) | (1L << (STATS_SAMPLE_PAGES - 542)) | (1L << (STORAGE - 542)) | (1L << (TABLESPACE - 542)))) != 0) || _la==CHARSET || _la==COMMA) {
						{
						{
						setState(1046);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(1045);
							match(COMMA);
							}
						}

						setState(1048);
						tableOption();
						}
						}
						setState(1053);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(1057);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(1056);
					partitionDefinitions();
					}
				}

				setState(1060);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IGNORE || _la==REPLACE) {
					{
					setState(1059);
					((QueryCreateTableContext)_localctx).keyViolate = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==IGNORE || _la==REPLACE) ) {
						((QueryCreateTableContext)_localctx).keyViolate = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1063);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(1062);
					match(AS);
					}
				}

				setState(1065);
				selectStatement();
				}
				break;
			case 3:
				_localctx = new ColumnCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1067);
				match(CREATE);
				setState(1069);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1068);
					match(TEMPORARY);
					}
				}

				setState(1071);
				match(TABLE);
				setState(1073);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(1072);
					ifNotExists();
					}
				}

				setState(1075);
				tableName();
				setState(1076);
				createDefinitions();
				setState(1087);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
				case 1:
					{
					setState(1077);
					tableOption();
					setState(1084);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,71,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1079);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(1078);
								match(COMMA);
								}
							}

							setState(1081);
							tableOption();
							}
							} 
						}
						setState(1086);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,71,_ctx);
					}
					}
					break;
				}
				setState(1090);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(1089);
					partitionDefinitions();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceInnodbContext extends ParserRuleContext {
		public Token datafile;
		public FileSizeLiteralContext fileBlockSize;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySqlParser.FILE_BLOCK_SIZE, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public CreateTablespaceInnodbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceInnodb; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTablespaceInnodb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTablespaceInnodb(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateTablespaceInnodb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceInnodbContext createTablespaceInnodb() throws RecognitionException {
		CreateTablespaceInnodbContext _localctx = new CreateTablespaceInnodbContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_createTablespaceInnodb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1094);
			match(CREATE);
			setState(1095);
			match(TABLESPACE);
			setState(1096);
			uid();
			setState(1097);
			match(ADD);
			setState(1098);
			match(DATAFILE);
			setState(1099);
			((CreateTablespaceInnodbContext)_localctx).datafile = match(STRING_LITERAL);
			setState(1103);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FILE_BLOCK_SIZE) {
				{
				setState(1100);
				match(FILE_BLOCK_SIZE);
				setState(1101);
				match(EQUAL_SYMBOL);
				setState(1102);
				((CreateTablespaceInnodbContext)_localctx).fileBlockSize = fileSizeLiteral();
				}
			}

			setState(1110);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(1105);
				match(ENGINE);
				setState(1107);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1106);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1109);
				engineName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceNdbContext extends ParserRuleContext {
		public Token datafile;
		public FileSizeLiteralContext extentSize;
		public FileSizeLiteralContext initialSize;
		public FileSizeLiteralContext autoextendSize;
		public FileSizeLiteralContext maxSize;
		public Token comment;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode EXTENT_SIZE() { return getToken(MySqlParser.EXTENT_SIZE, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySqlParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySqlParser.MAX_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List<FileSizeLiteralContext> fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public CreateTablespaceNdbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceNdb; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTablespaceNdb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTablespaceNdb(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateTablespaceNdb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceNdbContext createTablespaceNdb() throws RecognitionException {
		CreateTablespaceNdbContext _localctx = new CreateTablespaceNdbContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_createTablespaceNdb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1112);
			match(CREATE);
			setState(1113);
			match(TABLESPACE);
			setState(1114);
			uid();
			setState(1115);
			match(ADD);
			setState(1116);
			match(DATAFILE);
			setState(1117);
			((CreateTablespaceNdbContext)_localctx).datafile = match(STRING_LITERAL);
			setState(1118);
			match(USE);
			setState(1119);
			match(LOGFILE);
			setState(1120);
			match(GROUP);
			setState(1121);
			uid();
			setState(1127);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENT_SIZE) {
				{
				setState(1122);
				match(EXTENT_SIZE);
				setState(1124);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1123);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1126);
				((CreateTablespaceNdbContext)_localctx).extentSize = fileSizeLiteral();
				}
			}

			setState(1134);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(1129);
				match(INITIAL_SIZE);
				setState(1131);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1130);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1133);
				((CreateTablespaceNdbContext)_localctx).initialSize = fileSizeLiteral();
				}
			}

			setState(1141);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTOEXTEND_SIZE) {
				{
				setState(1136);
				match(AUTOEXTEND_SIZE);
				setState(1138);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1137);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1140);
				((CreateTablespaceNdbContext)_localctx).autoextendSize = fileSizeLiteral();
				}
			}

			setState(1148);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAX_SIZE) {
				{
				setState(1143);
				match(MAX_SIZE);
				setState(1145);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1144);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1147);
				((CreateTablespaceNdbContext)_localctx).maxSize = fileSizeLiteral();
				}
			}

			setState(1155);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(1150);
				match(NODEGROUP);
				setState(1152);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1151);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1154);
				uid();
				}
			}

			setState(1158);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(1157);
				match(WAIT);
				}
			}

			setState(1165);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(1160);
				match(COMMENT);
				setState(1162);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1161);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1164);
				((CreateTablespaceNdbContext)_localctx).comment = match(STRING_LITERAL);
				}
			}

			setState(1167);
			match(ENGINE);
			setState(1169);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(1168);
				match(EQUAL_SYMBOL);
				}
			}

			setState(1171);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTriggerContext extends ParserRuleContext {
		public FullIdContext thisTrigger;
		public Token triggerTime;
		public Token triggerEvent;
		public Token triggerPlace;
		public FullIdContext otherTrigger;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode EACH() { return getToken(MySqlParser.EACH, 0); }
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public List<FullIdContext> fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public TerminalNode BEFORE() { return getToken(MySqlParser.BEFORE, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode FOLLOWS() { return getToken(MySqlParser.FOLLOWS, 0); }
		public TerminalNode PRECEDES() { return getToken(MySqlParser.PRECEDES, 0); }
		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTrigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTrigger(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTriggerContext createTrigger() throws RecognitionException {
		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_createTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1173);
			match(CREATE);
			setState(1175);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1174);
				ownerStatement();
				}
			}

			setState(1177);
			match(TRIGGER);
			setState(1178);
			((CreateTriggerContext)_localctx).thisTrigger = fullId();
			setState(1179);
			((CreateTriggerContext)_localctx).triggerTime = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BEFORE || _la==AFTER) ) {
				((CreateTriggerContext)_localctx).triggerTime = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1180);
			((CreateTriggerContext)_localctx).triggerEvent = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DELETE || _la==INSERT || _la==UPDATE) ) {
				((CreateTriggerContext)_localctx).triggerEvent = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1181);
			match(ON);
			setState(1182);
			tableName();
			setState(1183);
			match(FOR);
			setState(1184);
			match(EACH);
			setState(1185);
			match(ROW);
			setState(1188);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
			case 1:
				{
				setState(1186);
				((CreateTriggerContext)_localctx).triggerPlace = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FOLLOWS || _la==PRECEDES) ) {
					((CreateTriggerContext)_localctx).triggerPlace = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1187);
				((CreateTriggerContext)_localctx).otherTrigger = fullId();
				}
				break;
			}
			setState(1190);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateViewContext extends ParserRuleContext {
		public Token algType;
		public Token secContext;
		public Token checkOption;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode OR() { return getToken(MySqlParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public CreateViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateView(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateViewContext createView() throws RecognitionException {
		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_createView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1192);
			match(CREATE);
			setState(1195);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1193);
				match(OR);
				setState(1194);
				match(REPLACE);
				}
			}

			setState(1200);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(1197);
				match(ALGORITHM);
				setState(1198);
				match(EQUAL_SYMBOL);
				setState(1199);
				((CreateViewContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
					((CreateViewContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1203);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1202);
				ownerStatement();
				}
			}

			setState(1208);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(1205);
				match(SQL);
				setState(1206);
				match(SECURITY);
				setState(1207);
				((CreateViewContext)_localctx).secContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((CreateViewContext)_localctx).secContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1210);
			match(VIEW);
			setState(1211);
			fullId();
			setState(1216);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(1212);
				match(LR_BRACKET);
				setState(1213);
				uidList();
				setState(1214);
				match(RR_BRACKET);
				}
			}

			setState(1218);
			match(AS);
			setState(1219);
			selectStatement();
			setState(1226);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(1220);
				match(WITH);
				setState(1222);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADED || _la==LOCAL) {
					{
					setState(1221);
					((CreateViewContext)_localctx).checkOption = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==CASCADED || _la==LOCAL) ) {
						((CreateViewContext)_localctx).checkOption = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1224);
				match(CHECK);
				setState(1225);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseOptionContext extends ParserRuleContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public List<TerminalNode> DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CreateDatabaseOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabaseOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDatabaseOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDatabaseOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateDatabaseOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseOptionContext createDatabaseOption() throws RecognitionException {
		CreateDatabaseOptionContext _localctx = new CreateDatabaseOptionContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_createDatabaseOption);
		int _la;
		try {
			setState(1251);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1229);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1228);
					match(DEFAULT);
					}
				}

				setState(1234);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CHARACTER:
					{
					setState(1231);
					match(CHARACTER);
					setState(1232);
					match(SET);
					}
					break;
				case CHARSET:
					{
					setState(1233);
					match(CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1237);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1236);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1241);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(1239);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(1240);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1244);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1243);
					match(DEFAULT);
					}
				}

				setState(1246);
				match(COLLATE);
				setState(1248);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1247);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1250);
				collationName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OwnerStatementContext extends ParserRuleContext {
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(MySqlParser.CURRENT_USER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public OwnerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ownerStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOwnerStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOwnerStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOwnerStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OwnerStatementContext ownerStatement() throws RecognitionException {
		OwnerStatementContext _localctx = new OwnerStatementContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_ownerStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1253);
			match(DEFINER);
			setState(1254);
			match(EQUAL_SYMBOL);
			setState(1261);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_LITERAL:
			case ID:
			case STRING_USER_NAME:
				{
				setState(1255);
				userName();
				}
				break;
			case CURRENT_USER:
				{
				setState(1256);
				match(CURRENT_USER);
				setState(1259);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(1257);
					match(LR_BRACKET);
					setState(1258);
					match(RR_BRACKET);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ScheduleExpressionContext extends ParserRuleContext {
		public ScheduleExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scheduleExpression; }
	 
		public ScheduleExpressionContext() { }
		public void copyFrom(ScheduleExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PreciseScheduleContext extends ScheduleExpressionContext {
		public TerminalNode AT() { return getToken(MySqlParser.AT, 0); }
		public TimestampValueContext timestampValue() {
			return getRuleContext(TimestampValueContext.class,0);
		}
		public List<IntervalExprContext> intervalExpr() {
			return getRuleContexts(IntervalExprContext.class);
		}
		public IntervalExprContext intervalExpr(int i) {
			return getRuleContext(IntervalExprContext.class,i);
		}
		public PreciseScheduleContext(ScheduleExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPreciseSchedule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPreciseSchedule(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPreciseSchedule(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IntervalScheduleContext extends ScheduleExpressionContext {
		public TimestampValueContext startTimestamp;
		public IntervalExprContext intervalExpr;
		public List<IntervalExprContext> startIntervals = new ArrayList<IntervalExprContext>();
		public TimestampValueContext endTimestamp;
		public List<IntervalExprContext> endIntervals = new ArrayList<IntervalExprContext>();
		public TerminalNode EVERY() { return getToken(MySqlParser.EVERY, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode STARTS() { return getToken(MySqlParser.STARTS, 0); }
		public TerminalNode ENDS() { return getToken(MySqlParser.ENDS, 0); }
		public List<TimestampValueContext> timestampValue() {
			return getRuleContexts(TimestampValueContext.class);
		}
		public TimestampValueContext timestampValue(int i) {
			return getRuleContext(TimestampValueContext.class,i);
		}
		public List<IntervalExprContext> intervalExpr() {
			return getRuleContexts(IntervalExprContext.class);
		}
		public IntervalExprContext intervalExpr(int i) {
			return getRuleContext(IntervalExprContext.class,i);
		}
		public IntervalScheduleContext(ScheduleExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalSchedule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalSchedule(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalSchedule(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ScheduleExpressionContext scheduleExpression() throws RecognitionException {
		ScheduleExpressionContext _localctx = new ScheduleExpressionContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_scheduleExpression);
		int _la;
		try {
			setState(1297);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT:
				_localctx = new PreciseScheduleContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1263);
				match(AT);
				setState(1264);
				timestampValue();
				setState(1268);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==PLUS) {
					{
					{
					setState(1265);
					intervalExpr();
					}
					}
					setState(1270);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case EVERY:
				_localctx = new IntervalScheduleContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1271);
				match(EVERY);
				setState(1274);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
				case 1:
					{
					setState(1272);
					decimalLiteral();
					}
					break;
				case 2:
					{
					setState(1273);
					expression(0);
					}
					break;
				}
				setState(1276);
				intervalType();
				setState(1285);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STARTS) {
					{
					setState(1277);
					match(STARTS);
					setState(1278);
					((IntervalScheduleContext)_localctx).startTimestamp = timestampValue();
					setState(1282);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS) {
						{
						{
						setState(1279);
						((IntervalScheduleContext)_localctx).intervalExpr = intervalExpr();
						((IntervalScheduleContext)_localctx).startIntervals.add(((IntervalScheduleContext)_localctx).intervalExpr);
						}
						}
						setState(1284);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(1295);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENDS) {
					{
					setState(1287);
					match(ENDS);
					setState(1288);
					((IntervalScheduleContext)_localctx).endTimestamp = timestampValue();
					setState(1292);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS) {
						{
						{
						setState(1289);
						((IntervalScheduleContext)_localctx).intervalExpr = intervalExpr();
						((IntervalScheduleContext)_localctx).endIntervals.add(((IntervalScheduleContext)_localctx).intervalExpr);
						}
						}
						setState(1294);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimestampValueContext extends ParserRuleContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TimestampValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_timestampValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTimestampValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTimestampValue(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTimestampValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TimestampValueContext timestampValue() throws RecognitionException {
		TimestampValueContext _localctx = new TimestampValueContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_timestampValue);
		try {
			setState(1303);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1299);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1300);
				stringLiteral();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1301);
				decimalLiteral();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1302);
				expression(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalExprContext extends ParserRuleContext {
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public IntervalExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalExpr; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalExpr(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalExpr(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalExprContext intervalExpr() throws RecognitionException {
		IntervalExprContext _localctx = new IntervalExprContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_intervalExpr);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1305);
			match(PLUS);
			setState(1306);
			match(INTERVAL);
			setState(1309);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,118,_ctx) ) {
			case 1:
				{
				setState(1307);
				decimalLiteral();
				}
				break;
			case 2:
				{
				setState(1308);
				expression(0);
				}
				break;
			}
			setState(1311);
			intervalType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalTypeContext extends ParserRuleContext {
		public IntervalTypeBaseContext intervalTypeBase() {
			return getRuleContext(IntervalTypeBaseContext.class,0);
		}
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode YEAR_MONTH() { return getToken(MySqlParser.YEAR_MONTH, 0); }
		public TerminalNode DAY_HOUR() { return getToken(MySqlParser.DAY_HOUR, 0); }
		public TerminalNode DAY_MINUTE() { return getToken(MySqlParser.DAY_MINUTE, 0); }
		public TerminalNode DAY_SECOND() { return getToken(MySqlParser.DAY_SECOND, 0); }
		public TerminalNode HOUR_MINUTE() { return getToken(MySqlParser.HOUR_MINUTE, 0); }
		public TerminalNode HOUR_SECOND() { return getToken(MySqlParser.HOUR_SECOND, 0); }
		public TerminalNode MINUTE_SECOND() { return getToken(MySqlParser.MINUTE_SECOND, 0); }
		public TerminalNode SECOND_MICROSECOND() { return getToken(MySqlParser.SECOND_MICROSECOND, 0); }
		public TerminalNode MINUTE_MICROSECOND() { return getToken(MySqlParser.MINUTE_MICROSECOND, 0); }
		public TerminalNode HOUR_MICROSECOND() { return getToken(MySqlParser.HOUR_MICROSECOND, 0); }
		public TerminalNode DAY_MICROSECOND() { return getToken(MySqlParser.DAY_MICROSECOND, 0); }
		public IntervalTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalTypeContext intervalType() throws RecognitionException {
		IntervalTypeContext _localctx = new IntervalTypeContext(_ctx, getState());
		enterRule(_localctx, 58, RULE_intervalType);
		try {
			setState(1326);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
				enterOuterAlt(_localctx, 1);
				{
				setState(1313);
				intervalTypeBase();
				}
				break;
			case YEAR:
				enterOuterAlt(_localctx, 2);
				{
				setState(1314);
				match(YEAR);
				}
				break;
			case YEAR_MONTH:
				enterOuterAlt(_localctx, 3);
				{
				setState(1315);
				match(YEAR_MONTH);
				}
				break;
			case DAY_HOUR:
				enterOuterAlt(_localctx, 4);
				{
				setState(1316);
				match(DAY_HOUR);
				}
				break;
			case DAY_MINUTE:
				enterOuterAlt(_localctx, 5);
				{
				setState(1317);
				match(DAY_MINUTE);
				}
				break;
			case DAY_SECOND:
				enterOuterAlt(_localctx, 6);
				{
				setState(1318);
				match(DAY_SECOND);
				}
				break;
			case HOUR_MINUTE:
				enterOuterAlt(_localctx, 7);
				{
				setState(1319);
				match(HOUR_MINUTE);
				}
				break;
			case HOUR_SECOND:
				enterOuterAlt(_localctx, 8);
				{
				setState(1320);
				match(HOUR_SECOND);
				}
				break;
			case MINUTE_SECOND:
				enterOuterAlt(_localctx, 9);
				{
				setState(1321);
				match(MINUTE_SECOND);
				}
				break;
			case SECOND_MICROSECOND:
				enterOuterAlt(_localctx, 10);
				{
				setState(1322);
				match(SECOND_MICROSECOND);
				}
				break;
			case MINUTE_MICROSECOND:
				enterOuterAlt(_localctx, 11);
				{
				setState(1323);
				match(MINUTE_MICROSECOND);
				}
				break;
			case HOUR_MICROSECOND:
				enterOuterAlt(_localctx, 12);
				{
				setState(1324);
				match(HOUR_MICROSECOND);
				}
				break;
			case DAY_MICROSECOND:
				enterOuterAlt(_localctx, 13);
				{
				setState(1325);
				match(DAY_MICROSECOND);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EnableTypeContext extends ParserRuleContext {
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public EnableTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_enableType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEnableType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEnableType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitEnableType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EnableTypeContext enableType() throws RecognitionException {
		EnableTypeContext _localctx = new EnableTypeContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_enableType);
		try {
			setState(1333);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1328);
				match(ENABLE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1329);
				match(DISABLE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1330);
				match(DISABLE);
				setState(1331);
				match(ON);
				setState(1332);
				match(SLAVE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexTypeContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode BTREE() { return getToken(MySqlParser.BTREE, 0); }
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public IndexTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexTypeContext indexType() throws RecognitionException {
		IndexTypeContext _localctx = new IndexTypeContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_indexType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1335);
			match(USING);
			setState(1336);
			_la = _input.LA(1);
			if ( !(_la==BTREE || _la==HASH) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexOptionContext extends ParserRuleContext {
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode PARSER() { return getToken(MySqlParser.PARSER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexOptionContext indexOption() throws RecognitionException {
		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
		enterRule(_localctx, 64, RULE_indexOption);
		int _la;
		try {
			setState(1351);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case KEY_BLOCK_SIZE:
				enterOuterAlt(_localctx, 1);
				{
				setState(1338);
				match(KEY_BLOCK_SIZE);
				setState(1340);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1339);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1342);
				fileSizeLiteral();
				}
				break;
			case USING:
				enterOuterAlt(_localctx, 2);
				{
				setState(1343);
				indexType();
				}
				break;
			case WITH:
				enterOuterAlt(_localctx, 3);
				{
				setState(1344);
				match(WITH);
				setState(1345);
				match(PARSER);
				setState(1346);
				uid();
				}
				break;
			case COMMENT:
				enterOuterAlt(_localctx, 4);
				{
				setState(1347);
				match(COMMENT);
				setState(1348);
				match(STRING_LITERAL);
				}
				break;
			case INVISIBLE:
				enterOuterAlt(_localctx, 5);
				{
				setState(1349);
				match(INVISIBLE);
				}
				break;
			case VISIBLE:
				enterOuterAlt(_localctx, 6);
				{
				setState(1350);
				match(VISIBLE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureParameterContext extends ParserRuleContext {
		public Token direction;
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode OUT() { return getToken(MySqlParser.OUT, 0); }
		public TerminalNode INOUT() { return getToken(MySqlParser.INOUT, 0); }
		public ProcedureParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureParameter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterProcedureParameter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitProcedureParameter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitProcedureParameter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProcedureParameterContext procedureParameter() throws RecognitionException {
		ProcedureParameterContext _localctx = new ProcedureParameterContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_procedureParameter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1354);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (IN - 71)) | (1L << (INOUT - 71)) | (1L << (OUT - 71)))) != 0)) {
				{
				setState(1353);
				((ProcedureParameterContext)_localctx).direction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & ((1L << (IN - 71)) | (1L << (INOUT - 71)) | (1L << (OUT - 71)))) != 0)) ) {
					((ProcedureParameterContext)_localctx).direction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1356);
			uid();
			setState(1357);
			dataType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionParameterContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public FunctionParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionParameter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionParameter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionParameter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionParameter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionParameterContext functionParameter() throws RecognitionException {
		FunctionParameterContext _localctx = new FunctionParameterContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_functionParameter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1359);
			uid();
			setState(1360);
			dataType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineOptionContext extends ParserRuleContext {
		public RoutineOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineOption; }
	 
		public RoutineOptionContext() { }
		public void copyFrom(RoutineOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class RoutineBehaviorContext extends RoutineOptionContext {
		public TerminalNode DETERMINISTIC() { return getToken(MySqlParser.DETERMINISTIC, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public RoutineBehaviorContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineBehavior(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineBehavior(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineBehavior(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoutineLanguageContext extends RoutineOptionContext {
		public TerminalNode LANGUAGE() { return getToken(MySqlParser.LANGUAGE, 0); }
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public RoutineLanguageContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineLanguage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineLanguage(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineLanguage(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoutineCommentContext extends RoutineOptionContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public RoutineCommentContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineComment(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineComment(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoutineSecurityContext extends RoutineOptionContext {
		public Token context;
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public RoutineSecurityContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineSecurity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineSecurity(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineSecurity(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoutineDataContext extends RoutineOptionContext {
		public TerminalNode CONTAINS() { return getToken(MySqlParser.CONTAINS, 0); }
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode READS() { return getToken(MySqlParser.READS, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode MODIFIES() { return getToken(MySqlParser.MODIFIES, 0); }
		public RoutineDataContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineData(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineData(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineData(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineOptionContext routineOption() throws RecognitionException {
		RoutineOptionContext _localctx = new RoutineOptionContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_routineOption);
		int _la;
		try {
			setState(1385);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case COMMENT:
				_localctx = new RoutineCommentContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1362);
				match(COMMENT);
				setState(1363);
				match(STRING_LITERAL);
				}
				break;
			case LANGUAGE:
				_localctx = new RoutineLanguageContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1364);
				match(LANGUAGE);
				setState(1365);
				match(SQL);
				}
				break;
			case DETERMINISTIC:
			case NOT:
				_localctx = new RoutineBehaviorContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1367);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(1366);
					match(NOT);
					}
				}

				setState(1369);
				match(DETERMINISTIC);
				}
				break;
			case MODIFIES:
			case READS:
			case CONTAINS:
			case NO:
				_localctx = new RoutineDataContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1380);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CONTAINS:
					{
					setState(1370);
					match(CONTAINS);
					setState(1371);
					match(SQL);
					}
					break;
				case NO:
					{
					setState(1372);
					match(NO);
					setState(1373);
					match(SQL);
					}
					break;
				case READS:
					{
					setState(1374);
					match(READS);
					setState(1375);
					match(SQL);
					setState(1376);
					match(DATA);
					}
					break;
				case MODIFIES:
					{
					setState(1377);
					match(MODIFIES);
					setState(1378);
					match(SQL);
					setState(1379);
					match(DATA);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case SQL:
				_localctx = new RoutineSecurityContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1382);
				match(SQL);
				setState(1383);
				match(SECURITY);
				setState(1384);
				((RoutineSecurityContext)_localctx).context = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((RoutineSecurityContext)_localctx).context = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ServerOptionContext extends ParserRuleContext {
		public TerminalNode HOST() { return getToken(MySqlParser.HOST, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode SOCKET() { return getToken(MySqlParser.SOCKET, 0); }
		public TerminalNode OWNER() { return getToken(MySqlParser.OWNER, 0); }
		public TerminalNode PORT() { return getToken(MySqlParser.PORT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ServerOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_serverOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterServerOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitServerOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitServerOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ServerOptionContext serverOption() throws RecognitionException {
		ServerOptionContext _localctx = new ServerOptionContext(_ctx, getState());
		enterRule(_localctx, 72, RULE_serverOption);
		try {
			setState(1401);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HOST:
				enterOuterAlt(_localctx, 1);
				{
				setState(1387);
				match(HOST);
				setState(1388);
				match(STRING_LITERAL);
				}
				break;
			case DATABASE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1389);
				match(DATABASE);
				setState(1390);
				match(STRING_LITERAL);
				}
				break;
			case USER:
				enterOuterAlt(_localctx, 3);
				{
				setState(1391);
				match(USER);
				setState(1392);
				match(STRING_LITERAL);
				}
				break;
			case PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(1393);
				match(PASSWORD);
				setState(1394);
				match(STRING_LITERAL);
				}
				break;
			case SOCKET:
				enterOuterAlt(_localctx, 5);
				{
				setState(1395);
				match(SOCKET);
				setState(1396);
				match(STRING_LITERAL);
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 6);
				{
				setState(1397);
				match(OWNER);
				setState(1398);
				match(STRING_LITERAL);
				}
				break;
			case PORT:
				enterOuterAlt(_localctx, 7);
				{
				setState(1399);
				match(PORT);
				setState(1400);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<CreateDefinitionContext> createDefinition() {
			return getRuleContexts(CreateDefinitionContext.class);
		}
		public CreateDefinitionContext createDefinition(int i) {
			return getRuleContext(CreateDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinitions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDefinitions(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateDefinitions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDefinitionsContext createDefinitions() throws RecognitionException {
		CreateDefinitionsContext _localctx = new CreateDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 74, RULE_createDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1403);
			match(LR_BRACKET);
			setState(1404);
			createDefinition();
			setState(1409);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1405);
				match(COMMA);
				setState(1406);
				createDefinition();
				}
				}
				setState(1411);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1412);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionContext extends ParserRuleContext {
		public CreateDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinition; }
	 
		public CreateDefinitionContext() { }
		public void copyFrom(CreateDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class ColumnDeclarationContext extends CreateDefinitionContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public ColumnDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnDeclaration(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitColumnDeclaration(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ConstraintDeclarationContext extends CreateDefinitionContext {
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public ConstraintDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstraintDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstraintDeclaration(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConstraintDeclaration(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IndexDeclarationContext extends CreateDefinitionContext {
		public IndexColumnDefinitionContext indexColumnDefinition() {
			return getRuleContext(IndexColumnDefinitionContext.class,0);
		}
		public IndexDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexDeclaration(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexDeclaration(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDefinitionContext createDefinition() throws RecognitionException {
		CreateDefinitionContext _localctx = new CreateDefinitionContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_createDefinition);
		try {
			setState(1419);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				_localctx = new ColumnDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1414);
				uid();
				setState(1415);
				columnDefinition();
				}
				break;
			case CHECK:
			case CONSTRAINT:
			case FOREIGN:
			case PRIMARY:
			case UNIQUE:
				_localctx = new ConstraintDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1417);
				tableConstraint();
				}
				break;
			case FULLTEXT:
			case INDEX:
			case KEY:
			case SPATIAL:
				_localctx = new IndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1418);
				indexColumnDefinition();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefinitionContext extends ParserRuleContext {
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public List<ColumnConstraintContext> columnConstraint() {
			return getRuleContexts(ColumnConstraintContext.class);
		}
		public ColumnConstraintContext columnConstraint(int i) {
			return getRuleContext(ColumnConstraintContext.class,i);
		}
		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnDefinition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitColumnDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_columnDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1421);
			dataType();
			setState(1425);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << COLLATE) | (1L << DEFAULT) | (1L << GENERATED))) != 0) || ((((_la - 82)) & ~0x3f) == 0 && ((1L << (_la - 82)) & ((1L << (KEY - 82)) | (1L << (NOT - 82)) | (1L << (NULL_LITERAL - 82)) | (1L << (ON - 82)) | (1L << (PRIMARY - 82)) | (1L << (REFERENCES - 82)))) != 0) || _la==UNIQUE || _la==SERIAL || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COMMENT - 280)))) != 0) || _la==STORAGE || _la==NULL_SPEC_LITERAL) {
				{
				{
				setState(1422);
				columnConstraint();
				}
				}
				setState(1427);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnConstraintContext extends ParserRuleContext {
		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnConstraint; }
	 
		public ColumnConstraintContext() { }
		public void copyFrom(ColumnConstraintContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class StorageColumnConstraintContext extends ColumnConstraintContext {
		public Token storageval;
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public StorageColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStorageColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStorageColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStorageColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FormatColumnConstraintContext extends ColumnConstraintContext {
		public Token colformat;
		public TerminalNode COLUMN_FORMAT() { return getToken(MySqlParser.COLUMN_FORMAT, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public FormatColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFormatColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFormatColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFormatColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CollateColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CollateColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollateColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollateColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollateColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AutoIncrementColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public CurrentTimestampContext currentTimestamp() {
			return getRuleContext(CurrentTimestampContext.class,0);
		}
		public AutoIncrementColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAutoIncrementColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAutoIncrementColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAutoIncrementColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CommentColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public CommentColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCommentColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCommentColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCommentColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PrimaryKeyColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public PrimaryKeyColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrimaryKeyColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrimaryKeyColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrimaryKeyColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class UniqueKeyColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UniqueKeyColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUniqueKeyColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUniqueKeyColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUniqueKeyColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SerialDefaultColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public SerialDefaultColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSerialDefaultColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSerialDefaultColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSerialDefaultColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NullColumnConstraintContext extends ColumnConstraintContext {
		public NullNotnullContext nullNotnull() {
			return getRuleContext(NullNotnullContext.class,0);
		}
		public NullColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNullColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNullColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNullColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DefaultColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public DefaultColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefaultColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ReferenceColumnConstraintContext extends ColumnConstraintContext {
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public ReferenceColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReferenceColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GeneratedColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode GENERATED() { return getToken(MySqlParser.GENERATED, 0); }
		public TerminalNode ALWAYS() { return getToken(MySqlParser.ALWAYS, 0); }
		public TerminalNode VIRTUAL() { return getToken(MySqlParser.VIRTUAL, 0); }
		public TerminalNode STORED() { return getToken(MySqlParser.STORED, 0); }
		public GeneratedColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGeneratedColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGeneratedColumnConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGeneratedColumnConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
		enterRule(_localctx, 80, RULE_columnConstraint);
		int _la;
		try {
			setState(1468);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT:
			case NULL_LITERAL:
			case NULL_SPEC_LITERAL:
				_localctx = new NullColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1428);
				nullNotnull();
				}
				break;
			case DEFAULT:
				_localctx = new DefaultColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1429);
				match(DEFAULT);
				setState(1430);
				defaultValue();
				}
				break;
			case ON:
			case AUTO_INCREMENT:
				_localctx = new AutoIncrementColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1435);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AUTO_INCREMENT:
					{
					setState(1431);
					match(AUTO_INCREMENT);
					}
					break;
				case ON:
					{
					setState(1432);
					match(ON);
					setState(1433);
					match(UPDATE);
					setState(1434);
					currentTimestamp();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case KEY:
			case PRIMARY:
				_localctx = new PrimaryKeyColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1438);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIMARY) {
					{
					setState(1437);
					match(PRIMARY);
					}
				}

				setState(1440);
				match(KEY);
				}
				break;
			case UNIQUE:
				_localctx = new UniqueKeyColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1441);
				match(UNIQUE);
				setState(1443);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
				case 1:
					{
					setState(1442);
					match(KEY);
					}
					break;
				}
				}
				break;
			case COMMENT:
				_localctx = new CommentColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1445);
				match(COMMENT);
				setState(1446);
				match(STRING_LITERAL);
				}
				break;
			case COLUMN_FORMAT:
				_localctx = new FormatColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(1447);
				match(COLUMN_FORMAT);
				setState(1448);
				((FormatColumnConstraintContext)_localctx).colformat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==DYNAMIC || _la==FIXED) ) {
					((FormatColumnConstraintContext)_localctx).colformat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case STORAGE:
				_localctx = new StorageColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(1449);
				match(STORAGE);
				setState(1450);
				((StorageColumnConstraintContext)_localctx).storageval = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==DISK || _la==MEMORY) ) {
					((StorageColumnConstraintContext)_localctx).storageval = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case REFERENCES:
				_localctx = new ReferenceColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(1451);
				referenceDefinition();
				}
				break;
			case COLLATE:
				_localctx = new CollateColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(1452);
				match(COLLATE);
				setState(1453);
				collationName();
				}
				break;
			case AS:
			case GENERATED:
				_localctx = new GeneratedColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(1456);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==GENERATED) {
					{
					setState(1454);
					match(GENERATED);
					setState(1455);
					match(ALWAYS);
					}
				}

				setState(1458);
				match(AS);
				setState(1459);
				match(LR_BRACKET);
				setState(1460);
				expression(0);
				setState(1461);
				match(RR_BRACKET);
				setState(1463);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORED || _la==VIRTUAL) {
					{
					setState(1462);
					_la = _input.LA(1);
					if ( !(_la==STORED || _la==VIRTUAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			case SERIAL:
				_localctx = new SerialDefaultColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(1465);
				match(SERIAL);
				setState(1466);
				match(DEFAULT);
				setState(1467);
				match(VALUE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintContext extends ParserRuleContext {
		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraint; }
	 
		public TableConstraintContext() { }
		public void copyFrom(TableConstraintContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UniqueKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public Token indexFormat;
		public UidContext index;
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UniqueKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUniqueKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUniqueKeyTableConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUniqueKeyTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CheckTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CheckTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTableConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCheckTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PrimaryKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public PrimaryKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrimaryKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrimaryKeyTableConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrimaryKeyTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ForeignKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ForeignKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterForeignKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitForeignKeyTableConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitForeignKeyTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableConstraintContext tableConstraint() throws RecognitionException {
		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_tableConstraint);
		int _la;
		try {
			setState(1539);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) {
			case 1:
				_localctx = new PrimaryKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1474);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1470);
					match(CONSTRAINT);
					setState(1472);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(1471);
						((PrimaryKeyTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1476);
				match(PRIMARY);
				setState(1477);
				match(KEY);
				setState(1479);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(1478);
					((PrimaryKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1482);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1481);
					indexType();
					}
				}

				setState(1484);
				indexColumnNames();
				setState(1488);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(1485);
					indexOption();
					}
					}
					setState(1490);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new UniqueKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1495);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1491);
					match(CONSTRAINT);
					setState(1493);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(1492);
						((UniqueKeyTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1497);
				match(UNIQUE);
				setState(1499);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(1498);
					((UniqueKeyTableConstraintContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((UniqueKeyTableConstraintContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1502);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(1501);
					((UniqueKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1505);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1504);
					indexType();
					}
				}

				setState(1507);
				indexColumnNames();
				setState(1511);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(1508);
					indexOption();
					}
					}
					setState(1513);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 3:
				_localctx = new ForeignKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1518);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1514);
					match(CONSTRAINT);
					setState(1516);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(1515);
						((ForeignKeyTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1520);
				match(FOREIGN);
				setState(1521);
				match(KEY);
				setState(1523);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(1522);
					((ForeignKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1525);
				indexColumnNames();
				setState(1526);
				referenceDefinition();
				}
				break;
			case 4:
				_localctx = new CheckTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1532);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1528);
					match(CONSTRAINT);
					setState(1530);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(1529);
						((CheckTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1534);
				match(CHECK);
				setState(1535);
				match(LR_BRACKET);
				setState(1536);
				expression(0);
				setState(1537);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceDefinitionContext extends ParserRuleContext {
		public Token matchType;
		public TerminalNode REFERENCES() { return getToken(MySqlParser.REFERENCES, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode MATCH() { return getToken(MySqlParser.MATCH, 0); }
		public ReferenceActionContext referenceAction() {
			return getRuleContext(ReferenceActionContext.class,0);
		}
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(MySqlParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(MySqlParser.SIMPLE, 0); }
		public ReferenceDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceDefinition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReferenceDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReferenceDefinitionContext referenceDefinition() throws RecognitionException {
		ReferenceDefinitionContext _localctx = new ReferenceDefinitionContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_referenceDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1541);
			match(REFERENCES);
			setState(1542);
			tableName();
			setState(1544);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,154,_ctx) ) {
			case 1:
				{
				setState(1543);
				indexColumnNames();
				}
				break;
			}
			setState(1548);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MATCH) {
				{
				setState(1546);
				match(MATCH);
				setState(1547);
				((ReferenceDefinitionContext)_localctx).matchType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULL || _la==PARTIAL || _la==SIMPLE) ) {
					((ReferenceDefinitionContext)_localctx).matchType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1551);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,156,_ctx) ) {
			case 1:
				{
				setState(1550);
				referenceAction();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceActionContext extends ParserRuleContext {
		public ReferenceControlTypeContext onDelete;
		public ReferenceControlTypeContext onUpdate;
		public List<TerminalNode> ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public List<ReferenceControlTypeContext> referenceControlType() {
			return getRuleContexts(ReferenceControlTypeContext.class);
		}
		public ReferenceControlTypeContext referenceControlType(int i) {
			return getRuleContext(ReferenceControlTypeContext.class,i);
		}
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public ReferenceActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceAction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceAction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceAction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReferenceAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReferenceActionContext referenceAction() throws RecognitionException {
		ReferenceActionContext _localctx = new ReferenceActionContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_referenceAction);
		try {
			setState(1569);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1553);
				match(ON);
				setState(1554);
				match(DELETE);
				setState(1555);
				((ReferenceActionContext)_localctx).onDelete = referenceControlType();
				setState(1559);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) {
				case 1:
					{
					setState(1556);
					match(ON);
					setState(1557);
					match(UPDATE);
					setState(1558);
					((ReferenceActionContext)_localctx).onUpdate = referenceControlType();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1561);
				match(ON);
				setState(1562);
				match(UPDATE);
				setState(1563);
				((ReferenceActionContext)_localctx).onUpdate = referenceControlType();
				setState(1567);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) {
				case 1:
					{
					setState(1564);
					match(ON);
					setState(1565);
					match(DELETE);
					setState(1566);
					((ReferenceActionContext)_localctx).onDelete = referenceControlType();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceControlTypeContext extends ParserRuleContext {
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(MySqlParser.ACTION, 0); }
		public ReferenceControlTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceControlType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceControlType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceControlType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReferenceControlType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReferenceControlTypeContext referenceControlType() throws RecognitionException {
		ReferenceControlTypeContext _localctx = new ReferenceControlTypeContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_referenceControlType);
		try {
			setState(1577);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case RESTRICT:
				enterOuterAlt(_localctx, 1);
				{
				setState(1571);
				match(RESTRICT);
				}
				break;
			case CASCADE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1572);
				match(CASCADE);
				}
				break;
			case SET:
				enterOuterAlt(_localctx, 3);
				{
				setState(1573);
				match(SET);
				setState(1574);
				match(NULL_LITERAL);
				}
				break;
			case NO:
				enterOuterAlt(_localctx, 4);
				{
				setState(1575);
				match(NO);
				setState(1576);
				match(ACTION);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnDefinitionContext extends ParserRuleContext {
		public IndexColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnDefinition; }
	 
		public IndexColumnDefinitionContext() { }
		public void copyFrom(IndexColumnDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SpecialIndexDeclarationContext extends IndexColumnDefinitionContext {
		public Token indexFormat;
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public SpecialIndexDeclarationContext(IndexColumnDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpecialIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpecialIndexDeclaration(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSpecialIndexDeclaration(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SimpleIndexDeclarationContext extends IndexColumnDefinitionContext {
		public Token indexFormat;
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public SimpleIndexDeclarationContext(IndexColumnDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleIndexDeclaration(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleIndexDeclaration(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexColumnDefinitionContext indexColumnDefinition() throws RecognitionException {
		IndexColumnDefinitionContext _localctx = new IndexColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_indexColumnDefinition);
		int _la;
		try {
			setState(1607);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case INDEX:
			case KEY:
				_localctx = new SimpleIndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1579);
				((SimpleIndexDeclarationContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((SimpleIndexDeclarationContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1581);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(1580);
					uid();
					}
				}

				setState(1584);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1583);
					indexType();
					}
				}

				setState(1586);
				indexColumnNames();
				setState(1590);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(1587);
					indexOption();
					}
					}
					setState(1592);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case FULLTEXT:
			case SPATIAL:
				_localctx = new SpecialIndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1593);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1595);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(1594);
					((SpecialIndexDeclarationContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((SpecialIndexDeclarationContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1598);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(1597);
					uid();
					}
				}

				setState(1600);
				indexColumnNames();
				setState(1604);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(1601);
					indexOption();
					}
					}
					setState(1606);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableOptionContext extends ParserRuleContext {
		public TableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableOption; }
	 
		public TableOptionContext() { }
		public void copyFrom(TableOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableOptionEngineContext extends TableOptionContext {
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEngineContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEngine(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionEngine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionMaxRowsContext extends TableOptionContext {
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionMaxRowsContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionMaxRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionMaxRows(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionMaxRows(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionCollateContext extends TableOptionContext {
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCollateContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCollate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCollate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionCollate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionPersistentContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode STATS_PERSISTENT() { return getToken(MySqlParser.STATS_PERSISTENT, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPersistentContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPersistent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPersistent(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionPersistent(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionTablespaceContext extends TableOptionContext {
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TablespaceStorageContext tablespaceStorage() {
			return getRuleContext(TablespaceStorageContext.class,0);
		}
		public TableOptionTablespaceContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionTablespace(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionPackKeysContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode PACK_KEYS() { return getToken(MySqlParser.PACK_KEYS, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPackKeysContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPackKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPackKeys(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionPackKeys(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionPasswordContext extends TableOptionContext {
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPasswordContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPassword(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPassword(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionPassword(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionUnionContext extends TableOptionContext {
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionUnionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionUnion(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionUnion(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionUnion(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionSamplePageContext extends TableOptionContext {
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySqlParser.STATS_SAMPLE_PAGES, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionSamplePageContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionSamplePage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionSamplePage(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionSamplePage(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionCharsetContext extends TableOptionContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public List<TerminalNode> DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCharsetContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCharset(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionCharset(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionIndexDirectoryContext extends TableOptionContext {
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionIndexDirectoryContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionIndexDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionIndexDirectory(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionIndexDirectory(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionKeyBlockSizeContext extends TableOptionContext {
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionKeyBlockSizeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionKeyBlockSize(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionKeyBlockSize(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionKeyBlockSize(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionEncryptionContext extends TableOptionContext {
		public TerminalNode ENCRYPTION() { return getToken(MySqlParser.ENCRYPTION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEncryptionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEncryption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEncryption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionEncryption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionDataDirectoryContext extends TableOptionContext {
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionDataDirectoryContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionDataDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionDataDirectory(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionDataDirectory(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionRecalculationContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySqlParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionRecalculationContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionRecalculation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionRecalculation(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionRecalculation(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionAutoIncrementContext extends TableOptionContext {
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionAutoIncrementContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionAutoIncrement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionAutoIncrement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionAutoIncrement(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionChecksumContext extends TableOptionContext {
		public Token boolValue;
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode PAGE_CHECKSUM() { return getToken(MySqlParser.PAGE_CHECKSUM, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionChecksumContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionChecksum(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionChecksum(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionChecksum(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionDelayContext extends TableOptionContext {
		public Token boolValue;
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySqlParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionDelayContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionDelay(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionDelay(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionDelay(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionConnectionContext extends TableOptionContext {
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionConnectionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionConnection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionConnection(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionConnection(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionCommentContext extends TableOptionContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCommentContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionComment(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionComment(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionAverageContext extends TableOptionContext {
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySqlParser.AVG_ROW_LENGTH, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionAverageContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionAverage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionAverage(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionAverage(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionRowFormatContext extends TableOptionContext {
		public Token rowFormat;
		public TerminalNode ROW_FORMAT() { return getToken(MySqlParser.ROW_FORMAT, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySqlParser.COMPRESSED, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySqlParser.REDUNDANT, 0); }
		public TerminalNode COMPACT() { return getToken(MySqlParser.COMPACT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionRowFormatContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionRowFormat(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionRowFormat(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionRowFormat(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionCompressionContext extends TableOptionContext {
		public TerminalNode COMPRESSION() { return getToken(MySqlParser.COMPRESSION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCompressionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCompression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCompression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionCompression(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionInsertMethodContext extends TableOptionContext {
		public Token insertMethod;
		public TerminalNode INSERT_METHOD() { return getToken(MySqlParser.INSERT_METHOD, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionInsertMethodContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionInsertMethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionInsertMethod(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionInsertMethod(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableOptionMinRowsContext extends TableOptionContext {
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionMinRowsContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionMinRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionMinRows(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableOptionMinRows(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableOptionContext tableOption() throws RecognitionException {
		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
		enterRule(_localctx, 92, RULE_tableOption);
		int _la;
		try {
			setState(1753);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) {
			case 1:
				_localctx = new TableOptionEngineContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1609);
				match(ENGINE);
				setState(1611);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1610);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1613);
				engineName();
				}
				break;
			case 2:
				_localctx = new TableOptionAutoIncrementContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1614);
				match(AUTO_INCREMENT);
				setState(1616);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1615);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1618);
				decimalLiteral();
				}
				break;
			case 3:
				_localctx = new TableOptionAverageContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1619);
				match(AVG_ROW_LENGTH);
				setState(1621);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1620);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1623);
				decimalLiteral();
				}
				break;
			case 4:
				_localctx = new TableOptionCharsetContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1625);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1624);
					match(DEFAULT);
					}
				}

				setState(1630);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CHARACTER:
					{
					setState(1627);
					match(CHARACTER);
					setState(1628);
					match(SET);
					}
					break;
				case CHARSET:
					{
					setState(1629);
					match(CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1633);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1632);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1637);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(1635);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(1636);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 5:
				_localctx = new TableOptionChecksumContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1639);
				_la = _input.LA(1);
				if ( !(_la==CHECKSUM || _la==PAGE_CHECKSUM) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1641);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1640);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1643);
				((TableOptionChecksumContext)_localctx).boolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionChecksumContext)_localctx).boolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 6:
				_localctx = new TableOptionCollateContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1645);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1644);
					match(DEFAULT);
					}
				}

				setState(1647);
				match(COLLATE);
				setState(1649);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1648);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1651);
				collationName();
				}
				break;
			case 7:
				_localctx = new TableOptionCommentContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(1652);
				match(COMMENT);
				setState(1654);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1653);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1656);
				match(STRING_LITERAL);
				}
				break;
			case 8:
				_localctx = new TableOptionCompressionContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(1657);
				match(COMPRESSION);
				setState(1659);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1658);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1661);
				_la = _input.LA(1);
				if ( !(_la==STRING_LITERAL || _la==ID) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 9:
				_localctx = new TableOptionConnectionContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(1662);
				match(CONNECTION);
				setState(1664);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1663);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1666);
				match(STRING_LITERAL);
				}
				break;
			case 10:
				_localctx = new TableOptionDataDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(1667);
				match(DATA);
				setState(1668);
				match(DIRECTORY);
				setState(1670);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1669);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1672);
				match(STRING_LITERAL);
				}
				break;
			case 11:
				_localctx = new TableOptionDelayContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(1673);
				match(DELAY_KEY_WRITE);
				setState(1675);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1674);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1677);
				((TableOptionDelayContext)_localctx).boolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionDelayContext)_localctx).boolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 12:
				_localctx = new TableOptionEncryptionContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(1678);
				match(ENCRYPTION);
				setState(1680);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1679);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1682);
				match(STRING_LITERAL);
				}
				break;
			case 13:
				_localctx = new TableOptionIndexDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(1683);
				match(INDEX);
				setState(1684);
				match(DIRECTORY);
				setState(1686);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1685);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1688);
				match(STRING_LITERAL);
				}
				break;
			case 14:
				_localctx = new TableOptionInsertMethodContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(1689);
				match(INSERT_METHOD);
				setState(1691);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1690);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1693);
				((TableOptionInsertMethodContext)_localctx).insertMethod = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NO) ) {
					((TableOptionInsertMethodContext)_localctx).insertMethod = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 15:
				_localctx = new TableOptionKeyBlockSizeContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(1694);
				match(KEY_BLOCK_SIZE);
				setState(1696);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1695);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1698);
				fileSizeLiteral();
				}
				break;
			case 16:
				_localctx = new TableOptionMaxRowsContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(1699);
				match(MAX_ROWS);
				setState(1701);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1700);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1703);
				decimalLiteral();
				}
				break;
			case 17:
				_localctx = new TableOptionMinRowsContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(1704);
				match(MIN_ROWS);
				setState(1706);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1705);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1708);
				decimalLiteral();
				}
				break;
			case 18:
				_localctx = new TableOptionPackKeysContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(1709);
				match(PACK_KEYS);
				setState(1711);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1710);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1713);
				((TableOptionPackKeysContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionPackKeysContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 19:
				_localctx = new TableOptionPasswordContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(1714);
				match(PASSWORD);
				setState(1716);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1715);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1718);
				match(STRING_LITERAL);
				}
				break;
			case 20:
				_localctx = new TableOptionRowFormatContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(1719);
				match(ROW_FORMAT);
				setState(1721);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1720);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1723);
				((TableOptionRowFormatContext)_localctx).rowFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (COMPACT - 307)) | (1L << (COMPRESSED - 307)) | (1L << (DYNAMIC - 307)) | (1L << (FIXED - 307)))) != 0) || _la==REDUNDANT) ) {
					((TableOptionRowFormatContext)_localctx).rowFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 21:
				_localctx = new TableOptionRecalculationContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(1724);
				match(STATS_AUTO_RECALC);
				setState(1726);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1725);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1728);
				((TableOptionRecalculationContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionRecalculationContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 22:
				_localctx = new TableOptionPersistentContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(1729);
				match(STATS_PERSISTENT);
				setState(1731);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1730);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1733);
				((TableOptionPersistentContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionPersistentContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 23:
				_localctx = new TableOptionSamplePageContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(1734);
				match(STATS_SAMPLE_PAGES);
				setState(1736);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1735);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1738);
				decimalLiteral();
				}
				break;
			case 24:
				_localctx = new TableOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(1739);
				match(TABLESPACE);
				setState(1740);
				uid();
				setState(1742);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) {
				case 1:
					{
					setState(1741);
					tablespaceStorage();
					}
					break;
				}
				}
				break;
			case 25:
				_localctx = new TableOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(1744);
				tablespaceStorage();
				}
				break;
			case 26:
				_localctx = new TableOptionUnionContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(1745);
				match(UNION);
				setState(1747);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1746);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1749);
				match(LR_BRACKET);
				setState(1750);
				tables();
				setState(1751);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablespaceStorageContext extends ParserRuleContext {
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TablespaceStorageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablespaceStorage; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTablespaceStorage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTablespaceStorage(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTablespaceStorage(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TablespaceStorageContext tablespaceStorage() throws RecognitionException {
		TablespaceStorageContext _localctx = new TablespaceStorageContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_tablespaceStorage);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1755);
			match(STORAGE);
			setState(1756);
			_la = _input.LA(1);
			if ( !(_la==DEFAULT || _la==DISK || _la==MEMORY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionsContext extends ParserRuleContext {
		public DecimalLiteralContext count;
		public DecimalLiteralContext subCount;
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List<TerminalNode> BY() { return getTokens(MySqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(MySqlParser.BY, i);
		}
		public PartitionFunctionDefinitionContext partitionFunctionDefinition() {
			return getRuleContext(PartitionFunctionDefinitionContext.class,0);
		}
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public SubpartitionFunctionDefinitionContext subpartitionFunctionDefinition() {
			return getRuleContext(SubpartitionFunctionDefinitionContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinitionContext> partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode SUBPARTITIONS() { return getToken(MySqlParser.SUBPARTITIONS, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinitions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinitions(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionDefinitions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinitionsContext partitionDefinitions() throws RecognitionException {
		PartitionDefinitionsContext _localctx = new PartitionDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_partitionDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1758);
			match(PARTITION);
			setState(1759);
			match(BY);
			setState(1760);
			partitionFunctionDefinition();
			setState(1763);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITIONS) {
				{
				setState(1761);
				match(PARTITIONS);
				setState(1762);
				((PartitionDefinitionsContext)_localctx).count = decimalLiteral();
				}
			}

			setState(1772);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SUBPARTITION) {
				{
				setState(1765);
				match(SUBPARTITION);
				setState(1766);
				match(BY);
				setState(1767);
				subpartitionFunctionDefinition();
				setState(1770);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITIONS) {
					{
					setState(1768);
					match(SUBPARTITIONS);
					setState(1769);
					((PartitionDefinitionsContext)_localctx).subCount = decimalLiteral();
					}
				}

				}
			}

			setState(1785);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) {
			case 1:
				{
				setState(1774);
				match(LR_BRACKET);
				setState(1775);
				partitionDefinition();
				setState(1780);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1776);
					match(COMMA);
					setState(1777);
					partitionDefinition();
					}
					}
					setState(1782);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1783);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionFunctionDefinitionContext extends ParserRuleContext {
		public PartitionFunctionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionFunctionDefinition; }
	 
		public PartitionFunctionDefinitionContext() { }
		public void copyFrom(PartitionFunctionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionFunctionKeyContext extends PartitionFunctionDefinitionContext {
		public Token algType;
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public PartitionFunctionKeyContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionFunctionKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionFunctionHashContext extends PartitionFunctionDefinitionContext {
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public PartitionFunctionHashContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionHash(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionHash(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionFunctionHash(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionFunctionListContext extends PartitionFunctionDefinitionContext {
		public TerminalNode LIST() { return getToken(MySqlParser.LIST, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public PartitionFunctionListContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionList(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionFunctionList(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionFunctionRangeContext extends PartitionFunctionDefinitionContext {
		public TerminalNode RANGE() { return getToken(MySqlParser.RANGE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public PartitionFunctionRangeContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionRange(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionRange(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionFunctionRange(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionFunctionDefinitionContext partitionFunctionDefinition() throws RecognitionException {
		PartitionFunctionDefinitionContext _localctx = new PartitionFunctionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_partitionFunctionDefinition);
		int _la;
		try {
			setState(1832);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
			case 1:
				_localctx = new PartitionFunctionHashContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1788);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1787);
					match(LINEAR);
					}
				}

				setState(1790);
				match(HASH);
				setState(1791);
				match(LR_BRACKET);
				setState(1792);
				expression(0);
				setState(1793);
				match(RR_BRACKET);
				}
				break;
			case 2:
				_localctx = new PartitionFunctionKeyContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1796);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1795);
					match(LINEAR);
					}
				}

				setState(1798);
				match(KEY);
				setState(1802);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(1799);
					match(ALGORITHM);
					setState(1800);
					match(EQUAL_SYMBOL);
					setState(1801);
					((PartitionFunctionKeyContext)_localctx).algType = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ONE_DECIMAL || _la==TWO_DECIMAL) ) {
						((PartitionFunctionKeyContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1804);
				match(LR_BRACKET);
				setState(1805);
				uidList();
				setState(1806);
				match(RR_BRACKET);
				}
				break;
			case 3:
				_localctx = new PartitionFunctionRangeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1808);
				match(RANGE);
				setState(1818);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LR_BRACKET:
					{
					setState(1809);
					match(LR_BRACKET);
					setState(1810);
					expression(0);
					setState(1811);
					match(RR_BRACKET);
					}
					break;
				case COLUMNS:
					{
					setState(1813);
					match(COLUMNS);
					setState(1814);
					match(LR_BRACKET);
					setState(1815);
					uidList();
					setState(1816);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				_localctx = new PartitionFunctionListContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1820);
				match(LIST);
				setState(1830);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LR_BRACKET:
					{
					setState(1821);
					match(LR_BRACKET);
					setState(1822);
					expression(0);
					setState(1823);
					match(RR_BRACKET);
					}
					break;
				case COLUMNS:
					{
					setState(1825);
					match(COLUMNS);
					setState(1826);
					match(LR_BRACKET);
					setState(1827);
					uidList();
					setState(1828);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubpartitionFunctionDefinitionContext extends ParserRuleContext {
		public SubpartitionFunctionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subpartitionFunctionDefinition; }
	 
		public SubpartitionFunctionDefinitionContext() { }
		public void copyFrom(SubpartitionFunctionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SubPartitionFunctionHashContext extends SubpartitionFunctionDefinitionContext {
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public SubPartitionFunctionHashContext(SubpartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubPartitionFunctionHash(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubPartitionFunctionHash(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubPartitionFunctionHash(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubPartitionFunctionKeyContext extends SubpartitionFunctionDefinitionContext {
		public Token algType;
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public SubPartitionFunctionKeyContext(SubpartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubPartitionFunctionKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubPartitionFunctionKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubPartitionFunctionKey(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubpartitionFunctionDefinitionContext subpartitionFunctionDefinition() throws RecognitionException {
		SubpartitionFunctionDefinitionContext _localctx = new SubpartitionFunctionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_subpartitionFunctionDefinition);
		int _la;
		try {
			setState(1855);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,212,_ctx) ) {
			case 1:
				_localctx = new SubPartitionFunctionHashContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1835);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1834);
					match(LINEAR);
					}
				}

				setState(1837);
				match(HASH);
				setState(1838);
				match(LR_BRACKET);
				setState(1839);
				expression(0);
				setState(1840);
				match(RR_BRACKET);
				}
				break;
			case 2:
				_localctx = new SubPartitionFunctionKeyContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1843);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1842);
					match(LINEAR);
					}
				}

				setState(1845);
				match(KEY);
				setState(1849);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(1846);
					match(ALGORITHM);
					setState(1847);
					match(EQUAL_SYMBOL);
					setState(1848);
					((SubPartitionFunctionKeyContext)_localctx).algType = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ONE_DECIMAL || _la==TWO_DECIMAL) ) {
						((SubPartitionFunctionKeyContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1851);
				match(LR_BRACKET);
				setState(1852);
				uidList();
				setState(1853);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionContext extends ParserRuleContext {
		public PartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinition; }
	 
		public PartitionDefinitionContext() { }
		public void copyFrom(PartitionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionComparisionContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode LESS() { return getToken(MySqlParser.LESS, 0); }
		public TerminalNode THAN() { return getToken(MySqlParser.THAN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinerAtomContext> partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<PartitionOptionContext> partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List<SubpartitionDefinitionContext> subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionComparisionContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionComparision(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionComparision(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionComparision(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionListAtomContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinerAtomContext> partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<PartitionOptionContext> partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List<SubpartitionDefinitionContext> subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionListAtomContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionListAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionListAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionListAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionListVectorContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinerVectorContext> partitionDefinerVector() {
			return getRuleContexts(PartitionDefinerVectorContext.class);
		}
		public PartitionDefinerVectorContext partitionDefinerVector(int i) {
			return getRuleContext(PartitionDefinerVectorContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<PartitionOptionContext> partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List<SubpartitionDefinitionContext> subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionListVectorContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionListVector(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionListVector(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionListVector(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionSimpleContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<PartitionOptionContext> partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List<SubpartitionDefinitionContext> subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionSimpleContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionSimple(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionSimple(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionSimple(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinitionContext partitionDefinition() throws RecognitionException {
		PartitionDefinitionContext _localctx = new PartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 102, RULE_partitionDefinition);
		int _la;
		try {
			int _alt;
			setState(1988);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) {
			case 1:
				_localctx = new PartitionComparisionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1857);
				match(PARTITION);
				setState(1858);
				uid();
				setState(1859);
				match(VALUES);
				setState(1860);
				match(LESS);
				setState(1861);
				match(THAN);
				setState(1862);
				match(LR_BRACKET);
				setState(1863);
				partitionDefinerAtom();
				setState(1868);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1864);
					match(COMMA);
					setState(1865);
					partitionDefinerAtom();
					}
					}
					setState(1870);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1871);
				match(RR_BRACKET);
				setState(1875);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(1872);
					partitionOption();
					}
					}
					setState(1877);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1886);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITION) {
					{
					setState(1878);
					subpartitionDefinition();
					setState(1883);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,215,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1879);
							match(COMMA);
							setState(1880);
							subpartitionDefinition();
							}
							} 
						}
						setState(1885);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,215,_ctx);
					}
					}
				}

				}
				break;
			case 2:
				_localctx = new PartitionComparisionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1888);
				match(PARTITION);
				setState(1889);
				uid();
				setState(1890);
				match(VALUES);
				setState(1891);
				match(LESS);
				setState(1892);
				match(THAN);
				setState(1893);
				partitionDefinerAtom();
				setState(1897);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(1894);
					partitionOption();
					}
					}
					setState(1899);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1908);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITION) {
					{
					setState(1900);
					subpartitionDefinition();
					setState(1905);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,218,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1901);
							match(COMMA);
							setState(1902);
							subpartitionDefinition();
							}
							} 
						}
						setState(1907);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,218,_ctx);
					}
					}
				}

				}
				break;
			case 3:
				_localctx = new PartitionListAtomContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1910);
				match(PARTITION);
				setState(1911);
				uid();
				setState(1912);
				match(VALUES);
				setState(1913);
				match(IN);
				setState(1914);
				match(LR_BRACKET);
				setState(1915);
				partitionDefinerAtom();
				setState(1920);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1916);
					match(COMMA);
					setState(1917);
					partitionDefinerAtom();
					}
					}
					setState(1922);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1923);
				match(RR_BRACKET);
				setState(1927);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(1924);
					partitionOption();
					}
					}
					setState(1929);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1938);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITION) {
					{
					setState(1930);
					subpartitionDefinition();
					setState(1935);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,222,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1931);
							match(COMMA);
							setState(1932);
							subpartitionDefinition();
							}
							} 
						}
						setState(1937);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,222,_ctx);
					}
					}
				}

				}
				break;
			case 4:
				_localctx = new PartitionListVectorContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1940);
				match(PARTITION);
				setState(1941);
				uid();
				setState(1942);
				match(VALUES);
				setState(1943);
				match(IN);
				setState(1944);
				match(LR_BRACKET);
				setState(1945);
				partitionDefinerVector();
				setState(1950);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1946);
					match(COMMA);
					setState(1947);
					partitionDefinerVector();
					}
					}
					setState(1952);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1953);
				match(RR_BRACKET);
				setState(1957);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(1954);
					partitionOption();
					}
					}
					setState(1959);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1968);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITION) {
					{
					setState(1960);
					subpartitionDefinition();
					setState(1965);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,226,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1961);
							match(COMMA);
							setState(1962);
							subpartitionDefinition();
							}
							} 
						}
						setState(1967);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,226,_ctx);
					}
					}
				}

				}
				break;
			case 5:
				_localctx = new PartitionSimpleContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1970);
				match(PARTITION);
				setState(1971);
				uid();
				setState(1975);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(1972);
					partitionOption();
					}
					}
					setState(1977);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1986);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITION) {
					{
					setState(1978);
					subpartitionDefinition();
					setState(1983);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,229,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1979);
							match(COMMA);
							setState(1980);
							subpartitionDefinition();
							}
							} 
						}
						setState(1985);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,229,_ctx);
					}
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinerAtomContext extends ParserRuleContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode MAXVALUE() { return getToken(MySqlParser.MAXVALUE, 0); }
		public PartitionDefinerAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinerAtom; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinerAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinerAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionDefinerAtom(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinerAtomContext partitionDefinerAtom() throws RecognitionException {
		PartitionDefinerAtomContext _localctx = new PartitionDefinerAtomContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_partitionDefinerAtom);
		try {
			setState(1993);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1990);
				constant();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1991);
				expression(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1992);
				match(MAXVALUE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinerVectorContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinerAtomContext> partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionDefinerVectorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinerVector; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinerVector(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinerVector(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionDefinerVector(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinerVectorContext partitionDefinerVector() throws RecognitionException {
		PartitionDefinerVectorContext _localctx = new PartitionDefinerVectorContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_partitionDefinerVector);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1995);
			match(LR_BRACKET);
			setState(1996);
			partitionDefinerAtom();
			setState(1999); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(1997);
				match(COMMA);
				setState(1998);
				partitionDefinerAtom();
				}
				}
				setState(2001); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==COMMA );
			setState(2003);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubpartitionDefinitionContext extends ParserRuleContext {
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<PartitionOptionContext> partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public SubpartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subpartitionDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubpartitionDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubpartitionDefinition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubpartitionDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubpartitionDefinitionContext subpartitionDefinition() throws RecognitionException {
		SubpartitionDefinitionContext _localctx = new SubpartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_subpartitionDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2005);
			match(SUBPARTITION);
			setState(2006);
			uid();
			setState(2010);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==INDEX || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (COMMENT - 305)) | (1L << (DATA - 305)) | (1L << (ENGINE - 305)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MAX_ROWS - 428)) | (1L << (MIN_ROWS - 428)) | (1L << (NODEGROUP - 428)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
				{
				{
				setState(2007);
				partitionOption();
				}
				}
				setState(2012);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionOptionContext extends ParserRuleContext {
		public PartitionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionOption; }
	 
		public PartitionOptionContext() { }
		public void copyFrom(PartitionOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionOptionCommentContext extends PartitionOptionContext {
		public Token comment;
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionCommentContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionComment(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionComment(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionNodeGroupContext extends PartitionOptionContext {
		public UidContext nodegroup;
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionNodeGroupContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionNodeGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionNodeGroup(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionNodeGroup(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionIndexDirectoryContext extends PartitionOptionContext {
		public Token indexDirectory;
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionIndexDirectoryContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionIndexDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionIndexDirectory(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionIndexDirectory(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionMaxRowsContext extends PartitionOptionContext {
		public DecimalLiteralContext maxRows;
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionMaxRowsContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionMaxRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionMaxRows(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionMaxRows(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionTablespaceContext extends PartitionOptionContext {
		public UidContext tablespace;
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionTablespaceContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionTablespace(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionEngineContext extends PartitionOptionContext {
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionEngineContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionEngine(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionEngine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionMinRowsContext extends PartitionOptionContext {
		public DecimalLiteralContext minRows;
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionMinRowsContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionMinRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionMinRows(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionMinRows(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PartitionOptionDataDirectoryContext extends PartitionOptionContext {
		public Token dataDirectory;
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionDataDirectoryContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionDataDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionDataDirectory(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPartitionOptionDataDirectory(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionOptionContext partitionOption() throws RecognitionException {
		PartitionOptionContext _localctx = new PartitionOptionContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_partitionOption);
		int _la;
		try {
			setState(2058);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENGINE:
			case STORAGE:
				_localctx = new PartitionOptionEngineContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2014);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORAGE) {
					{
					setState(2013);
					match(STORAGE);
					}
				}

				setState(2016);
				match(ENGINE);
				setState(2018);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2017);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2020);
				engineName();
				}
				break;
			case COMMENT:
				_localctx = new PartitionOptionCommentContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2021);
				match(COMMENT);
				setState(2023);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2022);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2025);
				((PartitionOptionCommentContext)_localctx).comment = match(STRING_LITERAL);
				}
				break;
			case DATA:
				_localctx = new PartitionOptionDataDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2026);
				match(DATA);
				setState(2027);
				match(DIRECTORY);
				setState(2029);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2028);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2031);
				((PartitionOptionDataDirectoryContext)_localctx).dataDirectory = match(STRING_LITERAL);
				}
				break;
			case INDEX:
				_localctx = new PartitionOptionIndexDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2032);
				match(INDEX);
				setState(2033);
				match(DIRECTORY);
				setState(2035);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2034);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2037);
				((PartitionOptionIndexDirectoryContext)_localctx).indexDirectory = match(STRING_LITERAL);
				}
				break;
			case MAX_ROWS:
				_localctx = new PartitionOptionMaxRowsContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2038);
				match(MAX_ROWS);
				setState(2040);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2039);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2042);
				((PartitionOptionMaxRowsContext)_localctx).maxRows = decimalLiteral();
				}
				break;
			case MIN_ROWS:
				_localctx = new PartitionOptionMinRowsContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(2043);
				match(MIN_ROWS);
				setState(2045);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2044);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2047);
				((PartitionOptionMinRowsContext)_localctx).minRows = decimalLiteral();
				}
				break;
			case TABLESPACE:
				_localctx = new PartitionOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(2048);
				match(TABLESPACE);
				setState(2050);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2049);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2052);
				((PartitionOptionTablespaceContext)_localctx).tablespace = uid();
				}
				break;
			case NODEGROUP:
				_localctx = new PartitionOptionNodeGroupContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(2053);
				match(NODEGROUP);
				setState(2055);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2054);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2057);
				((PartitionOptionNodeGroupContext)_localctx).nodegroup = uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseContext extends ParserRuleContext {
		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabase; }
	 
		public AlterDatabaseContext() { }
		public void copyFrom(AlterDatabaseContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterUpgradeNameContext extends AlterDatabaseContext {
		public Token dbFormat;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode NAME() { return getToken(MySqlParser.NAME, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public AlterUpgradeNameContext(AlterDatabaseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUpgradeName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUpgradeName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterUpgradeName(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterSimpleDatabaseContext extends AlterDatabaseContext {
		public Token dbFormat;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<CreateDatabaseOptionContext> createDatabaseOption() {
			return getRuleContexts(CreateDatabaseOptionContext.class);
		}
		public CreateDatabaseOptionContext createDatabaseOption(int i) {
			return getRuleContext(CreateDatabaseOptionContext.class,i);
		}
		public AlterSimpleDatabaseContext(AlterDatabaseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterSimpleDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterSimpleDatabase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterSimpleDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
		enterRule(_localctx, 112, RULE_alterDatabase);
		int _la;
		try {
			setState(2078);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) {
			case 1:
				_localctx = new AlterSimpleDatabaseContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2060);
				match(ALTER);
				setState(2061);
				((AlterSimpleDatabaseContext)_localctx).dbFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((AlterSimpleDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2063);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) {
				case 1:
					{
					setState(2062);
					uid();
					}
					break;
				}
				setState(2066); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2065);
					createDatabaseOption();
					}
					}
					setState(2068); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CHARACTER) | (1L << COLLATE) | (1L << DEFAULT))) != 0) || _la==CHARSET );
				}
				break;
			case 2:
				_localctx = new AlterUpgradeNameContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2070);
				match(ALTER);
				setState(2071);
				((AlterUpgradeNameContext)_localctx).dbFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((AlterUpgradeNameContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2072);
				uid();
				setState(2073);
				match(UPGRADE);
				setState(2074);
				match(DATA);
				setState(2075);
				match(DIRECTORY);
				setState(2076);
				match(NAME);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterEventContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public List<FullIdContext> fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List<TerminalNode> ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public EnableTypeContext enableType() {
			return getRuleContext(EnableTypeContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public AlterEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterEvent(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterEventContext alterEvent() throws RecognitionException {
		AlterEventContext _localctx = new AlterEventContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_alterEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2080);
			match(ALTER);
			setState(2082);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2081);
				ownerStatement();
				}
			}

			setState(2084);
			match(EVENT);
			setState(2085);
			fullId();
			setState(2089);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) {
			case 1:
				{
				setState(2086);
				match(ON);
				setState(2087);
				match(SCHEDULE);
				setState(2088);
				scheduleExpression();
				}
				break;
			}
			setState(2097);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(2091);
				match(ON);
				setState(2092);
				match(COMPLETION);
				setState(2094);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2093);
					match(NOT);
					}
				}

				setState(2096);
				match(PRESERVE);
				}
			}

			setState(2102);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,252,_ctx) ) {
			case 1:
				{
				setState(2099);
				match(RENAME);
				setState(2100);
				match(TO);
				setState(2101);
				fullId();
				}
				break;
			}
			setState(2105);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISABLE || _la==ENABLE) {
				{
				setState(2104);
				enableType();
				}
			}

			setState(2109);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(2107);
				match(COMMENT);
				setState(2108);
				match(STRING_LITERAL);
				}
			}

			setState(2113);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,255,_ctx) ) {
			case 1:
				{
				setState(2111);
				match(DO);
				setState(2112);
				routineBody();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterFunctionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List<RoutineOptionContext> routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterFunction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterFunctionContext alterFunction() throws RecognitionException {
		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
		enterRule(_localctx, 116, RULE_alterFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2115);
			match(ALTER);
			setState(2116);
			match(FUNCTION);
			setState(2117);
			fullId();
			setState(2121);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DETERMINISTIC || ((((_la - 100)) & ~0x3f) == 0 && ((1L << (_la - 100)) & ((1L << (MODIFIES - 100)) | (1L << (NOT - 100)) | (1L << (READS - 100)) | (1L << (SQL - 100)))) != 0) || _la==COMMENT || _la==CONTAINS || _la==LANGUAGE || _la==NO) {
				{
				{
				setState(2118);
				routineOption();
				}
				}
				setState(2123);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterInstanceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode INSTANCE() { return getToken(MySqlParser.INSTANCE, 0); }
		public TerminalNode ROTATE() { return getToken(MySqlParser.ROTATE, 0); }
		public TerminalNode INNODB() { return getToken(MySqlParser.INNODB, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterInstanceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterInstance; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterInstance(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterInstance(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterInstance(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterInstanceContext alterInstance() throws RecognitionException {
		AlterInstanceContext _localctx = new AlterInstanceContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_alterInstance);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2124);
			match(ALTER);
			setState(2125);
			match(INSTANCE);
			setState(2126);
			match(ROTATE);
			setState(2127);
			match(INNODB);
			setState(2128);
			match(MASTER);
			setState(2129);
			match(KEY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLogfileGroupContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public AlterLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterLogfileGroup(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterLogfileGroupContext alterLogfileGroup() throws RecognitionException {
		AlterLogfileGroupContext _localctx = new AlterLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_alterLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2131);
			match(ALTER);
			setState(2132);
			match(LOGFILE);
			setState(2133);
			match(GROUP);
			setState(2134);
			uid();
			setState(2135);
			match(ADD);
			setState(2136);
			match(UNDOFILE);
			setState(2137);
			match(STRING_LITERAL);
			setState(2143);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2138);
				match(INITIAL_SIZE);
				setState(2140);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2139);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2142);
				fileSizeLiteral();
				}
			}

			setState(2146);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2145);
				match(WAIT);
				}
			}

			setState(2148);
			match(ENGINE);
			setState(2150);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(2149);
				match(EQUAL_SYMBOL);
				}
			}

			setState(2152);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterProcedureContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List<RoutineOptionContext> routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterProcedure(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterProcedureContext alterProcedure() throws RecognitionException {
		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_alterProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2154);
			match(ALTER);
			setState(2155);
			match(PROCEDURE);
			setState(2156);
			fullId();
			setState(2160);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DETERMINISTIC || ((((_la - 100)) & ~0x3f) == 0 && ((1L << (_la - 100)) & ((1L << (MODIFIES - 100)) | (1L << (NOT - 100)) | (1L << (READS - 100)) | (1L << (SQL - 100)))) != 0) || _la==COMMENT || _la==CONTAINS || _la==LANGUAGE || _la==NO) {
				{
				{
				setState(2157);
				routineOption();
				}
				}
				setState(2162);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterServerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ServerOptionContext> serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterServer(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterServerContext alterServer() throws RecognitionException {
		AlterServerContext _localctx = new AlterServerContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_alterServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2163);
			match(ALTER);
			setState(2164);
			match(SERVER);
			setState(2165);
			uid();
			setState(2166);
			match(OPTIONS);
			setState(2167);
			match(LR_BRACKET);
			setState(2168);
			serverOption();
			setState(2173);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(2169);
				match(COMMA);
				setState(2170);
				serverOption();
				}
				}
				setState(2175);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2176);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableContext extends ParserRuleContext {
		public Token intimeAction;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public List<AlterSpecificationContext> alterSpecification() {
			return getRuleContexts(AlterSpecificationContext.class);
		}
		public AlterSpecificationContext alterSpecification(int i) {
			return getRuleContext(AlterSpecificationContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableContext alterTable() throws RecognitionException {
		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_alterTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2178);
			match(ALTER);
			setState(2180);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OFFLINE || _la==ONLINE) {
				{
				setState(2179);
				((AlterTableContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((AlterTableContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2183);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(2182);
				match(IGNORE);
				}
			}

			setState(2185);
			match(TABLE);
			setState(2186);
			tableName();
			setState(2195);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,266,_ctx) ) {
			case 1:
				{
				setState(2187);
				alterSpecification();
				setState(2192);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2188);
					match(COMMA);
					setState(2189);
					alterSpecification();
					}
					}
					setState(2194);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			setState(2198);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2197);
				partitionDefinitions();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceContext extends ParserRuleContext {
		public Token objectAction;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public AlterTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespace; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablespaceContext alterTablespace() throws RecognitionException {
		AlterTablespaceContext _localctx = new AlterTablespaceContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_alterTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2200);
			match(ALTER);
			setState(2201);
			match(TABLESPACE);
			setState(2202);
			uid();
			setState(2203);
			((AlterTablespaceContext)_localctx).objectAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
				((AlterTablespaceContext)_localctx).objectAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2204);
			match(DATAFILE);
			setState(2205);
			match(STRING_LITERAL);
			setState(2209);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2206);
				match(INITIAL_SIZE);
				setState(2207);
				match(EQUAL_SYMBOL);
				setState(2208);
				fileSizeLiteral();
				}
			}

			setState(2212);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2211);
				match(WAIT);
				}
			}

			setState(2214);
			match(ENGINE);
			setState(2216);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(2215);
				match(EQUAL_SYMBOL);
				}
			}

			setState(2218);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterViewContext extends ParserRuleContext {
		public Token algType;
		public Token secContext;
		public Token checkOpt;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public AlterViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterView(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterViewContext alterView() throws RecognitionException {
		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_alterView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2220);
			match(ALTER);
			setState(2224);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(2221);
				match(ALGORITHM);
				setState(2222);
				match(EQUAL_SYMBOL);
				setState(2223);
				((AlterViewContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
					((AlterViewContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2227);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2226);
				ownerStatement();
				}
			}

			setState(2232);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(2229);
				match(SQL);
				setState(2230);
				match(SECURITY);
				setState(2231);
				((AlterViewContext)_localctx).secContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((AlterViewContext)_localctx).secContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2234);
			match(VIEW);
			setState(2235);
			fullId();
			setState(2240);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(2236);
				match(LR_BRACKET);
				setState(2237);
				uidList();
				setState(2238);
				match(RR_BRACKET);
				}
			}

			setState(2242);
			match(AS);
			setState(2243);
			selectStatement();
			setState(2250);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(2244);
				match(WITH);
				setState(2246);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADED || _la==LOCAL) {
					{
					setState(2245);
					((AlterViewContext)_localctx).checkOpt = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==CASCADED || _la==LOCAL) ) {
						((AlterViewContext)_localctx).checkOpt = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2248);
				match(CHECK);
				setState(2249);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSpecificationContext extends ParserRuleContext {
		public AlterSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSpecification; }
	 
		public AlterSpecificationContext() { }
		public void copyFrom(AlterSpecificationContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterByDisableKeysContext extends AlterSpecificationContext {
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public AlterByDisableKeysContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDisableKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDisableKeys(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDisableKeys(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDefaultCharsetContext extends AlterSpecificationContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public AlterByDefaultCharsetContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDefaultCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDefaultCharset(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDefaultCharset(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRenameColumnContext extends AlterSpecificationContext {
		public UidContext oldColumn;
		public UidContext newColumn;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByRenameColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRenameColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRenameColumn(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRenameColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByConvertCharsetContext extends AlterSpecificationContext {
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public AlterByConvertCharsetContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByConvertCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByConvertCharset(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByConvertCharset(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddPartitionContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinitionContext> partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByAddPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddForeignKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public UidContext indexName;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByAddForeignKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddForeignKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddForeignKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddForeignKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRenameIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByRenameIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRenameIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRenameIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRenameIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRemovePartitioningContext extends AlterSpecificationContext {
		public TerminalNode REMOVE() { return getToken(MySqlParser.REMOVE, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public AlterByRemovePartitioningContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRemovePartitioning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRemovePartitioning(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRemovePartitioning(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRenameContext extends AlterSpecificationContext {
		public Token renameFormat;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public AlterByRenameContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRename(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRename(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRename(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByOptimizePartitionContext extends AlterSpecificationContext {
		public TerminalNode OPTIMIZE() { return getToken(MySqlParser.OPTIMIZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByOptimizePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByOptimizePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByOptimizePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByOptimizePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByImportTablespaceContext extends AlterSpecificationContext {
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public AlterByImportTablespaceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByImportTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByImportTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByImportTablespace(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByCoalescePartitionContext extends AlterSpecificationContext {
		public TerminalNode COALESCE() { return getToken(MySqlParser.COALESCE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public AlterByCoalescePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByCoalescePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByCoalescePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByCoalescePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddColumnsContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List<ColumnDefinitionContext> columnDefinition() {
			return getRuleContexts(ColumnDefinitionContext.class);
		}
		public ColumnDefinitionContext columnDefinition(int i) {
			return getRuleContext(ColumnDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByAddColumnsContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddColumns(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddColumns(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddColumns(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDropForeignKeyContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public AlterByDropForeignKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropForeignKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropForeignKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDropForeignKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddCheckTableConstraintContext extends AlterSpecificationContext {
		public UidContext name;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public AlterByAddCheckTableConstraintContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddCheckTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddCheckTableConstraint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddCheckTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRebuildPartitionContext extends AlterSpecificationContext {
		public TerminalNode REBUILD() { return getToken(MySqlParser.REBUILD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByRebuildPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRebuildPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRebuildPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRebuildPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByUpgradePartitioningContext extends AlterSpecificationContext {
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public AlterByUpgradePartitioningContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByUpgradePartitioning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByUpgradePartitioning(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByUpgradePartitioning(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByRepairPartitionContext extends AlterSpecificationContext {
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByRepairPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRepairPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRepairPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByRepairPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByExchangePartitionContext extends AlterSpecificationContext {
		public Token validationFormat;
		public TerminalNode EXCHANGE() { return getToken(MySqlParser.EXCHANGE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<TerminalNode> WITH() { return getTokens(MySqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(MySqlParser.WITH, i);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public AlterByExchangePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByExchangePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByExchangePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByExchangePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public AlterByAddIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDropColumnContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public AlterByDropColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropColumn(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDropColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByImportPartitionContext extends AlterSpecificationContext {
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByImportPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByImportPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByImportPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByImportPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByChangeDefaultContext extends AlterSpecificationContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public AlterByChangeDefaultContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByChangeDefault(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByChangeDefault(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByChangeDefault(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByForceContext extends AlterSpecificationContext {
		public TerminalNode FORCE() { return getToken(MySqlParser.FORCE, 0); }
		public AlterByForceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByForce(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByForce(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByForce(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDropPartitionContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public AlterByDropPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDropPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddSpecialIndexContext extends AlterSpecificationContext {
		public Token keyType;
		public Token indexFormat;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByAddSpecialIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddSpecialIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddSpecialIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddSpecialIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByModifyColumnContext extends AlterSpecificationContext {
		public TerminalNode MODIFY() { return getToken(MySqlParser.MODIFY, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByModifyColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByModifyColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByModifyColumn(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByModifyColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByTableOptionContext extends AlterSpecificationContext {
		public List<TableOptionContext> tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByTableOptionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByTableOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByTableOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDropPrimaryKeyContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByDropPrimaryKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropPrimaryKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropPrimaryKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDropPrimaryKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByLockContext extends AlterSpecificationContext {
		public Token lockType;
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode SHARED() { return getToken(MySqlParser.SHARED, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(MySqlParser.EXCLUSIVE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public AlterByLockContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByLock(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByLock(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByLock(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDiscardPartitionContext extends AlterSpecificationContext {
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByDiscardPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDiscardPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDiscardPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDiscardPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDiscardTablespaceContext extends AlterSpecificationContext {
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public AlterByDiscardTablespaceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDiscardTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDiscardTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDiscardTablespace(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByValidateContext extends AlterSpecificationContext {
		public Token validationFormat;
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public AlterByValidateContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByValidate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByValidate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByValidate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddPrimaryKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByAddPrimaryKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddPrimaryKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddPrimaryKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddPrimaryKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByCheckPartitionContext extends AlterSpecificationContext {
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByCheckPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByCheckPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByCheckPartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByCheckPartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByEnableKeysContext extends AlterSpecificationContext {
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public AlterByEnableKeysContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByEnableKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByEnableKeys(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByEnableKeys(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByReorganizePartitionContext extends AlterSpecificationContext {
		public TerminalNode REORGANIZE() { return getToken(MySqlParser.REORGANIZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<PartitionDefinitionContext> partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByReorganizePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByReorganizePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByReorganizePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByReorganizePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterBySetAlgorithmContext extends AlterSpecificationContext {
		public Token algType;
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode INPLACE() { return getToken(MySqlParser.INPLACE, 0); }
		public TerminalNode COPY() { return getToken(MySqlParser.COPY, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public AlterBySetAlgorithmContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterBySetAlgorithm(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterBySetAlgorithm(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterBySetAlgorithm(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAnalyzePartitionContext extends AlterSpecificationContext {
		public TerminalNode ANALYZE() { return getToken(MySqlParser.ANALYZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByAnalyzePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAnalyzePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAnalyzePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAnalyzePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByChangeColumnContext extends AlterSpecificationContext {
		public UidContext oldColumn;
		public UidContext newColumn;
		public UidContext afterColumn;
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByChangeColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByChangeColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByChangeColumn(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByChangeColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddUniqueKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public Token indexFormat;
		public UidContext indexName;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List<IndexOptionContext> indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByAddUniqueKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddUniqueKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddUniqueKey(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddUniqueKey(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByTruncatePartitionContext extends AlterSpecificationContext {
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByTruncatePartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByTruncatePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByTruncatePartition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByTruncatePartition(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByDropIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByDropIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByDropIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByAddColumnContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByAddColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddColumn(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByAddColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterByOrderContext extends AlterSpecificationContext {
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public AlterByOrderContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByOrder(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByOrder(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterByOrder(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterSpecificationContext alterSpecification() throws RecognitionException {
		AlterSpecificationContext _localctx = new AlterSpecificationContext(_ctx, getState());
		enterRule(_localctx, 132, RULE_alterSpecification);
		int _la;
		try {
			int _alt;
			setState(2610);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,331,_ctx) ) {
			case 1:
				_localctx = new AlterByTableOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2252);
				tableOption();
				setState(2259);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,278,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2254);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2253);
							match(COMMA);
							}
						}

						setState(2256);
						tableOption();
						}
						} 
					}
					setState(2261);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,278,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new AlterByAddColumnContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2262);
				match(ADD);
				setState(2264);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2263);
					match(COLUMN);
					}
				}

				setState(2266);
				uid();
				setState(2267);
				columnDefinition();
				setState(2271);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2268);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2269);
					match(AFTER);
					setState(2270);
					uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case UNLOCK:
				case UPDATE:
				case USE:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUSMINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 3:
				_localctx = new AlterByAddColumnsContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2273);
				match(ADD);
				setState(2275);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2274);
					match(COLUMN);
					}
				}

				setState(2277);
				match(LR_BRACKET);
				setState(2278);
				uid();
				setState(2279);
				columnDefinition();
				setState(2286);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2280);
					match(COMMA);
					setState(2281);
					uid();
					setState(2282);
					columnDefinition();
					}
					}
					setState(2288);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2289);
				match(RR_BRACKET);
				}
				break;
			case 4:
				_localctx = new AlterByAddIndexContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2291);
				match(ADD);
				setState(2292);
				((AlterByAddIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByAddIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2294);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2293);
					uid();
					}
				}

				setState(2297);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2296);
					indexType();
					}
				}

				setState(2299);
				indexColumnNames();
				setState(2303);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(2300);
					indexOption();
					}
					}
					setState(2305);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 5:
				_localctx = new AlterByAddPrimaryKeyContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2306);
				match(ADD);
				setState(2311);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2307);
					match(CONSTRAINT);
					setState(2309);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(2308);
						((AlterByAddPrimaryKeyContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2313);
				match(PRIMARY);
				setState(2314);
				match(KEY);
				setState(2316);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2315);
					((AlterByAddPrimaryKeyContext)_localctx).index = uid();
					}
				}

				setState(2319);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2318);
					indexType();
					}
				}

				setState(2321);
				indexColumnNames();
				setState(2325);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(2322);
					indexOption();
					}
					}
					setState(2327);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 6:
				_localctx = new AlterByAddUniqueKeyContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(2328);
				match(ADD);
				setState(2333);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2329);
					match(CONSTRAINT);
					setState(2331);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(2330);
						((AlterByAddUniqueKeyContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2335);
				match(UNIQUE);
				setState(2337);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(2336);
					((AlterByAddUniqueKeyContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((AlterByAddUniqueKeyContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2340);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2339);
					((AlterByAddUniqueKeyContext)_localctx).indexName = uid();
					}
				}

				setState(2343);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2342);
					indexType();
					}
				}

				setState(2345);
				indexColumnNames();
				setState(2349);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(2346);
					indexOption();
					}
					}
					setState(2351);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 7:
				_localctx = new AlterByAddSpecialIndexContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(2352);
				match(ADD);
				setState(2353);
				((AlterByAddSpecialIndexContext)_localctx).keyType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL) ) {
					((AlterByAddSpecialIndexContext)_localctx).keyType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2355);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(2354);
					((AlterByAddSpecialIndexContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((AlterByAddSpecialIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2358);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2357);
					uid();
					}
				}

				setState(2360);
				indexColumnNames();
				setState(2364);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==USING || _la==WITH || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE) {
					{
					{
					setState(2361);
					indexOption();
					}
					}
					setState(2366);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 8:
				_localctx = new AlterByAddForeignKeyContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(2367);
				match(ADD);
				setState(2372);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2368);
					match(CONSTRAINT);
					setState(2370);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(2369);
						((AlterByAddForeignKeyContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2374);
				match(FOREIGN);
				setState(2375);
				match(KEY);
				setState(2377);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2376);
					((AlterByAddForeignKeyContext)_localctx).indexName = uid();
					}
				}

				setState(2379);
				indexColumnNames();
				setState(2380);
				referenceDefinition();
				}
				break;
			case 9:
				_localctx = new AlterByAddCheckTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(2382);
				match(ADD);
				setState(2387);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2383);
					match(CONSTRAINT);
					setState(2385);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
						{
						setState(2384);
						((AlterByAddCheckTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2389);
				match(CHECK);
				setState(2390);
				match(LR_BRACKET);
				setState(2391);
				expression(0);
				setState(2392);
				match(RR_BRACKET);
				}
				break;
			case 10:
				_localctx = new AlterBySetAlgorithmContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(2394);
				match(ALGORITHM);
				setState(2396);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2395);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2398);
				((AlterBySetAlgorithmContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE) ) {
					((AlterBySetAlgorithmContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 11:
				_localctx = new AlterByChangeDefaultContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(2399);
				match(ALTER);
				setState(2401);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2400);
					match(COLUMN);
					}
				}

				setState(2403);
				uid();
				setState(2409);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SET:
					{
					setState(2404);
					match(SET);
					setState(2405);
					match(DEFAULT);
					setState(2406);
					defaultValue();
					}
					break;
				case DROP:
					{
					setState(2407);
					match(DROP);
					setState(2408);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 12:
				_localctx = new AlterByChangeColumnContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(2411);
				match(CHANGE);
				setState(2413);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2412);
					match(COLUMN);
					}
				}

				setState(2415);
				((AlterByChangeColumnContext)_localctx).oldColumn = uid();
				setState(2416);
				((AlterByChangeColumnContext)_localctx).newColumn = uid();
				setState(2417);
				columnDefinition();
				setState(2421);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2418);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2419);
					match(AFTER);
					setState(2420);
					((AlterByChangeColumnContext)_localctx).afterColumn = uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case UNLOCK:
				case UPDATE:
				case USE:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUSMINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 13:
				_localctx = new AlterByRenameColumnContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(2423);
				match(RENAME);
				setState(2424);
				match(COLUMN);
				setState(2425);
				((AlterByRenameColumnContext)_localctx).oldColumn = uid();
				setState(2426);
				match(TO);
				setState(2427);
				((AlterByRenameColumnContext)_localctx).newColumn = uid();
				}
				break;
			case 14:
				_localctx = new AlterByLockContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(2429);
				match(LOCK);
				setState(2431);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2430);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2433);
				((AlterByLockContext)_localctx).lockType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
					((AlterByLockContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 15:
				_localctx = new AlterByModifyColumnContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(2434);
				match(MODIFY);
				setState(2436);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2435);
					match(COLUMN);
					}
				}

				setState(2438);
				uid();
				setState(2439);
				columnDefinition();
				setState(2443);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2440);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2441);
					match(AFTER);
					setState(2442);
					uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case UNLOCK:
				case UPDATE:
				case USE:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUSMINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 16:
				_localctx = new AlterByDropColumnContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(2445);
				match(DROP);
				setState(2447);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2446);
					match(COLUMN);
					}
				}

				setState(2449);
				uid();
				setState(2451);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RESTRICT) {
					{
					setState(2450);
					match(RESTRICT);
					}
				}

				}
				break;
			case 17:
				_localctx = new AlterByDropPrimaryKeyContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(2453);
				match(DROP);
				setState(2454);
				match(PRIMARY);
				setState(2455);
				match(KEY);
				}
				break;
			case 18:
				_localctx = new AlterByRenameIndexContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(2456);
				match(RENAME);
				setState(2457);
				((AlterByRenameIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByRenameIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2458);
				uid();
				setState(2459);
				match(TO);
				setState(2460);
				uid();
				}
				break;
			case 19:
				_localctx = new AlterByDropIndexContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(2462);
				match(DROP);
				setState(2463);
				((AlterByDropIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByDropIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2464);
				uid();
				}
				break;
			case 20:
				_localctx = new AlterByDropForeignKeyContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(2465);
				match(DROP);
				setState(2466);
				match(FOREIGN);
				setState(2467);
				match(KEY);
				setState(2468);
				uid();
				}
				break;
			case 21:
				_localctx = new AlterByDisableKeysContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(2469);
				match(DISABLE);
				setState(2470);
				match(KEYS);
				}
				break;
			case 22:
				_localctx = new AlterByEnableKeysContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(2471);
				match(ENABLE);
				setState(2472);
				match(KEYS);
				}
				break;
			case 23:
				_localctx = new AlterByRenameContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(2473);
				match(RENAME);
				setState(2475);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS || _la==TO) {
					{
					setState(2474);
					((AlterByRenameContext)_localctx).renameFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==AS || _la==TO) ) {
						((AlterByRenameContext)_localctx).renameFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2479);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,316,_ctx) ) {
				case 1:
					{
					setState(2477);
					uid();
					}
					break;
				case 2:
					{
					setState(2478);
					fullId();
					}
					break;
				}
				}
				break;
			case 24:
				_localctx = new AlterByOrderContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(2481);
				match(ORDER);
				setState(2482);
				match(BY);
				setState(2483);
				uidList();
				}
				break;
			case 25:
				_localctx = new AlterByConvertCharsetContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(2484);
				match(CONVERT);
				setState(2485);
				match(TO);
				setState(2486);
				match(CHARACTER);
				setState(2487);
				match(SET);
				setState(2488);
				charsetName();
				setState(2491);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(2489);
					match(COLLATE);
					setState(2490);
					collationName();
					}
				}

				}
				break;
			case 26:
				_localctx = new AlterByDefaultCharsetContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(2494);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(2493);
					match(DEFAULT);
					}
				}

				setState(2496);
				match(CHARACTER);
				setState(2497);
				match(SET);
				setState(2498);
				match(EQUAL_SYMBOL);
				setState(2499);
				charsetName();
				setState(2503);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(2500);
					match(COLLATE);
					setState(2501);
					match(EQUAL_SYMBOL);
					setState(2502);
					collationName();
					}
				}

				}
				break;
			case 27:
				_localctx = new AlterByDiscardTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 27);
				{
				setState(2505);
				match(DISCARD);
				setState(2506);
				match(TABLESPACE);
				}
				break;
			case 28:
				_localctx = new AlterByImportTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 28);
				{
				setState(2507);
				match(IMPORT);
				setState(2508);
				match(TABLESPACE);
				}
				break;
			case 29:
				_localctx = new AlterByForceContext(_localctx);
				enterOuterAlt(_localctx, 29);
				{
				setState(2509);
				match(FORCE);
				}
				break;
			case 30:
				_localctx = new AlterByValidateContext(_localctx);
				enterOuterAlt(_localctx, 30);
				{
				setState(2510);
				((AlterByValidateContext)_localctx).validationFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==WITH || _la==WITHOUT) ) {
					((AlterByValidateContext)_localctx).validationFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2511);
				match(VALIDATION);
				}
				break;
			case 31:
				_localctx = new AlterByAddPartitionContext(_localctx);
				enterOuterAlt(_localctx, 31);
				{
				setState(2512);
				match(ADD);
				setState(2513);
				match(PARTITION);
				setState(2514);
				match(LR_BRACKET);
				setState(2515);
				partitionDefinition();
				setState(2520);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2516);
					match(COMMA);
					setState(2517);
					partitionDefinition();
					}
					}
					setState(2522);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2523);
				match(RR_BRACKET);
				}
				break;
			case 32:
				_localctx = new AlterByDropPartitionContext(_localctx);
				enterOuterAlt(_localctx, 32);
				{
				setState(2525);
				match(DROP);
				setState(2526);
				match(PARTITION);
				setState(2527);
				uidList();
				}
				break;
			case 33:
				_localctx = new AlterByDiscardPartitionContext(_localctx);
				enterOuterAlt(_localctx, 33);
				{
				setState(2528);
				match(DISCARD);
				setState(2529);
				match(PARTITION);
				setState(2532);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2530);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2531);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2534);
				match(TABLESPACE);
				}
				break;
			case 34:
				_localctx = new AlterByImportPartitionContext(_localctx);
				enterOuterAlt(_localctx, 34);
				{
				setState(2535);
				match(IMPORT);
				setState(2536);
				match(PARTITION);
				setState(2539);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2537);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2538);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2541);
				match(TABLESPACE);
				}
				break;
			case 35:
				_localctx = new AlterByTruncatePartitionContext(_localctx);
				enterOuterAlt(_localctx, 35);
				{
				setState(2542);
				match(TRUNCATE);
				setState(2543);
				match(PARTITION);
				setState(2546);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2544);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2545);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 36:
				_localctx = new AlterByCoalescePartitionContext(_localctx);
				enterOuterAlt(_localctx, 36);
				{
				setState(2548);
				match(COALESCE);
				setState(2549);
				match(PARTITION);
				setState(2550);
				decimalLiteral();
				}
				break;
			case 37:
				_localctx = new AlterByReorganizePartitionContext(_localctx);
				enterOuterAlt(_localctx, 37);
				{
				setState(2551);
				match(REORGANIZE);
				setState(2552);
				match(PARTITION);
				setState(2553);
				uidList();
				setState(2554);
				match(INTO);
				setState(2555);
				match(LR_BRACKET);
				setState(2556);
				partitionDefinition();
				setState(2561);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2557);
					match(COMMA);
					setState(2558);
					partitionDefinition();
					}
					}
					setState(2563);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2564);
				match(RR_BRACKET);
				}
				break;
			case 38:
				_localctx = new AlterByExchangePartitionContext(_localctx);
				enterOuterAlt(_localctx, 38);
				{
				setState(2566);
				match(EXCHANGE);
				setState(2567);
				match(PARTITION);
				setState(2568);
				uid();
				setState(2569);
				match(WITH);
				setState(2570);
				match(TABLE);
				setState(2571);
				tableName();
				setState(2574);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH || _la==WITHOUT) {
					{
					setState(2572);
					((AlterByExchangePartitionContext)_localctx).validationFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==WITH || _la==WITHOUT) ) {
						((AlterByExchangePartitionContext)_localctx).validationFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(2573);
					match(VALIDATION);
					}
				}

				}
				break;
			case 39:
				_localctx = new AlterByAnalyzePartitionContext(_localctx);
				enterOuterAlt(_localctx, 39);
				{
				setState(2576);
				match(ANALYZE);
				setState(2577);
				match(PARTITION);
				setState(2580);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2578);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2579);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 40:
				_localctx = new AlterByCheckPartitionContext(_localctx);
				enterOuterAlt(_localctx, 40);
				{
				setState(2582);
				match(CHECK);
				setState(2583);
				match(PARTITION);
				setState(2586);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2584);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2585);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 41:
				_localctx = new AlterByOptimizePartitionContext(_localctx);
				enterOuterAlt(_localctx, 41);
				{
				setState(2588);
				match(OPTIMIZE);
				setState(2589);
				match(PARTITION);
				setState(2592);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2590);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2591);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 42:
				_localctx = new AlterByRebuildPartitionContext(_localctx);
				enterOuterAlt(_localctx, 42);
				{
				setState(2594);
				match(REBUILD);
				setState(2595);
				match(PARTITION);
				setState(2598);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2596);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2597);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 43:
				_localctx = new AlterByRepairPartitionContext(_localctx);
				enterOuterAlt(_localctx, 43);
				{
				setState(2600);
				match(REPAIR);
				setState(2601);
				match(PARTITION);
				setState(2604);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(2602);
					uidList();
					}
					break;
				case ALL:
					{
					setState(2603);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 44:
				_localctx = new AlterByRemovePartitioningContext(_localctx);
				enterOuterAlt(_localctx, 44);
				{
				setState(2606);
				match(REMOVE);
				setState(2607);
				match(PARTITIONING);
				}
				break;
			case 45:
				_localctx = new AlterByUpgradePartitioningContext(_localctx);
				enterOuterAlt(_localctx, 45);
				{
				setState(2608);
				match(UPGRADE);
				setState(2609);
				match(PARTITIONING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDatabaseContext extends ParserRuleContext {
		public Token dbFormat;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDatabase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropDatabase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDatabaseContext dropDatabase() throws RecognitionException {
		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
		enterRule(_localctx, 134, RULE_dropDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2612);
			match(DROP);
			setState(2613);
			((DropDatabaseContext)_localctx).dbFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
				((DropDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2615);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2614);
				ifExists();
				}
			}

			setState(2617);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropEventContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropEvent(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropEventContext dropEvent() throws RecognitionException {
		DropEventContext _localctx = new DropEventContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_dropEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2619);
			match(DROP);
			setState(2620);
			match(EVENT);
			setState(2622);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2621);
				ifExists();
				}
			}

			setState(2624);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropIndexContext extends ParserRuleContext {
		public Token intimeAction;
		public Token algType;
		public Token lockType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public List<TerminalNode> ALGORITHM() { return getTokens(MySqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(MySqlParser.ALGORITHM, i);
		}
		public List<TerminalNode> LOCK() { return getTokens(MySqlParser.LOCK); }
		public TerminalNode LOCK(int i) {
			return getToken(MySqlParser.LOCK, i);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public List<TerminalNode> DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public List<TerminalNode> INPLACE() { return getTokens(MySqlParser.INPLACE); }
		public TerminalNode INPLACE(int i) {
			return getToken(MySqlParser.INPLACE, i);
		}
		public List<TerminalNode> COPY() { return getTokens(MySqlParser.COPY); }
		public TerminalNode COPY(int i) {
			return getToken(MySqlParser.COPY, i);
		}
		public List<TerminalNode> NONE() { return getTokens(MySqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(MySqlParser.NONE, i);
		}
		public List<TerminalNode> SHARED() { return getTokens(MySqlParser.SHARED); }
		public TerminalNode SHARED(int i) {
			return getToken(MySqlParser.SHARED, i);
		}
		public List<TerminalNode> EXCLUSIVE() { return getTokens(MySqlParser.EXCLUSIVE); }
		public TerminalNode EXCLUSIVE(int i) {
			return getToken(MySqlParser.EXCLUSIVE, i);
		}
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public DropIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropIndex; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropIndex(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropIndexContext dropIndex() throws RecognitionException {
		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_dropIndex);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2626);
			match(DROP);
			setState(2627);
			match(INDEX);
			setState(2629);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) {
			case 1:
				{
				setState(2628);
				((DropIndexContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((DropIndexContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(2631);
			uid();
			setState(2632);
			match(ON);
			setState(2633);
			tableName();
			setState(2646);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,338,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(2644);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALGORITHM:
						{
						setState(2634);
						match(ALGORITHM);
						setState(2636);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(2635);
							match(EQUAL_SYMBOL);
							}
						}

						setState(2638);
						((DropIndexContext)_localctx).algType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE) ) {
							((DropIndexContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case LOCK:
						{
						setState(2639);
						match(LOCK);
						setState(2641);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(2640);
							match(EQUAL_SYMBOL);
							}
						}

						setState(2643);
						((DropIndexContext)_localctx).lockType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
							((DropIndexContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(2648);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,338,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropLogfileGroupContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public DropLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropLogfileGroup(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropLogfileGroupContext dropLogfileGroup() throws RecognitionException {
		DropLogfileGroupContext _localctx = new DropLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_dropLogfileGroup);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2649);
			match(DROP);
			setState(2650);
			match(LOGFILE);
			setState(2651);
			match(GROUP);
			setState(2652);
			uid();
			setState(2653);
			match(ENGINE);
			setState(2654);
			match(EQUAL_SYMBOL);
			setState(2655);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropProcedureContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropProcedure(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropProcedureContext dropProcedure() throws RecognitionException {
		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_dropProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2657);
			match(DROP);
			setState(2658);
			match(PROCEDURE);
			setState(2660);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2659);
				ifExists();
				}
			}

			setState(2662);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropFunctionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropFunction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropFunctionContext dropFunction() throws RecognitionException {
		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_dropFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2664);
			match(DROP);
			setState(2665);
			match(FUNCTION);
			setState(2667);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2666);
				ifExists();
				}
			}

			setState(2669);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropServerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropServer(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropServerContext dropServer() throws RecognitionException {
		DropServerContext _localctx = new DropServerContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_dropServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2671);
			match(DROP);
			setState(2672);
			match(SERVER);
			setState(2674);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2673);
				ifExists();
				}
			}

			setState(2676);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTableContext extends ParserRuleContext {
		public Token dropType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public DropTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTableContext dropTable() throws RecognitionException {
		DropTableContext _localctx = new DropTableContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_dropTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2678);
			match(DROP);
			setState(2680);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(2679);
				match(TEMPORARY);
				}
			}

			setState(2682);
			match(TABLE);
			setState(2684);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2683);
				ifExists();
				}
			}

			setState(2686);
			tables();
			setState(2688);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(2687);
				((DropTableContext)_localctx).dropType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
					((DropTableContext)_localctx).dropType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTablespaceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public DropTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTablespace; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTablespace(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTablespaceContext dropTablespace() throws RecognitionException {
		DropTablespaceContext _localctx = new DropTablespaceContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_dropTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2690);
			match(DROP);
			setState(2691);
			match(TABLESPACE);
			setState(2692);
			uid();
			setState(2698);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2693);
				match(ENGINE);
				setState(2695);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2694);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2697);
				engineName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTriggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTrigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTrigger(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTriggerContext dropTrigger() throws RecognitionException {
		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_dropTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2700);
			match(DROP);
			setState(2701);
			match(TRIGGER);
			setState(2703);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2702);
				ifExists();
				}
			}

			setState(2705);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropViewContext extends ParserRuleContext {
		public Token dropType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public List<FullIdContext> fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public DropViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropView(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropViewContext dropView() throws RecognitionException {
		DropViewContext _localctx = new DropViewContext(_ctx, getState());
		enterRule(_localctx, 154, RULE_dropView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2707);
			match(DROP);
			setState(2708);
			match(VIEW);
			setState(2710);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2709);
				ifExists();
				}
			}

			setState(2712);
			fullId();
			setState(2717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(2713);
				match(COMMA);
				setState(2714);
				fullId();
				}
				}
				setState(2719);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2721);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(2720);
				((DropViewContext)_localctx).dropType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
					((DropViewContext)_localctx).dropType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public List<RenameTableClauseContext> renameTableClause() {
			return getRuleContexts(RenameTableClauseContext.class);
		}
		public RenameTableClauseContext renameTableClause(int i) {
			return getRuleContext(RenameTableClauseContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RenameTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRenameTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameTableContext renameTable() throws RecognitionException {
		RenameTableContext _localctx = new RenameTableContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_renameTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2723);
			match(RENAME);
			setState(2724);
			match(TABLE);
			setState(2725);
			renameTableClause();
			setState(2730);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(2726);
				match(COMMA);
				setState(2727);
				renameTableClause();
				}
				}
				setState(2732);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableClauseContext extends ParserRuleContext {
		public List<TableNameContext> tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public RenameTableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTableClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameTableClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameTableClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRenameTableClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameTableClauseContext renameTableClause() throws RecognitionException {
		RenameTableClauseContext _localctx = new RenameTableClauseContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_renameTableClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2733);
			tableName();
			setState(2734);
			match(TO);
			setState(2735);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TruncateTableContext extends ParserRuleContext {
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_truncateTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTruncateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTruncateTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTruncateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TruncateTableContext truncateTable() throws RecognitionException {
		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_truncateTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2737);
			match(TRUNCATE);
			setState(2739);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLE) {
				{
				setState(2738);
				match(TABLE);
				}
			}

			setState(2741);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CallStatementContext extends ParserRuleContext {
		public TerminalNode CALL() { return getToken(MySqlParser.CALL, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ConstantsContext constants() {
			return getRuleContext(ConstantsContext.class,0);
		}
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public CallStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_callStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCallStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCallStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCallStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CallStatementContext callStatement() throws RecognitionException {
		CallStatementContext _localctx = new CallStatementContext(_ctx, getState());
		enterRule(_localctx, 162, RULE_callStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2743);
			match(CALL);
			setState(2744);
			fullId();
			setState(2751);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,354,_ctx) ) {
			case 1:
				{
				setState(2745);
				match(LR_BRACKET);
				setState(2748);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) {
				case 1:
					{
					setState(2746);
					constants();
					}
					break;
				case 2:
					{
					setState(2747);
					expressions();
					}
					break;
				}
				setState(2750);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeleteStatementContext extends ParserRuleContext {
		public SingleDeleteStatementContext singleDeleteStatement() {
			return getRuleContext(SingleDeleteStatementContext.class,0);
		}
		public MultipleDeleteStatementContext multipleDeleteStatement() {
			return getRuleContext(MultipleDeleteStatementContext.class,0);
		}
		public DeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeleteStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeleteStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeleteStatementContext deleteStatement() throws RecognitionException {
		DeleteStatementContext _localctx = new DeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 164, RULE_deleteStatement);
		try {
			setState(2755);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,355,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2753);
				singleDeleteStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2754);
				multipleDeleteStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DoStatementContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public DoStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDoStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DoStatementContext doStatement() throws RecognitionException {
		DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
		enterRule(_localctx, 166, RULE_doStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2757);
			match(DO);
			setState(2758);
			expressions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerStatementContext extends ParserRuleContext {
		public HandlerOpenStatementContext handlerOpenStatement() {
			return getRuleContext(HandlerOpenStatementContext.class,0);
		}
		public HandlerReadIndexStatementContext handlerReadIndexStatement() {
			return getRuleContext(HandlerReadIndexStatementContext.class,0);
		}
		public HandlerReadStatementContext handlerReadStatement() {
			return getRuleContext(HandlerReadStatementContext.class,0);
		}
		public HandlerCloseStatementContext handlerCloseStatement() {
			return getRuleContext(HandlerCloseStatementContext.class,0);
		}
		public HandlerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerStatementContext handlerStatement() throws RecognitionException {
		HandlerStatementContext _localctx = new HandlerStatementContext(_ctx, getState());
		enterRule(_localctx, 168, RULE_handlerStatement);
		try {
			setState(2764);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,356,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2760);
				handlerOpenStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2761);
				handlerReadIndexStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2762);
				handlerReadStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2763);
				handlerCloseStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertStatementContext extends ParserRuleContext {
		public Token priority;
		public UidListContext partitions;
		public UidListContext columns;
		public UpdatedElementContext setFirst;
		public UpdatedElementContext updatedElement;
		public List<UpdatedElementContext> setElements = new ArrayList<UpdatedElementContext>();
		public UpdatedElementContext duplicatedFirst;
		public List<UpdatedElementContext> duplicatedElements = new ArrayList<UpdatedElementContext>();
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InsertStatementValueContext insertStatementValue() {
			return getRuleContext(InsertStatementValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySqlParser.DUPLICATE, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySqlParser.DELAYED, 0); }
		public TerminalNode HIGH_PRIORITY() { return getToken(MySqlParser.HIGH_PRIORITY, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List<UidListContext> uidList() {
			return getRuleContexts(UidListContext.class);
		}
		public UidListContext uidList(int i) {
			return getRuleContext(UidListContext.class,i);
		}
		public InsertStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInsertStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInsertStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInsertStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertStatementContext insertStatement() throws RecognitionException {
		InsertStatementContext _localctx = new InsertStatementContext(_ctx, getState());
		enterRule(_localctx, 170, RULE_insertStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2766);
			match(INSERT);
			setState(2768);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 39)) & ~0x3f) == 0 && ((1L << (_la - 39)) & ((1L << (DELAYED - 39)) | (1L << (HIGH_PRIORITY - 39)) | (1L << (LOW_PRIORITY - 39)))) != 0)) {
				{
				setState(2767);
				((InsertStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 39)) & ~0x3f) == 0 && ((1L << (_la - 39)) & ((1L << (DELAYED - 39)) | (1L << (HIGH_PRIORITY - 39)) | (1L << (LOW_PRIORITY - 39)))) != 0)) ) {
					((InsertStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2771);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(2770);
				match(IGNORE);
				}
			}

			setState(2774);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(2773);
				match(INTO);
				}
			}

			setState(2776);
			tableName();
			setState(2783);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2777);
				match(PARTITION);
				setState(2778);
				match(LR_BRACKET);
				setState(2780);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(2779);
					((InsertStatementContext)_localctx).partitions = uidList();
					}
				}

				setState(2782);
				match(RR_BRACKET);
				}
			}

			setState(2801);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case VALUES:
			case VALUE:
			case LR_BRACKET:
				{
				setState(2789);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,362,_ctx) ) {
				case 1:
					{
					setState(2785);
					match(LR_BRACKET);
					setState(2786);
					((InsertStatementContext)_localctx).columns = uidList();
					setState(2787);
					match(RR_BRACKET);
					}
					break;
				}
				setState(2791);
				insertStatementValue();
				}
				break;
			case SET:
				{
				setState(2792);
				match(SET);
				setState(2793);
				((InsertStatementContext)_localctx).setFirst = updatedElement();
				setState(2798);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2794);
					match(COMMA);
					setState(2795);
					((InsertStatementContext)_localctx).updatedElement = updatedElement();
					((InsertStatementContext)_localctx).setElements.add(((InsertStatementContext)_localctx).updatedElement);
					}
					}
					setState(2800);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(2815);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(2803);
				match(ON);
				setState(2804);
				match(DUPLICATE);
				setState(2805);
				match(KEY);
				setState(2806);
				match(UPDATE);
				setState(2807);
				((InsertStatementContext)_localctx).duplicatedFirst = updatedElement();
				setState(2812);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2808);
					match(COMMA);
					setState(2809);
					((InsertStatementContext)_localctx).updatedElement = updatedElement();
					((InsertStatementContext)_localctx).duplicatedElements.add(((InsertStatementContext)_localctx).updatedElement);
					}
					}
					setState(2814);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadDataStatementContext extends ParserRuleContext {
		public Token priority;
		public Token filename;
		public Token violation;
		public CharsetNameContext charset;
		public Token fieldsFormat;
		public Token linesFormat;
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode INFILE() { return getToken(MySqlParser.INFILE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public List<TerminalNode> SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public List<TerminalNode> LINES() { return getTokens(MySqlParser.LINES); }
		public TerminalNode LINES(int i) {
			return getToken(MySqlParser.LINES, i);
		}
		public List<TerminalNode> IGNORE() { return getTokens(MySqlParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySqlParser.IGNORE, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public List<AssignmentFieldContext> assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode ROWS() { return getToken(MySqlParser.ROWS, 0); }
		public List<SelectFieldsIntoContext> selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List<SelectLinesIntoContext> selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadDataStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadDataStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadDataStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadDataStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLoadDataStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadDataStatementContext loadDataStatement() throws RecognitionException {
		LoadDataStatementContext _localctx = new LoadDataStatementContext(_ctx, getState());
		enterRule(_localctx, 172, RULE_loadDataStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2817);
			match(LOAD);
			setState(2818);
			match(DATA);
			setState(2820);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY || _la==CONCURRENT) {
				{
				setState(2819);
				((LoadDataStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LOW_PRIORITY || _la==CONCURRENT) ) {
					((LoadDataStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2823);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(2822);
				match(LOCAL);
				}
			}

			setState(2825);
			match(INFILE);
			setState(2826);
			((LoadDataStatementContext)_localctx).filename = match(STRING_LITERAL);
			setState(2828);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(2827);
				((LoadDataStatementContext)_localctx).violation = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
					((LoadDataStatementContext)_localctx).violation = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2830);
			match(INTO);
			setState(2831);
			match(TABLE);
			setState(2832);
			tableName();
			setState(2838);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2833);
				match(PARTITION);
				setState(2834);
				match(LR_BRACKET);
				setState(2835);
				uidList();
				setState(2836);
				match(RR_BRACKET);
				}
			}

			setState(2843);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(2840);
				match(CHARACTER);
				setState(2841);
				match(SET);
				setState(2842);
				((LoadDataStatementContext)_localctx).charset = charsetName();
				}
			}

			setState(2851);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMNS || _la==FIELDS) {
				{
				setState(2845);
				((LoadDataStatementContext)_localctx).fieldsFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==COLUMNS || _la==FIELDS) ) {
					((LoadDataStatementContext)_localctx).fieldsFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2847); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2846);
					selectFieldsInto();
					}
					}
					setState(2849); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==ENCLOSED || _la==ESCAPED || _la==OPTIONALLY || _la==TERMINATED );
				}
			}

			setState(2859);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LINES) {
				{
				setState(2853);
				match(LINES);
				setState(2855); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2854);
					selectLinesInto();
					}
					}
					setState(2857); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==STARTING || _la==TERMINATED );
				}
			}

			setState(2865);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(2861);
				match(IGNORE);
				setState(2862);
				decimalLiteral();
				setState(2863);
				((LoadDataStatementContext)_localctx).linesFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
					((LoadDataStatementContext)_localctx).linesFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2878);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,378,_ctx) ) {
			case 1:
				{
				setState(2867);
				match(LR_BRACKET);
				setState(2868);
				assignmentField();
				setState(2873);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2869);
					match(COMMA);
					setState(2870);
					assignmentField();
					}
					}
					setState(2875);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2876);
				match(RR_BRACKET);
				}
				break;
			}
			setState(2889);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) {
			case 1:
				{
				setState(2880);
				match(SET);
				setState(2881);
				updatedElement();
				setState(2886);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2882);
					match(COMMA);
					setState(2883);
					updatedElement();
					}
					}
					setState(2888);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadXmlStatementContext extends ParserRuleContext {
		public Token priority;
		public Token filename;
		public Token violation;
		public CharsetNameContext charset;
		public Token tag;
		public Token linesFormat;
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode XML() { return getToken(MySqlParser.XML, 0); }
		public TerminalNode INFILE() { return getToken(MySqlParser.INFILE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public List<TerminalNode> SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public List<TerminalNode> ROWS() { return getTokens(MySqlParser.ROWS); }
		public TerminalNode ROWS(int i) {
			return getToken(MySqlParser.ROWS, i);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode LESS_SYMBOL() { return getToken(MySqlParser.LESS_SYMBOL, 0); }
		public TerminalNode GREATER_SYMBOL() { return getToken(MySqlParser.GREATER_SYMBOL, 0); }
		public List<TerminalNode> IGNORE() { return getTokens(MySqlParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySqlParser.IGNORE, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<AssignmentFieldContext> assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode LINES() { return getToken(MySqlParser.LINES, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadXmlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadXmlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadXmlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadXmlStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLoadXmlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadXmlStatementContext loadXmlStatement() throws RecognitionException {
		LoadXmlStatementContext _localctx = new LoadXmlStatementContext(_ctx, getState());
		enterRule(_localctx, 174, RULE_loadXmlStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2891);
			match(LOAD);
			setState(2892);
			match(XML);
			setState(2894);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY || _la==CONCURRENT) {
				{
				setState(2893);
				((LoadXmlStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LOW_PRIORITY || _la==CONCURRENT) ) {
					((LoadXmlStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2897);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(2896);
				match(LOCAL);
				}
			}

			setState(2899);
			match(INFILE);
			setState(2900);
			((LoadXmlStatementContext)_localctx).filename = match(STRING_LITERAL);
			setState(2902);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(2901);
				((LoadXmlStatementContext)_localctx).violation = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
					((LoadXmlStatementContext)_localctx).violation = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2904);
			match(INTO);
			setState(2905);
			match(TABLE);
			setState(2906);
			tableName();
			setState(2910);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(2907);
				match(CHARACTER);
				setState(2908);
				match(SET);
				setState(2909);
				((LoadXmlStatementContext)_localctx).charset = charsetName();
				}
			}

			setState(2918);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROWS) {
				{
				setState(2912);
				match(ROWS);
				setState(2913);
				match(IDENTIFIED);
				setState(2914);
				match(BY);
				setState(2915);
				match(LESS_SYMBOL);
				setState(2916);
				((LoadXmlStatementContext)_localctx).tag = match(STRING_LITERAL);
				setState(2917);
				match(GREATER_SYMBOL);
				}
			}

			setState(2924);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(2920);
				match(IGNORE);
				setState(2921);
				decimalLiteral();
				setState(2922);
				((LoadXmlStatementContext)_localctx).linesFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
					((LoadXmlStatementContext)_localctx).linesFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2937);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,388,_ctx) ) {
			case 1:
				{
				setState(2926);
				match(LR_BRACKET);
				setState(2927);
				assignmentField();
				setState(2932);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2928);
					match(COMMA);
					setState(2929);
					assignmentField();
					}
					}
					setState(2934);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2935);
				match(RR_BRACKET);
				}
				break;
			}
			setState(2948);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,390,_ctx) ) {
			case 1:
				{
				setState(2939);
				match(SET);
				setState(2940);
				updatedElement();
				setState(2945);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2941);
					match(COMMA);
					setState(2942);
					updatedElement();
					}
					}
					setState(2947);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceStatementContext extends ParserRuleContext {
		public Token priority;
		public UidListContext partitions;
		public UidListContext columns;
		public UpdatedElementContext setFirst;
		public UpdatedElementContext updatedElement;
		public List<UpdatedElementContext> setElements = new ArrayList<UpdatedElementContext>();
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InsertStatementValueContext insertStatementValue() {
			return getRuleContext(InsertStatementValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public List<UidListContext> uidList() {
			return getRuleContexts(UidListContext.class);
		}
		public UidListContext uidList(int i) {
			return getRuleContext(UidListContext.class,i);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySqlParser.DELAYED, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ReplaceStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replaceStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReplaceStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReplaceStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReplaceStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplaceStatementContext replaceStatement() throws RecognitionException {
		ReplaceStatementContext _localctx = new ReplaceStatementContext(_ctx, getState());
		enterRule(_localctx, 176, RULE_replaceStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2950);
			match(REPLACE);
			setState(2952);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DELAYED || _la==LOW_PRIORITY) {
				{
				setState(2951);
				((ReplaceStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DELAYED || _la==LOW_PRIORITY) ) {
					((ReplaceStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2955);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(2954);
				match(INTO);
				}
			}

			setState(2957);
			tableName();
			setState(2963);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2958);
				match(PARTITION);
				setState(2959);
				match(LR_BRACKET);
				setState(2960);
				((ReplaceStatementContext)_localctx).partitions = uidList();
				setState(2961);
				match(RR_BRACKET);
				}
			}

			setState(2981);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case VALUES:
			case VALUE:
			case LR_BRACKET:
				{
				setState(2969);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,394,_ctx) ) {
				case 1:
					{
					setState(2965);
					match(LR_BRACKET);
					setState(2966);
					((ReplaceStatementContext)_localctx).columns = uidList();
					setState(2967);
					match(RR_BRACKET);
					}
					break;
				}
				setState(2971);
				insertStatementValue();
				}
				break;
			case SET:
				{
				setState(2972);
				match(SET);
				setState(2973);
				((ReplaceStatementContext)_localctx).setFirst = updatedElement();
				setState(2978);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2974);
					match(COMMA);
					setState(2975);
					((ReplaceStatementContext)_localctx).updatedElement = updatedElement();
					((ReplaceStatementContext)_localctx).setElements.add(((ReplaceStatementContext)_localctx).updatedElement);
					}
					}
					setState(2980);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectStatementContext extends ParserRuleContext {
		public SelectStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectStatement; }
	 
		public SelectStatementContext() { }
		public void copyFrom(SelectStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UnionSelectContext extends SelectStatementContext {
		public Token unionType;
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public List<UnionStatementContext> unionStatement() {
			return getRuleContexts(UnionStatementContext.class);
		}
		public UnionStatementContext unionStatement(int i) {
			return getRuleContext(UnionStatementContext.class,i);
		}
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionSelect(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnionSelect(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class UnionParenthesisSelectContext extends SelectStatementContext {
		public Token unionType;
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public List<UnionParenthesisContext> unionParenthesis() {
			return getRuleContexts(UnionParenthesisContext.class);
		}
		public UnionParenthesisContext unionParenthesis(int i) {
			return getRuleContext(UnionParenthesisContext.class,i);
		}
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionParenthesisSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionParenthesisSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionParenthesisSelect(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnionParenthesisSelect(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SimpleSelectContext extends SelectStatementContext {
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public SimpleSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleSelect(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleSelect(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ParenthesisSelectContext extends SelectStatementContext {
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public ParenthesisSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterParenthesisSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitParenthesisSelect(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitParenthesisSelect(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectStatementContext selectStatement() throws RecognitionException {
		SelectStatementContext _localctx = new SelectStatementContext(_ctx, getState());
		enterRule(_localctx, 178, RULE_selectStatement);
		int _la;
		try {
			int _alt;
			setState(3038);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,412,_ctx) ) {
			case 1:
				_localctx = new SimpleSelectContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2983);
				querySpecification();
				setState(2985);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,397,_ctx) ) {
				case 1:
					{
					setState(2984);
					lockClause();
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new ParenthesisSelectContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2987);
				queryExpression();
				setState(2989);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,398,_ctx) ) {
				case 1:
					{
					setState(2988);
					lockClause();
					}
					break;
				}
				}
				break;
			case 3:
				_localctx = new UnionSelectContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2991);
				querySpecificationNointo();
				setState(2993); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(2992);
						unionStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(2995); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,399,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				setState(3005);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNION) {
					{
					setState(2997);
					match(UNION);
					setState(2999);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALL || _la==DISTINCT) {
						{
						setState(2998);
						((UnionSelectContext)_localctx).unionType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==DISTINCT) ) {
							((UnionSelectContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(3003);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case SELECT:
						{
						setState(3001);
						querySpecification();
						}
						break;
					case LR_BRACKET:
						{
						setState(3002);
						queryExpression();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(3008);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3007);
					orderByClause();
					}
				}

				setState(3011);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(3010);
					limitClause();
					}
				}

				setState(3014);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,405,_ctx) ) {
				case 1:
					{
					setState(3013);
					lockClause();
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new UnionParenthesisSelectContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3016);
				queryExpressionNointo();
				setState(3018); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3017);
						unionParenthesis();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3020); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,406,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				setState(3027);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNION) {
					{
					setState(3022);
					match(UNION);
					setState(3024);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALL || _la==DISTINCT) {
						{
						setState(3023);
						((UnionParenthesisSelectContext)_localctx).unionType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==DISTINCT) ) {
							((UnionParenthesisSelectContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(3026);
					queryExpression();
					}
				}

				setState(3030);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(3029);
					orderByClause();
					}
				}

				setState(3033);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(3032);
					limitClause();
					}
				}

				setState(3036);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,411,_ctx) ) {
				case 1:
					{
					setState(3035);
					lockClause();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdateStatementContext extends ParserRuleContext {
		public SingleUpdateStatementContext singleUpdateStatement() {
			return getRuleContext(SingleUpdateStatementContext.class,0);
		}
		public MultipleUpdateStatementContext multipleUpdateStatement() {
			return getRuleContext(MultipleUpdateStatementContext.class,0);
		}
		public UpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_updateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUpdateStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUpdateStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UpdateStatementContext updateStatement() throws RecognitionException {
		UpdateStatementContext _localctx = new UpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 180, RULE_updateStatement);
		try {
			setState(3042);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,413,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3040);
				singleUpdateStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3041);
				multipleUpdateStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertStatementValueContext extends ParserRuleContext {
		public Token insertFormat;
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public List<ExpressionsWithDefaultsContext> expressionsWithDefaults() {
			return getRuleContexts(ExpressionsWithDefaultsContext.class);
		}
		public ExpressionsWithDefaultsContext expressionsWithDefaults(int i) {
			return getRuleContext(ExpressionsWithDefaultsContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public InsertStatementValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertStatementValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInsertStatementValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInsertStatementValue(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInsertStatementValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertStatementValueContext insertStatementValue() throws RecognitionException {
		InsertStatementValueContext _localctx = new InsertStatementValueContext(_ctx, getState());
		enterRule(_localctx, 182, RULE_insertStatementValue);
		int _la;
		try {
			setState(3062);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case LR_BRACKET:
				enterOuterAlt(_localctx, 1);
				{
				setState(3044);
				selectStatement();
				}
				break;
			case VALUES:
			case VALUE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3045);
				((InsertStatementValueContext)_localctx).insertFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==VALUES || _la==VALUE) ) {
					((InsertStatementValueContext)_localctx).insertFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3046);
				match(LR_BRACKET);
				setState(3048);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CAST) | (1L << CONVERT) | (1L << CURRENT) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EXISTS) | (1L << FALSE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (IF - 69)) | (1L << (INSERT - 69)) | (1L << (INTERVAL - 69)) | (1L << (LEFT - 69)) | (1L << (NOT - 69)) | (1L << (NULL_LITERAL - 69)) | (1L << (NUMBER - 69)) | (1L << (REPLACE - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (RIGHT - 133)) | (1L << (STACKED - 133)) | (1L << (TRUE - 133)) | (1L << (VALUES - 133)))) != 0) || ((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (DATETIME - 199)) | (1L << (YEAR - 199)) | (1L << (CHAR - 199)) | (1L << (BINARY - 199)) | (1L << (TEXT - 199)) | (1L << (ENUM - 199)) | (1L << (SERIAL - 199)) | (1L << (AVG - 199)) | (1L << (BIT_AND - 199)) | (1L << (BIT_OR - 199)) | (1L << (BIT_XOR - 199)) | (1L << (COUNT - 199)) | (1L << (GROUP_CONCAT - 199)) | (1L << (MAX - 199)) | (1L << (MIN - 199)) | (1L << (STD - 199)) | (1L << (STDDEV - 199)) | (1L << (STDDEV_POP - 199)) | (1L << (STDDEV_SAMP - 199)) | (1L << (SUM - 199)) | (1L << (VAR_POP - 199)) | (1L << (VAR_SAMP - 199)) | (1L << (VARIANCE - 199)) | (1L << (CURRENT_DATE - 199)) | (1L << (CURRENT_TIME - 199)) | (1L << (CURRENT_TIMESTAMP - 199)) | (1L << (LOCALTIME - 199)) | (1L << (CURDATE - 199)) | (1L << (CURTIME - 199)) | (1L << (DATE_ADD - 199)) | (1L << (DATE_SUB - 199)) | (1L << (EXTRACT - 199)) | (1L << (LOCALTIMESTAMP - 199)) | (1L << (NOW - 199)) | (1L << (POSITION - 199)))) != 0) || ((((_la - 263)) & ~0x3f) == 0 && ((1L << (_la - 263)) & ((1L << (SUBSTR - 263)) | (1L << (SUBSTRING - 263)) | (1L << (SYSDATE - 263)) | (1L << (TRIM - 263)) | (1L << (UTC_DATE - 263)) | (1L << (UTC_TIME - 263)) | (1L << (UTC_TIMESTAMP - 263)) | (1L << (ACCOUNT - 263)) | (1L << (ACTION - 263)) | (1L << (AFTER - 263)) | (1L << (AGGREGATE - 263)) | (1L << (ALGORITHM - 263)) | (1L << (ANY - 263)) | (1L << (AT - 263)) | (1L << (AUTHORS - 263)) | (1L << (AUTOCOMMIT - 263)) | (1L << (AUTOEXTEND_SIZE - 263)) | (1L << (AUTO_INCREMENT - 263)) | (1L << (AVG_ROW_LENGTH - 263)) | (1L << (BEGIN - 263)) | (1L << (BINLOG - 263)) | (1L << (BIT - 263)) | (1L << (BLOCK - 263)) | (1L << (BOOL - 263)) | (1L << (BOOLEAN - 263)) | (1L << (BTREE - 263)) | (1L << (CACHE - 263)) | (1L << (CASCADED - 263)) | (1L << (CHAIN - 263)) | (1L << (CHANGED - 263)) | (1L << (CHANNEL - 263)) | (1L << (CHECKSUM - 263)) | (1L << (PAGE_CHECKSUM - 263)) | (1L << (CIPHER - 263)) | (1L << (CLASS_ORIGIN - 263)) | (1L << (CLIENT - 263)) | (1L << (CLOSE - 263)) | (1L << (COALESCE - 263)) | (1L << (CODE - 263)) | (1L << (COLUMNS - 263)) | (1L << (COLUMN_FORMAT - 263)) | (1L << (COLUMN_NAME - 263)) | (1L << (COMMENT - 263)) | (1L << (COMMIT - 263)) | (1L << (COMPACT - 263)) | (1L << (COMPLETION - 263)) | (1L << (COMPRESSED - 263)) | (1L << (COMPRESSION - 263)) | (1L << (CONCURRENT - 263)) | (1L << (CONNECTION - 263)) | (1L << (CONSISTENT - 263)) | (1L << (CONSTRAINT_CATALOG - 263)) | (1L << (CONSTRAINT_SCHEMA - 263)) | (1L << (CONSTRAINT_NAME - 263)) | (1L << (CONTAINS - 263)) | (1L << (CONTEXT - 263)) | (1L << (CONTRIBUTORS - 263)) | (1L << (COPY - 263)) | (1L << (CPU - 263)) | (1L << (CURSOR_NAME - 263)) | (1L << (DATA - 263)) | (1L << (DATAFILE - 263)) | (1L << (DEALLOCATE - 263)) | (1L << (DEFAULT_AUTH - 263)))) != 0) || ((((_la - 327)) & ~0x3f) == 0 && ((1L << (_la - 327)) & ((1L << (DEFINER - 327)) | (1L << (DELAY_KEY_WRITE - 327)) | (1L << (DES_KEY_FILE - 327)) | (1L << (DIRECTORY - 327)) | (1L << (DISABLE - 327)) | (1L << (DISCARD - 327)) | (1L << (DISK - 327)) | (1L << (DO - 327)) | (1L << (DUMPFILE - 327)) | (1L << (DUPLICATE - 327)) | (1L << (DYNAMIC - 327)) | (1L << (ENABLE - 327)) | (1L << (ENCRYPTION - 327)) | (1L << (END - 327)) | (1L << (ENDS - 327)) | (1L << (ENGINE - 327)) | (1L << (ENGINES - 327)) | (1L << (ERROR - 327)) | (1L << (ERRORS - 327)) | (1L << (ESCAPE - 327)) | (1L << (EVEN - 327)) | (1L << (EVENT - 327)) | (1L << (EVENTS - 327)) | (1L << (EVERY - 327)) | (1L << (EXCHANGE - 327)) | (1L << (EXCLUSIVE - 327)) | (1L << (EXPIRE - 327)) | (1L << (EXPORT - 327)) | (1L << (EXTENDED - 327)) | (1L << (EXTENT_SIZE - 327)) | (1L << (FAST - 327)) | (1L << (FAULTS - 327)) | (1L << (FIELDS - 327)) | (1L << (FILE_BLOCK_SIZE - 327)) | (1L << (FILTER - 327)) | (1L << (FIRST - 327)) | (1L << (FIXED - 327)) | (1L << (FLUSH - 327)) | (1L << (FOLLOWS - 327)) | (1L << (FOUND - 327)) | (1L << (FULL - 327)) | (1L << (FUNCTION - 327)) | (1L << (GENERAL - 327)) | (1L << (GLOBAL - 327)) | (1L << (GRANTS - 327)) | (1L << (GROUP_REPLICATION - 327)) | (1L << (HANDLER - 327)) | (1L << (HASH - 327)) | (1L << (HELP - 327)) | (1L << (HOST - 327)) | (1L << (HOSTS - 327)) | (1L << (IDENTIFIED - 327)) | (1L << (IGNORE_SERVER_IDS - 327)) | (1L << (IMPORT - 327)) | (1L << (INDEXES - 327)) | (1L << (INITIAL_SIZE - 327)) | (1L << (INPLACE - 327)) | (1L << (INSERT_METHOD - 327)) | (1L << (INSTALL - 327)) | (1L << (INSTANCE - 327)) | (1L << (INVISIBLE - 327)) | (1L << (INVOKER - 327)) | (1L << (IO - 327)) | (1L << (IO_THREAD - 327)))) != 0) || ((((_la - 391)) & ~0x3f) == 0 && ((1L << (_la - 391)) & ((1L << (IPC - 391)) | (1L << (ISOLATION - 391)) | (1L << (ISSUER - 391)) | (1L << (JSON - 391)) | (1L << (KEY_BLOCK_SIZE - 391)) | (1L << (LANGUAGE - 391)) | (1L << (LAST - 391)) | (1L << (LEAVES - 391)) | (1L << (LESS - 391)) | (1L << (LEVEL - 391)) | (1L << (LIST - 391)) | (1L << (LOCAL - 391)) | (1L << (LOGFILE - 391)) | (1L << (LOGS - 391)) | (1L << (MASTER - 391)) | (1L << (MASTER_AUTO_POSITION - 391)) | (1L << (MASTER_CONNECT_RETRY - 391)) | (1L << (MASTER_DELAY - 391)) | (1L << (MASTER_HEARTBEAT_PERIOD - 391)) | (1L << (MASTER_HOST - 391)) | (1L << (MASTER_LOG_FILE - 391)) | (1L << (MASTER_LOG_POS - 391)) | (1L << (MASTER_PASSWORD - 391)) | (1L << (MASTER_PORT - 391)) | (1L << (MASTER_RETRY_COUNT - 391)) | (1L << (MASTER_SSL - 391)) | (1L << (MASTER_SSL_CA - 391)) | (1L << (MASTER_SSL_CAPATH - 391)) | (1L << (MASTER_SSL_CERT - 391)) | (1L << (MASTER_SSL_CIPHER - 391)) | (1L << (MASTER_SSL_CRL - 391)) | (1L << (MASTER_SSL_CRLPATH - 391)) | (1L << (MASTER_SSL_KEY - 391)) | (1L << (MASTER_TLS_VERSION - 391)) | (1L << (MASTER_USER - 391)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 391)) | (1L << (MAX_QUERIES_PER_HOUR - 391)) | (1L << (MAX_ROWS - 391)) | (1L << (MAX_SIZE - 391)) | (1L << (MAX_UPDATES_PER_HOUR - 391)) | (1L << (MAX_USER_CONNECTIONS - 391)) | (1L << (MEDIUM - 391)) | (1L << (MERGE - 391)) | (1L << (MESSAGE_TEXT - 391)) | (1L << (MID - 391)) | (1L << (MIGRATE - 391)) | (1L << (MIN_ROWS - 391)) | (1L << (MODE - 391)) | (1L << (MODIFY - 391)) | (1L << (MUTEX - 391)) | (1L << (MYSQL - 391)) | (1L << (MYSQL_ERRNO - 391)) | (1L << (NAME - 391)) | (1L << (NAMES - 391)) | (1L << (NCHAR - 391)) | (1L << (NEVER - 391)) | (1L << (NEXT - 391)) | (1L << (NO - 391)) | (1L << (NODEGROUP - 391)) | (1L << (NONE - 391)) | (1L << (OFFLINE - 391)) | (1L << (OFFSET - 391)))) != 0) || ((((_la - 455)) & ~0x3f) == 0 && ((1L << (_la - 455)) & ((1L << (OJ - 455)) | (1L << (OLD_PASSWORD - 455)) | (1L << (ONE - 455)) | (1L << (ONLINE - 455)) | (1L << (ONLY - 455)) | (1L << (OPEN - 455)) | (1L << (OPTIMIZER_COSTS - 455)) | (1L << (OPTIONS - 455)) | (1L << (OWNER - 455)) | (1L << (PACK_KEYS - 455)) | (1L << (PAGE - 455)) | (1L << (PARSER - 455)) | (1L << (PARTIAL - 455)) | (1L << (PARTITIONING - 455)) | (1L << (PARTITIONS - 455)) | (1L << (PASSWORD - 455)) | (1L << (PHASE - 455)) | (1L << (PLUGIN - 455)) | (1L << (PLUGIN_DIR - 455)) | (1L << (PLUGINS - 455)) | (1L << (PORT - 455)) | (1L << (PRECEDES - 455)) | (1L << (PREPARE - 455)) | (1L << (PRESERVE - 455)) | (1L << (PREV - 455)) | (1L << (PROCESSLIST - 455)) | (1L << (PROFILE - 455)) | (1L << (PROFILES - 455)) | (1L << (PROXY - 455)) | (1L << (QUERY - 455)) | (1L << (QUICK - 455)) | (1L << (REBUILD - 455)) | (1L << (RECOVER - 455)) | (1L << (REDO_BUFFER_SIZE - 455)) | (1L << (REDUNDANT - 455)) | (1L << (RELAY - 455)) | (1L << (RELAY_LOG_FILE - 455)) | (1L << (RELAY_LOG_POS - 455)) | (1L << (RELAYLOG - 455)) | (1L << (REMOVE - 455)) | (1L << (REORGANIZE - 455)) | (1L << (REPAIR - 455)) | (1L << (REPLICATE_DO_DB - 455)) | (1L << (REPLICATE_DO_TABLE - 455)) | (1L << (REPLICATE_IGNORE_DB - 455)) | (1L << (REPLICATE_IGNORE_TABLE - 455)) | (1L << (REPLICATE_REWRITE_DB - 455)) | (1L << (REPLICATE_WILD_DO_TABLE - 455)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 455)) | (1L << (REPLICATION - 455)) | (1L << (RESET - 455)) | (1L << (RESUME - 455)) | (1L << (RETURNED_SQLSTATE - 455)) | (1L << (RETURNS - 455)) | (1L << (ROLLBACK - 455)) | (1L << (ROLLUP - 455)) | (1L << (ROTATE - 455)) | (1L << (ROW - 455)) | (1L << (ROWS - 455)) | (1L << (ROW_FORMAT - 455)) | (1L << (SAVEPOINT - 455)) | (1L << (SCHEDULE - 455)) | (1L << (SECURITY - 455)))) != 0) || ((((_la - 519)) & ~0x3f) == 0 && ((1L << (_la - 519)) & ((1L << (SERVER - 519)) | (1L << (SESSION - 519)) | (1L << (SHARE - 519)) | (1L << (SHARED - 519)) | (1L << (SIGNED - 519)) | (1L << (SIMPLE - 519)) | (1L << (SLAVE - 519)) | (1L << (SLOW - 519)) | (1L << (SNAPSHOT - 519)) | (1L << (SOCKET - 519)) | (1L << (SOME - 519)) | (1L << (SONAME - 519)) | (1L << (SOUNDS - 519)) | (1L << (SOURCE - 519)) | (1L << (SQL_AFTER_GTIDS - 519)) | (1L << (SQL_AFTER_MTS_GAPS - 519)) | (1L << (SQL_BEFORE_GTIDS - 519)) | (1L << (SQL_BUFFER_RESULT - 519)) | (1L << (SQL_CACHE - 519)) | (1L << (SQL_NO_CACHE - 519)) | (1L << (SQL_THREAD - 519)) | (1L << (START - 519)) | (1L << (STARTS - 519)) | (1L << (STATS_AUTO_RECALC - 519)) | (1L << (STATS_PERSISTENT - 519)) | (1L << (STATS_SAMPLE_PAGES - 519)) | (1L << (STATUS - 519)) | (1L << (STOP - 519)) | (1L << (STORAGE - 519)) | (1L << (STRING - 519)) | (1L << (SUBCLASS_ORIGIN - 519)) | (1L << (SUBJECT - 519)) | (1L << (SUBPARTITION - 519)) | (1L << (SUBPARTITIONS - 519)) | (1L << (SUSPEND - 519)) | (1L << (SWAPS - 519)) | (1L << (SWITCHES - 519)) | (1L << (TABLE_NAME - 519)) | (1L << (TABLESPACE - 519)) | (1L << (TEMPORARY - 519)) | (1L << (TEMPTABLE - 519)) | (1L << (THAN - 519)) | (1L << (TRADITIONAL - 519)) | (1L << (TRANSACTION - 519)) | (1L << (TRIGGERS - 519)) | (1L << (TRUNCATE - 519)) | (1L << (UNDEFINED - 519)) | (1L << (UNDOFILE - 519)) | (1L << (UNDO_BUFFER_SIZE - 519)) | (1L << (UNINSTALL - 519)) | (1L << (UNKNOWN - 519)) | (1L << (UNTIL - 519)) | (1L << (UPGRADE - 519)) | (1L << (USER - 519)) | (1L << (USE_FRM - 519)) | (1L << (USER_RESOURCES - 519)) | (1L << (VALIDATION - 519)) | (1L << (VALUE - 519)) | (1L << (VARIABLES - 519)) | (1L << (VIEW - 519)) | (1L << (VISIBLE - 519)))) != 0) || ((((_la - 583)) & ~0x3f) == 0 && ((1L << (_la - 583)) & ((1L << (WAIT - 583)) | (1L << (WARNINGS - 583)) | (1L << (WITHOUT - 583)) | (1L << (WORK - 583)) | (1L << (WRAPPER - 583)) | (1L << (X509 - 583)) | (1L << (XA - 583)) | (1L << (XML - 583)) | (1L << (INTERNAL - 583)) | (1L << (QUARTER - 583)) | (1L << (MONTH - 583)) | (1L << (DAY - 583)) | (1L << (HOUR - 583)) | (1L << (MINUTE - 583)) | (1L << (WEEK - 583)) | (1L << (SECOND - 583)) | (1L << (MICROSECOND - 583)) | (1L << (TABLES - 583)) | (1L << (ROUTINE - 583)) | (1L << (EXECUTE - 583)) | (1L << (FILE - 583)) | (1L << (PROCESS - 583)) | (1L << (RELOAD - 583)) | (1L << (SHUTDOWN - 583)) | (1L << (SUPER - 583)) | (1L << (PRIVILEGES - 583)) | (1L << (SESSION_VARIABLES_ADMIN - 583)) | (1L << (ARMSCII8 - 583)) | (1L << (ASCII - 583)) | (1L << (BIG5 - 583)) | (1L << (CP1250 - 583)) | (1L << (CP1251 - 583)) | (1L << (CP1256 - 583)) | (1L << (CP1257 - 583)) | (1L << (CP850 - 583)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (CP852 - 647)) | (1L << (CP866 - 647)) | (1L << (CP932 - 647)) | (1L << (DEC8 - 647)) | (1L << (EUCJPMS - 647)) | (1L << (EUCKR - 647)) | (1L << (GB2312 - 647)) | (1L << (GBK - 647)) | (1L << (GEOSTD8 - 647)) | (1L << (GREEK - 647)) | (1L << (HEBREW - 647)) | (1L << (HP8 - 647)) | (1L << (KEYBCS2 - 647)) | (1L << (KOI8R - 647)) | (1L << (KOI8U - 647)) | (1L << (LATIN1 - 647)) | (1L << (LATIN2 - 647)) | (1L << (LATIN5 - 647)) | (1L << (LATIN7 - 647)) | (1L << (MACCE - 647)) | (1L << (MACROMAN - 647)) | (1L << (SJIS - 647)) | (1L << (SWE7 - 647)) | (1L << (TIS620 - 647)) | (1L << (UCS2 - 647)) | (1L << (UJIS - 647)) | (1L << (UTF16 - 647)) | (1L << (UTF16LE - 647)) | (1L << (UTF32 - 647)) | (1L << (UTF8 - 647)) | (1L << (UTF8MB3 - 647)) | (1L << (UTF8MB4 - 647)) | (1L << (ARCHIVE - 647)) | (1L << (BLACKHOLE - 647)) | (1L << (CSV - 647)) | (1L << (FEDERATED - 647)) | (1L << (INNODB - 647)) | (1L << (MEMORY - 647)) | (1L << (MRG_MYISAM - 647)) | (1L << (MYISAM - 647)) | (1L << (NDB - 647)) | (1L << (NDBCLUSTER - 647)) | (1L << (PERFORMANCE_SCHEMA - 647)) | (1L << (TOKUDB - 647)) | (1L << (REPEATABLE - 647)) | (1L << (COMMITTED - 647)) | (1L << (UNCOMMITTED - 647)) | (1L << (SERIALIZABLE - 647)) | (1L << (GEOMETRYCOLLECTION - 647)) | (1L << (LINESTRING - 647)) | (1L << (MULTILINESTRING - 647)) | (1L << (MULTIPOINT - 647)) | (1L << (MULTIPOLYGON - 647)) | (1L << (POINT - 647)) | (1L << (POLYGON - 647)) | (1L << (ABS - 647)) | (1L << (ACOS - 647)) | (1L << (ADDDATE - 647)) | (1L << (ADDTIME - 647)) | (1L << (AES_DECRYPT - 647)) | (1L << (AES_ENCRYPT - 647)) | (1L << (AREA - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (ASBINARY - 711)) | (1L << (ASIN - 711)) | (1L << (ASTEXT - 711)) | (1L << (ASWKB - 711)) | (1L << (ASWKT - 711)) | (1L << (ASYMMETRIC_DECRYPT - 711)) | (1L << (ASYMMETRIC_DERIVE - 711)) | (1L << (ASYMMETRIC_ENCRYPT - 711)) | (1L << (ASYMMETRIC_SIGN - 711)) | (1L << (ASYMMETRIC_VERIFY - 711)) | (1L << (ATAN - 711)) | (1L << (ATAN2 - 711)) | (1L << (BENCHMARK - 711)) | (1L << (BIN - 711)) | (1L << (BIT_COUNT - 711)) | (1L << (BIT_LENGTH - 711)) | (1L << (BUFFER - 711)) | (1L << (CATALOG_NAME - 711)) | (1L << (CEIL - 711)) | (1L << (CEILING - 711)) | (1L << (CENTROID - 711)) | (1L << (CHARACTER_LENGTH - 711)) | (1L << (CHARSET - 711)) | (1L << (CHAR_LENGTH - 711)) | (1L << (COERCIBILITY - 711)) | (1L << (COLLATION - 711)) | (1L << (COMPRESS - 711)) | (1L << (CONCAT - 711)) | (1L << (CONCAT_WS - 711)) | (1L << (CONNECTION_ID - 711)) | (1L << (CONV - 711)) | (1L << (CONVERT_TZ - 711)) | (1L << (COS - 711)) | (1L << (COT - 711)) | (1L << (CRC32 - 711)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 711)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 711)) | (1L << (CREATE_DH_PARAMETERS - 711)) | (1L << (CREATE_DIGEST - 711)) | (1L << (CROSSES - 711)) | (1L << (DATEDIFF - 711)) | (1L << (DATE_FORMAT - 711)) | (1L << (DAYNAME - 711)) | (1L << (DAYOFMONTH - 711)) | (1L << (DAYOFWEEK - 711)) | (1L << (DAYOFYEAR - 711)) | (1L << (DECODE - 711)) | (1L << (DEGREES - 711)) | (1L << (DES_DECRYPT - 711)) | (1L << (DES_ENCRYPT - 711)) | (1L << (DIMENSION - 711)) | (1L << (DISJOINT - 711)) | (1L << (ELT - 711)) | (1L << (ENCODE - 711)) | (1L << (ENCRYPT - 711)) | (1L << (ENDPOINT - 711)) | (1L << (ENVELOPE - 711)) | (1L << (EQUALS - 711)) | (1L << (EXP - 711)) | (1L << (EXPORT_SET - 711)) | (1L << (EXTERIORRING - 711)) | (1L << (EXTRACTVALUE - 711)) | (1L << (FIELD - 711)) | (1L << (FIND_IN_SET - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (FLOOR - 775)) | (1L << (FORMAT - 775)) | (1L << (FOUND_ROWS - 775)) | (1L << (FROM_BASE64 - 775)) | (1L << (FROM_DAYS - 775)) | (1L << (FROM_UNIXTIME - 775)) | (1L << (GEOMCOLLFROMTEXT - 775)) | (1L << (GEOMCOLLFROMWKB - 775)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 775)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 775)) | (1L << (GEOMETRYFROMTEXT - 775)) | (1L << (GEOMETRYFROMWKB - 775)) | (1L << (GEOMETRYN - 775)) | (1L << (GEOMETRYTYPE - 775)) | (1L << (GEOMFROMTEXT - 775)) | (1L << (GEOMFROMWKB - 775)) | (1L << (GET_FORMAT - 775)) | (1L << (GET_LOCK - 775)) | (1L << (GLENGTH - 775)) | (1L << (GREATEST - 775)) | (1L << (GTID_SUBSET - 775)) | (1L << (GTID_SUBTRACT - 775)) | (1L << (HEX - 775)) | (1L << (IFNULL - 775)) | (1L << (INET6_ATON - 775)) | (1L << (INET6_NTOA - 775)) | (1L << (INET_ATON - 775)) | (1L << (INET_NTOA - 775)) | (1L << (INSTR - 775)) | (1L << (INTERIORRINGN - 775)) | (1L << (INTERSECTS - 775)) | (1L << (ISCLOSED - 775)) | (1L << (ISEMPTY - 775)) | (1L << (ISNULL - 775)) | (1L << (ISSIMPLE - 775)) | (1L << (IS_FREE_LOCK - 775)) | (1L << (IS_IPV4 - 775)) | (1L << (IS_IPV4_COMPAT - 775)) | (1L << (IS_IPV4_MAPPED - 775)) | (1L << (IS_IPV6 - 775)) | (1L << (IS_USED_LOCK - 775)) | (1L << (LAST_INSERT_ID - 775)) | (1L << (LCASE - 775)) | (1L << (LEAST - 775)) | (1L << (LENGTH - 775)) | (1L << (LINEFROMTEXT - 775)) | (1L << (LINEFROMWKB - 775)) | (1L << (LINESTRINGFROMTEXT - 775)) | (1L << (LINESTRINGFROMWKB - 775)) | (1L << (LN - 775)) | (1L << (LOAD_FILE - 775)) | (1L << (LOCATE - 775)) | (1L << (LOG - 775)) | (1L << (LOG10 - 775)) | (1L << (LOG2 - 775)) | (1L << (LOWER - 775)) | (1L << (LPAD - 775)) | (1L << (LTRIM - 775)) | (1L << (MAKEDATE - 775)) | (1L << (MAKETIME - 775)) | (1L << (MAKE_SET - 775)) | (1L << (MASTER_POS_WAIT - 775)) | (1L << (MBRCONTAINS - 775)) | (1L << (MBRDISJOINT - 775)))) != 0) || ((((_la - 839)) & ~0x3f) == 0 && ((1L << (_la - 839)) & ((1L << (MBREQUAL - 839)) | (1L << (MBRINTERSECTS - 839)) | (1L << (MBROVERLAPS - 839)) | (1L << (MBRTOUCHES - 839)) | (1L << (MBRWITHIN - 839)) | (1L << (MD5 - 839)) | (1L << (MLINEFROMTEXT - 839)) | (1L << (MLINEFROMWKB - 839)) | (1L << (MONTHNAME - 839)) | (1L << (MPOINTFROMTEXT - 839)) | (1L << (MPOINTFROMWKB - 839)) | (1L << (MPOLYFROMTEXT - 839)) | (1L << (MPOLYFROMWKB - 839)) | (1L << (MULTILINESTRINGFROMTEXT - 839)) | (1L << (MULTILINESTRINGFROMWKB - 839)) | (1L << (MULTIPOINTFROMTEXT - 839)) | (1L << (MULTIPOINTFROMWKB - 839)) | (1L << (MULTIPOLYGONFROMTEXT - 839)) | (1L << (MULTIPOLYGONFROMWKB - 839)) | (1L << (NAME_CONST - 839)) | (1L << (NULLIF - 839)) | (1L << (NUMGEOMETRIES - 839)) | (1L << (NUMINTERIORRINGS - 839)) | (1L << (NUMPOINTS - 839)) | (1L << (OCT - 839)) | (1L << (OCTET_LENGTH - 839)) | (1L << (ORD - 839)) | (1L << (OVERLAPS - 839)) | (1L << (PERIOD_ADD - 839)) | (1L << (PERIOD_DIFF - 839)) | (1L << (PI - 839)) | (1L << (POINTFROMTEXT - 839)) | (1L << (POINTFROMWKB - 839)) | (1L << (POINTN - 839)) | (1L << (POLYFROMTEXT - 839)) | (1L << (POLYFROMWKB - 839)) | (1L << (POLYGONFROMTEXT - 839)) | (1L << (POLYGONFROMWKB - 839)) | (1L << (POW - 839)) | (1L << (POWER - 839)) | (1L << (QUOTE - 839)) | (1L << (RADIANS - 839)) | (1L << (RAND - 839)) | (1L << (RANDOM_BYTES - 839)) | (1L << (RELEASE_LOCK - 839)) | (1L << (REVERSE - 839)) | (1L << (ROUND - 839)) | (1L << (ROW_COUNT - 839)) | (1L << (RPAD - 839)) | (1L << (RTRIM - 839)) | (1L << (SEC_TO_TIME - 839)) | (1L << (SESSION_USER - 839)) | (1L << (SHA - 839)) | (1L << (SHA1 - 839)) | (1L << (SHA2 - 839)) | (1L << (SCHEMA_NAME - 839)) | (1L << (SIGN - 839)) | (1L << (SIN - 839)) | (1L << (SLEEP - 839)) | (1L << (SOUNDEX - 839)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 839)) | (1L << (SQRT - 839)) | (1L << (SRID - 839)) | (1L << (STARTPOINT - 839)))) != 0) || ((((_la - 903)) & ~0x3f) == 0 && ((1L << (_la - 903)) & ((1L << (STRCMP - 903)) | (1L << (STR_TO_DATE - 903)) | (1L << (ST_AREA - 903)) | (1L << (ST_ASBINARY - 903)) | (1L << (ST_ASTEXT - 903)) | (1L << (ST_ASWKB - 903)) | (1L << (ST_ASWKT - 903)) | (1L << (ST_BUFFER - 903)) | (1L << (ST_CENTROID - 903)) | (1L << (ST_CONTAINS - 903)) | (1L << (ST_CROSSES - 903)) | (1L << (ST_DIFFERENCE - 903)) | (1L << (ST_DIMENSION - 903)) | (1L << (ST_DISJOINT - 903)) | (1L << (ST_DISTANCE - 903)) | (1L << (ST_ENDPOINT - 903)) | (1L << (ST_ENVELOPE - 903)) | (1L << (ST_EQUALS - 903)) | (1L << (ST_EXTERIORRING - 903)) | (1L << (ST_GEOMCOLLFROMTEXT - 903)) | (1L << (ST_GEOMCOLLFROMTXT - 903)) | (1L << (ST_GEOMCOLLFROMWKB - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 903)) | (1L << (ST_GEOMETRYFROMTEXT - 903)) | (1L << (ST_GEOMETRYFROMWKB - 903)) | (1L << (ST_GEOMETRYN - 903)) | (1L << (ST_GEOMETRYTYPE - 903)) | (1L << (ST_GEOMFROMTEXT - 903)) | (1L << (ST_GEOMFROMWKB - 903)) | (1L << (ST_INTERIORRINGN - 903)) | (1L << (ST_INTERSECTION - 903)) | (1L << (ST_INTERSECTS - 903)) | (1L << (ST_ISCLOSED - 903)) | (1L << (ST_ISEMPTY - 903)) | (1L << (ST_ISSIMPLE - 903)) | (1L << (ST_LINEFROMTEXT - 903)) | (1L << (ST_LINEFROMWKB - 903)) | (1L << (ST_LINESTRINGFROMTEXT - 903)) | (1L << (ST_LINESTRINGFROMWKB - 903)) | (1L << (ST_NUMGEOMETRIES - 903)) | (1L << (ST_NUMINTERIORRING - 903)) | (1L << (ST_NUMINTERIORRINGS - 903)) | (1L << (ST_NUMPOINTS - 903)) | (1L << (ST_OVERLAPS - 903)) | (1L << (ST_POINTFROMTEXT - 903)) | (1L << (ST_POINTFROMWKB - 903)) | (1L << (ST_POINTN - 903)) | (1L << (ST_POLYFROMTEXT - 903)) | (1L << (ST_POLYFROMWKB - 903)) | (1L << (ST_POLYGONFROMTEXT - 903)) | (1L << (ST_POLYGONFROMWKB - 903)) | (1L << (ST_SRID - 903)) | (1L << (ST_STARTPOINT - 903)) | (1L << (ST_SYMDIFFERENCE - 903)) | (1L << (ST_TOUCHES - 903)) | (1L << (ST_UNION - 903)) | (1L << (ST_WITHIN - 903)) | (1L << (ST_X - 903)) | (1L << (ST_Y - 903)) | (1L << (SUBDATE - 903)) | (1L << (SUBSTRING_INDEX - 903)) | (1L << (SUBTIME - 903)) | (1L << (SYSTEM_USER - 903)))) != 0) || ((((_la - 967)) & ~0x3f) == 0 && ((1L << (_la - 967)) & ((1L << (TAN - 967)) | (1L << (TIMEDIFF - 967)) | (1L << (TIMESTAMPADD - 967)) | (1L << (TIMESTAMPDIFF - 967)) | (1L << (TIME_FORMAT - 967)) | (1L << (TIME_TO_SEC - 967)) | (1L << (TOUCHES - 967)) | (1L << (TO_BASE64 - 967)) | (1L << (TO_DAYS - 967)) | (1L << (TO_SECONDS - 967)) | (1L << (UCASE - 967)) | (1L << (UNCOMPRESS - 967)) | (1L << (UNCOMPRESSED_LENGTH - 967)) | (1L << (UNHEX - 967)) | (1L << (UNIX_TIMESTAMP - 967)) | (1L << (UPDATEXML - 967)) | (1L << (UPPER - 967)) | (1L << (UUID - 967)) | (1L << (UUID_SHORT - 967)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 967)) | (1L << (VERSION - 967)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 967)) | (1L << (WEEKDAY - 967)) | (1L << (WEEKOFYEAR - 967)) | (1L << (WEIGHT_STRING - 967)) | (1L << (WITHIN - 967)) | (1L << (YEARWEEK - 967)) | (1L << (Y_FUNCTION - 967)) | (1L << (X_FUNCTION - 967)) | (1L << (PLUS - 967)) | (1L << (MINUS - 967)) | (1L << (EXCLAMATION_SYMBOL - 967)) | (1L << (BIT_NOT_OP - 967)) | (1L << (LR_BRACKET - 967)) | (1L << (ZERO_DECIMAL - 967)) | (1L << (ONE_DECIMAL - 967)) | (1L << (TWO_DECIMAL - 967)))) != 0) || ((((_la - 1034)) & ~0x3f) == 0 && ((1L << (_la - 1034)) & ((1L << (CHARSET_REVERSE_QOUTE_STRING - 1034)) | (1L << (START_NATIONAL_STRING_LITERAL - 1034)) | (1L << (STRING_LITERAL - 1034)) | (1L << (DECIMAL_LITERAL - 1034)) | (1L << (HEXADECIMAL_LITERAL - 1034)) | (1L << (REAL_LITERAL - 1034)) | (1L << (NULL_SPEC_LITERAL - 1034)) | (1L << (BIT_STRING - 1034)) | (1L << (STRING_CHARSET_NAME - 1034)) | (1L << (ID - 1034)) | (1L << (REVERSE_QUOTE_ID - 1034)) | (1L << (LOCAL_ID - 1034)) | (1L << (GLOBAL_ID - 1034)))) != 0)) {
					{
					setState(3047);
					expressionsWithDefaults();
					}
				}

				setState(3050);
				match(RR_BRACKET);
				setState(3059);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3051);
					match(COMMA);
					setState(3052);
					match(LR_BRACKET);
					setState(3054);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CAST) | (1L << CONVERT) | (1L << CURRENT) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EXISTS) | (1L << FALSE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (IF - 69)) | (1L << (INSERT - 69)) | (1L << (INTERVAL - 69)) | (1L << (LEFT - 69)) | (1L << (NOT - 69)) | (1L << (NULL_LITERAL - 69)) | (1L << (NUMBER - 69)) | (1L << (REPLACE - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (RIGHT - 133)) | (1L << (STACKED - 133)) | (1L << (TRUE - 133)) | (1L << (VALUES - 133)))) != 0) || ((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (DATETIME - 199)) | (1L << (YEAR - 199)) | (1L << (CHAR - 199)) | (1L << (BINARY - 199)) | (1L << (TEXT - 199)) | (1L << (ENUM - 199)) | (1L << (SERIAL - 199)) | (1L << (AVG - 199)) | (1L << (BIT_AND - 199)) | (1L << (BIT_OR - 199)) | (1L << (BIT_XOR - 199)) | (1L << (COUNT - 199)) | (1L << (GROUP_CONCAT - 199)) | (1L << (MAX - 199)) | (1L << (MIN - 199)) | (1L << (STD - 199)) | (1L << (STDDEV - 199)) | (1L << (STDDEV_POP - 199)) | (1L << (STDDEV_SAMP - 199)) | (1L << (SUM - 199)) | (1L << (VAR_POP - 199)) | (1L << (VAR_SAMP - 199)) | (1L << (VARIANCE - 199)) | (1L << (CURRENT_DATE - 199)) | (1L << (CURRENT_TIME - 199)) | (1L << (CURRENT_TIMESTAMP - 199)) | (1L << (LOCALTIME - 199)) | (1L << (CURDATE - 199)) | (1L << (CURTIME - 199)) | (1L << (DATE_ADD - 199)) | (1L << (DATE_SUB - 199)) | (1L << (EXTRACT - 199)) | (1L << (LOCALTIMESTAMP - 199)) | (1L << (NOW - 199)) | (1L << (POSITION - 199)))) != 0) || ((((_la - 263)) & ~0x3f) == 0 && ((1L << (_la - 263)) & ((1L << (SUBSTR - 263)) | (1L << (SUBSTRING - 263)) | (1L << (SYSDATE - 263)) | (1L << (TRIM - 263)) | (1L << (UTC_DATE - 263)) | (1L << (UTC_TIME - 263)) | (1L << (UTC_TIMESTAMP - 263)) | (1L << (ACCOUNT - 263)) | (1L << (ACTION - 263)) | (1L << (AFTER - 263)) | (1L << (AGGREGATE - 263)) | (1L << (ALGORITHM - 263)) | (1L << (ANY - 263)) | (1L << (AT - 263)) | (1L << (AUTHORS - 263)) | (1L << (AUTOCOMMIT - 263)) | (1L << (AUTOEXTEND_SIZE - 263)) | (1L << (AUTO_INCREMENT - 263)) | (1L << (AVG_ROW_LENGTH - 263)) | (1L << (BEGIN - 263)) | (1L << (BINLOG - 263)) | (1L << (BIT - 263)) | (1L << (BLOCK - 263)) | (1L << (BOOL - 263)) | (1L << (BOOLEAN - 263)) | (1L << (BTREE - 263)) | (1L << (CACHE - 263)) | (1L << (CASCADED - 263)) | (1L << (CHAIN - 263)) | (1L << (CHANGED - 263)) | (1L << (CHANNEL - 263)) | (1L << (CHECKSUM - 263)) | (1L << (PAGE_CHECKSUM - 263)) | (1L << (CIPHER - 263)) | (1L << (CLASS_ORIGIN - 263)) | (1L << (CLIENT - 263)) | (1L << (CLOSE - 263)) | (1L << (COALESCE - 263)) | (1L << (CODE - 263)) | (1L << (COLUMNS - 263)) | (1L << (COLUMN_FORMAT - 263)) | (1L << (COLUMN_NAME - 263)) | (1L << (COMMENT - 263)) | (1L << (COMMIT - 263)) | (1L << (COMPACT - 263)) | (1L << (COMPLETION - 263)) | (1L << (COMPRESSED - 263)) | (1L << (COMPRESSION - 263)) | (1L << (CONCURRENT - 263)) | (1L << (CONNECTION - 263)) | (1L << (CONSISTENT - 263)) | (1L << (CONSTRAINT_CATALOG - 263)) | (1L << (CONSTRAINT_SCHEMA - 263)) | (1L << (CONSTRAINT_NAME - 263)) | (1L << (CONTAINS - 263)) | (1L << (CONTEXT - 263)) | (1L << (CONTRIBUTORS - 263)) | (1L << (COPY - 263)) | (1L << (CPU - 263)) | (1L << (CURSOR_NAME - 263)) | (1L << (DATA - 263)) | (1L << (DATAFILE - 263)) | (1L << (DEALLOCATE - 263)) | (1L << (DEFAULT_AUTH - 263)))) != 0) || ((((_la - 327)) & ~0x3f) == 0 && ((1L << (_la - 327)) & ((1L << (DEFINER - 327)) | (1L << (DELAY_KEY_WRITE - 327)) | (1L << (DES_KEY_FILE - 327)) | (1L << (DIRECTORY - 327)) | (1L << (DISABLE - 327)) | (1L << (DISCARD - 327)) | (1L << (DISK - 327)) | (1L << (DO - 327)) | (1L << (DUMPFILE - 327)) | (1L << (DUPLICATE - 327)) | (1L << (DYNAMIC - 327)) | (1L << (ENABLE - 327)) | (1L << (ENCRYPTION - 327)) | (1L << (END - 327)) | (1L << (ENDS - 327)) | (1L << (ENGINE - 327)) | (1L << (ENGINES - 327)) | (1L << (ERROR - 327)) | (1L << (ERRORS - 327)) | (1L << (ESCAPE - 327)) | (1L << (EVEN - 327)) | (1L << (EVENT - 327)) | (1L << (EVENTS - 327)) | (1L << (EVERY - 327)) | (1L << (EXCHANGE - 327)) | (1L << (EXCLUSIVE - 327)) | (1L << (EXPIRE - 327)) | (1L << (EXPORT - 327)) | (1L << (EXTENDED - 327)) | (1L << (EXTENT_SIZE - 327)) | (1L << (FAST - 327)) | (1L << (FAULTS - 327)) | (1L << (FIELDS - 327)) | (1L << (FILE_BLOCK_SIZE - 327)) | (1L << (FILTER - 327)) | (1L << (FIRST - 327)) | (1L << (FIXED - 327)) | (1L << (FLUSH - 327)) | (1L << (FOLLOWS - 327)) | (1L << (FOUND - 327)) | (1L << (FULL - 327)) | (1L << (FUNCTION - 327)) | (1L << (GENERAL - 327)) | (1L << (GLOBAL - 327)) | (1L << (GRANTS - 327)) | (1L << (GROUP_REPLICATION - 327)) | (1L << (HANDLER - 327)) | (1L << (HASH - 327)) | (1L << (HELP - 327)) | (1L << (HOST - 327)) | (1L << (HOSTS - 327)) | (1L << (IDENTIFIED - 327)) | (1L << (IGNORE_SERVER_IDS - 327)) | (1L << (IMPORT - 327)) | (1L << (INDEXES - 327)) | (1L << (INITIAL_SIZE - 327)) | (1L << (INPLACE - 327)) | (1L << (INSERT_METHOD - 327)) | (1L << (INSTALL - 327)) | (1L << (INSTANCE - 327)) | (1L << (INVISIBLE - 327)) | (1L << (INVOKER - 327)) | (1L << (IO - 327)) | (1L << (IO_THREAD - 327)))) != 0) || ((((_la - 391)) & ~0x3f) == 0 && ((1L << (_la - 391)) & ((1L << (IPC - 391)) | (1L << (ISOLATION - 391)) | (1L << (ISSUER - 391)) | (1L << (JSON - 391)) | (1L << (KEY_BLOCK_SIZE - 391)) | (1L << (LANGUAGE - 391)) | (1L << (LAST - 391)) | (1L << (LEAVES - 391)) | (1L << (LESS - 391)) | (1L << (LEVEL - 391)) | (1L << (LIST - 391)) | (1L << (LOCAL - 391)) | (1L << (LOGFILE - 391)) | (1L << (LOGS - 391)) | (1L << (MASTER - 391)) | (1L << (MASTER_AUTO_POSITION - 391)) | (1L << (MASTER_CONNECT_RETRY - 391)) | (1L << (MASTER_DELAY - 391)) | (1L << (MASTER_HEARTBEAT_PERIOD - 391)) | (1L << (MASTER_HOST - 391)) | (1L << (MASTER_LOG_FILE - 391)) | (1L << (MASTER_LOG_POS - 391)) | (1L << (MASTER_PASSWORD - 391)) | (1L << (MASTER_PORT - 391)) | (1L << (MASTER_RETRY_COUNT - 391)) | (1L << (MASTER_SSL - 391)) | (1L << (MASTER_SSL_CA - 391)) | (1L << (MASTER_SSL_CAPATH - 391)) | (1L << (MASTER_SSL_CERT - 391)) | (1L << (MASTER_SSL_CIPHER - 391)) | (1L << (MASTER_SSL_CRL - 391)) | (1L << (MASTER_SSL_CRLPATH - 391)) | (1L << (MASTER_SSL_KEY - 391)) | (1L << (MASTER_TLS_VERSION - 391)) | (1L << (MASTER_USER - 391)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 391)) | (1L << (MAX_QUERIES_PER_HOUR - 391)) | (1L << (MAX_ROWS - 391)) | (1L << (MAX_SIZE - 391)) | (1L << (MAX_UPDATES_PER_HOUR - 391)) | (1L << (MAX_USER_CONNECTIONS - 391)) | (1L << (MEDIUM - 391)) | (1L << (MERGE - 391)) | (1L << (MESSAGE_TEXT - 391)) | (1L << (MID - 391)) | (1L << (MIGRATE - 391)) | (1L << (MIN_ROWS - 391)) | (1L << (MODE - 391)) | (1L << (MODIFY - 391)) | (1L << (MUTEX - 391)) | (1L << (MYSQL - 391)) | (1L << (MYSQL_ERRNO - 391)) | (1L << (NAME - 391)) | (1L << (NAMES - 391)) | (1L << (NCHAR - 391)) | (1L << (NEVER - 391)) | (1L << (NEXT - 391)) | (1L << (NO - 391)) | (1L << (NODEGROUP - 391)) | (1L << (NONE - 391)) | (1L << (OFFLINE - 391)) | (1L << (OFFSET - 391)))) != 0) || ((((_la - 455)) & ~0x3f) == 0 && ((1L << (_la - 455)) & ((1L << (OJ - 455)) | (1L << (OLD_PASSWORD - 455)) | (1L << (ONE - 455)) | (1L << (ONLINE - 455)) | (1L << (ONLY - 455)) | (1L << (OPEN - 455)) | (1L << (OPTIMIZER_COSTS - 455)) | (1L << (OPTIONS - 455)) | (1L << (OWNER - 455)) | (1L << (PACK_KEYS - 455)) | (1L << (PAGE - 455)) | (1L << (PARSER - 455)) | (1L << (PARTIAL - 455)) | (1L << (PARTITIONING - 455)) | (1L << (PARTITIONS - 455)) | (1L << (PASSWORD - 455)) | (1L << (PHASE - 455)) | (1L << (PLUGIN - 455)) | (1L << (PLUGIN_DIR - 455)) | (1L << (PLUGINS - 455)) | (1L << (PORT - 455)) | (1L << (PRECEDES - 455)) | (1L << (PREPARE - 455)) | (1L << (PRESERVE - 455)) | (1L << (PREV - 455)) | (1L << (PROCESSLIST - 455)) | (1L << (PROFILE - 455)) | (1L << (PROFILES - 455)) | (1L << (PROXY - 455)) | (1L << (QUERY - 455)) | (1L << (QUICK - 455)) | (1L << (REBUILD - 455)) | (1L << (RECOVER - 455)) | (1L << (REDO_BUFFER_SIZE - 455)) | (1L << (REDUNDANT - 455)) | (1L << (RELAY - 455)) | (1L << (RELAY_LOG_FILE - 455)) | (1L << (RELAY_LOG_POS - 455)) | (1L << (RELAYLOG - 455)) | (1L << (REMOVE - 455)) | (1L << (REORGANIZE - 455)) | (1L << (REPAIR - 455)) | (1L << (REPLICATE_DO_DB - 455)) | (1L << (REPLICATE_DO_TABLE - 455)) | (1L << (REPLICATE_IGNORE_DB - 455)) | (1L << (REPLICATE_IGNORE_TABLE - 455)) | (1L << (REPLICATE_REWRITE_DB - 455)) | (1L << (REPLICATE_WILD_DO_TABLE - 455)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 455)) | (1L << (REPLICATION - 455)) | (1L << (RESET - 455)) | (1L << (RESUME - 455)) | (1L << (RETURNED_SQLSTATE - 455)) | (1L << (RETURNS - 455)) | (1L << (ROLLBACK - 455)) | (1L << (ROLLUP - 455)) | (1L << (ROTATE - 455)) | (1L << (ROW - 455)) | (1L << (ROWS - 455)) | (1L << (ROW_FORMAT - 455)) | (1L << (SAVEPOINT - 455)) | (1L << (SCHEDULE - 455)) | (1L << (SECURITY - 455)))) != 0) || ((((_la - 519)) & ~0x3f) == 0 && ((1L << (_la - 519)) & ((1L << (SERVER - 519)) | (1L << (SESSION - 519)) | (1L << (SHARE - 519)) | (1L << (SHARED - 519)) | (1L << (SIGNED - 519)) | (1L << (SIMPLE - 519)) | (1L << (SLAVE - 519)) | (1L << (SLOW - 519)) | (1L << (SNAPSHOT - 519)) | (1L << (SOCKET - 519)) | (1L << (SOME - 519)) | (1L << (SONAME - 519)) | (1L << (SOUNDS - 519)) | (1L << (SOURCE - 519)) | (1L << (SQL_AFTER_GTIDS - 519)) | (1L << (SQL_AFTER_MTS_GAPS - 519)) | (1L << (SQL_BEFORE_GTIDS - 519)) | (1L << (SQL_BUFFER_RESULT - 519)) | (1L << (SQL_CACHE - 519)) | (1L << (SQL_NO_CACHE - 519)) | (1L << (SQL_THREAD - 519)) | (1L << (START - 519)) | (1L << (STARTS - 519)) | (1L << (STATS_AUTO_RECALC - 519)) | (1L << (STATS_PERSISTENT - 519)) | (1L << (STATS_SAMPLE_PAGES - 519)) | (1L << (STATUS - 519)) | (1L << (STOP - 519)) | (1L << (STORAGE - 519)) | (1L << (STRING - 519)) | (1L << (SUBCLASS_ORIGIN - 519)) | (1L << (SUBJECT - 519)) | (1L << (SUBPARTITION - 519)) | (1L << (SUBPARTITIONS - 519)) | (1L << (SUSPEND - 519)) | (1L << (SWAPS - 519)) | (1L << (SWITCHES - 519)) | (1L << (TABLE_NAME - 519)) | (1L << (TABLESPACE - 519)) | (1L << (TEMPORARY - 519)) | (1L << (TEMPTABLE - 519)) | (1L << (THAN - 519)) | (1L << (TRADITIONAL - 519)) | (1L << (TRANSACTION - 519)) | (1L << (TRIGGERS - 519)) | (1L << (TRUNCATE - 519)) | (1L << (UNDEFINED - 519)) | (1L << (UNDOFILE - 519)) | (1L << (UNDO_BUFFER_SIZE - 519)) | (1L << (UNINSTALL - 519)) | (1L << (UNKNOWN - 519)) | (1L << (UNTIL - 519)) | (1L << (UPGRADE - 519)) | (1L << (USER - 519)) | (1L << (USE_FRM - 519)) | (1L << (USER_RESOURCES - 519)) | (1L << (VALIDATION - 519)) | (1L << (VALUE - 519)) | (1L << (VARIABLES - 519)) | (1L << (VIEW - 519)) | (1L << (VISIBLE - 519)))) != 0) || ((((_la - 583)) & ~0x3f) == 0 && ((1L << (_la - 583)) & ((1L << (WAIT - 583)) | (1L << (WARNINGS - 583)) | (1L << (WITHOUT - 583)) | (1L << (WORK - 583)) | (1L << (WRAPPER - 583)) | (1L << (X509 - 583)) | (1L << (XA - 583)) | (1L << (XML - 583)) | (1L << (INTERNAL - 583)) | (1L << (QUARTER - 583)) | (1L << (MONTH - 583)) | (1L << (DAY - 583)) | (1L << (HOUR - 583)) | (1L << (MINUTE - 583)) | (1L << (WEEK - 583)) | (1L << (SECOND - 583)) | (1L << (MICROSECOND - 583)) | (1L << (TABLES - 583)) | (1L << (ROUTINE - 583)) | (1L << (EXECUTE - 583)) | (1L << (FILE - 583)) | (1L << (PROCESS - 583)) | (1L << (RELOAD - 583)) | (1L << (SHUTDOWN - 583)) | (1L << (SUPER - 583)) | (1L << (PRIVILEGES - 583)) | (1L << (SESSION_VARIABLES_ADMIN - 583)) | (1L << (ARMSCII8 - 583)) | (1L << (ASCII - 583)) | (1L << (BIG5 - 583)) | (1L << (CP1250 - 583)) | (1L << (CP1251 - 583)) | (1L << (CP1256 - 583)) | (1L << (CP1257 - 583)) | (1L << (CP850 - 583)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (CP852 - 647)) | (1L << (CP866 - 647)) | (1L << (CP932 - 647)) | (1L << (DEC8 - 647)) | (1L << (EUCJPMS - 647)) | (1L << (EUCKR - 647)) | (1L << (GB2312 - 647)) | (1L << (GBK - 647)) | (1L << (GEOSTD8 - 647)) | (1L << (GREEK - 647)) | (1L << (HEBREW - 647)) | (1L << (HP8 - 647)) | (1L << (KEYBCS2 - 647)) | (1L << (KOI8R - 647)) | (1L << (KOI8U - 647)) | (1L << (LATIN1 - 647)) | (1L << (LATIN2 - 647)) | (1L << (LATIN5 - 647)) | (1L << (LATIN7 - 647)) | (1L << (MACCE - 647)) | (1L << (MACROMAN - 647)) | (1L << (SJIS - 647)) | (1L << (SWE7 - 647)) | (1L << (TIS620 - 647)) | (1L << (UCS2 - 647)) | (1L << (UJIS - 647)) | (1L << (UTF16 - 647)) | (1L << (UTF16LE - 647)) | (1L << (UTF32 - 647)) | (1L << (UTF8 - 647)) | (1L << (UTF8MB3 - 647)) | (1L << (UTF8MB4 - 647)) | (1L << (ARCHIVE - 647)) | (1L << (BLACKHOLE - 647)) | (1L << (CSV - 647)) | (1L << (FEDERATED - 647)) | (1L << (INNODB - 647)) | (1L << (MEMORY - 647)) | (1L << (MRG_MYISAM - 647)) | (1L << (MYISAM - 647)) | (1L << (NDB - 647)) | (1L << (NDBCLUSTER - 647)) | (1L << (PERFORMANCE_SCHEMA - 647)) | (1L << (TOKUDB - 647)) | (1L << (REPEATABLE - 647)) | (1L << (COMMITTED - 647)) | (1L << (UNCOMMITTED - 647)) | (1L << (SERIALIZABLE - 647)) | (1L << (GEOMETRYCOLLECTION - 647)) | (1L << (LINESTRING - 647)) | (1L << (MULTILINESTRING - 647)) | (1L << (MULTIPOINT - 647)) | (1L << (MULTIPOLYGON - 647)) | (1L << (POINT - 647)) | (1L << (POLYGON - 647)) | (1L << (ABS - 647)) | (1L << (ACOS - 647)) | (1L << (ADDDATE - 647)) | (1L << (ADDTIME - 647)) | (1L << (AES_DECRYPT - 647)) | (1L << (AES_ENCRYPT - 647)) | (1L << (AREA - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (ASBINARY - 711)) | (1L << (ASIN - 711)) | (1L << (ASTEXT - 711)) | (1L << (ASWKB - 711)) | (1L << (ASWKT - 711)) | (1L << (ASYMMETRIC_DECRYPT - 711)) | (1L << (ASYMMETRIC_DERIVE - 711)) | (1L << (ASYMMETRIC_ENCRYPT - 711)) | (1L << (ASYMMETRIC_SIGN - 711)) | (1L << (ASYMMETRIC_VERIFY - 711)) | (1L << (ATAN - 711)) | (1L << (ATAN2 - 711)) | (1L << (BENCHMARK - 711)) | (1L << (BIN - 711)) | (1L << (BIT_COUNT - 711)) | (1L << (BIT_LENGTH - 711)) | (1L << (BUFFER - 711)) | (1L << (CATALOG_NAME - 711)) | (1L << (CEIL - 711)) | (1L << (CEILING - 711)) | (1L << (CENTROID - 711)) | (1L << (CHARACTER_LENGTH - 711)) | (1L << (CHARSET - 711)) | (1L << (CHAR_LENGTH - 711)) | (1L << (COERCIBILITY - 711)) | (1L << (COLLATION - 711)) | (1L << (COMPRESS - 711)) | (1L << (CONCAT - 711)) | (1L << (CONCAT_WS - 711)) | (1L << (CONNECTION_ID - 711)) | (1L << (CONV - 711)) | (1L << (CONVERT_TZ - 711)) | (1L << (COS - 711)) | (1L << (COT - 711)) | (1L << (CRC32 - 711)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 711)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 711)) | (1L << (CREATE_DH_PARAMETERS - 711)) | (1L << (CREATE_DIGEST - 711)) | (1L << (CROSSES - 711)) | (1L << (DATEDIFF - 711)) | (1L << (DATE_FORMAT - 711)) | (1L << (DAYNAME - 711)) | (1L << (DAYOFMONTH - 711)) | (1L << (DAYOFWEEK - 711)) | (1L << (DAYOFYEAR - 711)) | (1L << (DECODE - 711)) | (1L << (DEGREES - 711)) | (1L << (DES_DECRYPT - 711)) | (1L << (DES_ENCRYPT - 711)) | (1L << (DIMENSION - 711)) | (1L << (DISJOINT - 711)) | (1L << (ELT - 711)) | (1L << (ENCODE - 711)) | (1L << (ENCRYPT - 711)) | (1L << (ENDPOINT - 711)) | (1L << (ENVELOPE - 711)) | (1L << (EQUALS - 711)) | (1L << (EXP - 711)) | (1L << (EXPORT_SET - 711)) | (1L << (EXTERIORRING - 711)) | (1L << (EXTRACTVALUE - 711)) | (1L << (FIELD - 711)) | (1L << (FIND_IN_SET - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (FLOOR - 775)) | (1L << (FORMAT - 775)) | (1L << (FOUND_ROWS - 775)) | (1L << (FROM_BASE64 - 775)) | (1L << (FROM_DAYS - 775)) | (1L << (FROM_UNIXTIME - 775)) | (1L << (GEOMCOLLFROMTEXT - 775)) | (1L << (GEOMCOLLFROMWKB - 775)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 775)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 775)) | (1L << (GEOMETRYFROMTEXT - 775)) | (1L << (GEOMETRYFROMWKB - 775)) | (1L << (GEOMETRYN - 775)) | (1L << (GEOMETRYTYPE - 775)) | (1L << (GEOMFROMTEXT - 775)) | (1L << (GEOMFROMWKB - 775)) | (1L << (GET_FORMAT - 775)) | (1L << (GET_LOCK - 775)) | (1L << (GLENGTH - 775)) | (1L << (GREATEST - 775)) | (1L << (GTID_SUBSET - 775)) | (1L << (GTID_SUBTRACT - 775)) | (1L << (HEX - 775)) | (1L << (IFNULL - 775)) | (1L << (INET6_ATON - 775)) | (1L << (INET6_NTOA - 775)) | (1L << (INET_ATON - 775)) | (1L << (INET_NTOA - 775)) | (1L << (INSTR - 775)) | (1L << (INTERIORRINGN - 775)) | (1L << (INTERSECTS - 775)) | (1L << (ISCLOSED - 775)) | (1L << (ISEMPTY - 775)) | (1L << (ISNULL - 775)) | (1L << (ISSIMPLE - 775)) | (1L << (IS_FREE_LOCK - 775)) | (1L << (IS_IPV4 - 775)) | (1L << (IS_IPV4_COMPAT - 775)) | (1L << (IS_IPV4_MAPPED - 775)) | (1L << (IS_IPV6 - 775)) | (1L << (IS_USED_LOCK - 775)) | (1L << (LAST_INSERT_ID - 775)) | (1L << (LCASE - 775)) | (1L << (LEAST - 775)) | (1L << (LENGTH - 775)) | (1L << (LINEFROMTEXT - 775)) | (1L << (LINEFROMWKB - 775)) | (1L << (LINESTRINGFROMTEXT - 775)) | (1L << (LINESTRINGFROMWKB - 775)) | (1L << (LN - 775)) | (1L << (LOAD_FILE - 775)) | (1L << (LOCATE - 775)) | (1L << (LOG - 775)) | (1L << (LOG10 - 775)) | (1L << (LOG2 - 775)) | (1L << (LOWER - 775)) | (1L << (LPAD - 775)) | (1L << (LTRIM - 775)) | (1L << (MAKEDATE - 775)) | (1L << (MAKETIME - 775)) | (1L << (MAKE_SET - 775)) | (1L << (MASTER_POS_WAIT - 775)) | (1L << (MBRCONTAINS - 775)) | (1L << (MBRDISJOINT - 775)))) != 0) || ((((_la - 839)) & ~0x3f) == 0 && ((1L << (_la - 839)) & ((1L << (MBREQUAL - 839)) | (1L << (MBRINTERSECTS - 839)) | (1L << (MBROVERLAPS - 839)) | (1L << (MBRTOUCHES - 839)) | (1L << (MBRWITHIN - 839)) | (1L << (MD5 - 839)) | (1L << (MLINEFROMTEXT - 839)) | (1L << (MLINEFROMWKB - 839)) | (1L << (MONTHNAME - 839)) | (1L << (MPOINTFROMTEXT - 839)) | (1L << (MPOINTFROMWKB - 839)) | (1L << (MPOLYFROMTEXT - 839)) | (1L << (MPOLYFROMWKB - 839)) | (1L << (MULTILINESTRINGFROMTEXT - 839)) | (1L << (MULTILINESTRINGFROMWKB - 839)) | (1L << (MULTIPOINTFROMTEXT - 839)) | (1L << (MULTIPOINTFROMWKB - 839)) | (1L << (MULTIPOLYGONFROMTEXT - 839)) | (1L << (MULTIPOLYGONFROMWKB - 839)) | (1L << (NAME_CONST - 839)) | (1L << (NULLIF - 839)) | (1L << (NUMGEOMETRIES - 839)) | (1L << (NUMINTERIORRINGS - 839)) | (1L << (NUMPOINTS - 839)) | (1L << (OCT - 839)) | (1L << (OCTET_LENGTH - 839)) | (1L << (ORD - 839)) | (1L << (OVERLAPS - 839)) | (1L << (PERIOD_ADD - 839)) | (1L << (PERIOD_DIFF - 839)) | (1L << (PI - 839)) | (1L << (POINTFROMTEXT - 839)) | (1L << (POINTFROMWKB - 839)) | (1L << (POINTN - 839)) | (1L << (POLYFROMTEXT - 839)) | (1L << (POLYFROMWKB - 839)) | (1L << (POLYGONFROMTEXT - 839)) | (1L << (POLYGONFROMWKB - 839)) | (1L << (POW - 839)) | (1L << (POWER - 839)) | (1L << (QUOTE - 839)) | (1L << (RADIANS - 839)) | (1L << (RAND - 839)) | (1L << (RANDOM_BYTES - 839)) | (1L << (RELEASE_LOCK - 839)) | (1L << (REVERSE - 839)) | (1L << (ROUND - 839)) | (1L << (ROW_COUNT - 839)) | (1L << (RPAD - 839)) | (1L << (RTRIM - 839)) | (1L << (SEC_TO_TIME - 839)) | (1L << (SESSION_USER - 839)) | (1L << (SHA - 839)) | (1L << (SHA1 - 839)) | (1L << (SHA2 - 839)) | (1L << (SCHEMA_NAME - 839)) | (1L << (SIGN - 839)) | (1L << (SIN - 839)) | (1L << (SLEEP - 839)) | (1L << (SOUNDEX - 839)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 839)) | (1L << (SQRT - 839)) | (1L << (SRID - 839)) | (1L << (STARTPOINT - 839)))) != 0) || ((((_la - 903)) & ~0x3f) == 0 && ((1L << (_la - 903)) & ((1L << (STRCMP - 903)) | (1L << (STR_TO_DATE - 903)) | (1L << (ST_AREA - 903)) | (1L << (ST_ASBINARY - 903)) | (1L << (ST_ASTEXT - 903)) | (1L << (ST_ASWKB - 903)) | (1L << (ST_ASWKT - 903)) | (1L << (ST_BUFFER - 903)) | (1L << (ST_CENTROID - 903)) | (1L << (ST_CONTAINS - 903)) | (1L << (ST_CROSSES - 903)) | (1L << (ST_DIFFERENCE - 903)) | (1L << (ST_DIMENSION - 903)) | (1L << (ST_DISJOINT - 903)) | (1L << (ST_DISTANCE - 903)) | (1L << (ST_ENDPOINT - 903)) | (1L << (ST_ENVELOPE - 903)) | (1L << (ST_EQUALS - 903)) | (1L << (ST_EXTERIORRING - 903)) | (1L << (ST_GEOMCOLLFROMTEXT - 903)) | (1L << (ST_GEOMCOLLFROMTXT - 903)) | (1L << (ST_GEOMCOLLFROMWKB - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 903)) | (1L << (ST_GEOMETRYFROMTEXT - 903)) | (1L << (ST_GEOMETRYFROMWKB - 903)) | (1L << (ST_GEOMETRYN - 903)) | (1L << (ST_GEOMETRYTYPE - 903)) | (1L << (ST_GEOMFROMTEXT - 903)) | (1L << (ST_GEOMFROMWKB - 903)) | (1L << (ST_INTERIORRINGN - 903)) | (1L << (ST_INTERSECTION - 903)) | (1L << (ST_INTERSECTS - 903)) | (1L << (ST_ISCLOSED - 903)) | (1L << (ST_ISEMPTY - 903)) | (1L << (ST_ISSIMPLE - 903)) | (1L << (ST_LINEFROMTEXT - 903)) | (1L << (ST_LINEFROMWKB - 903)) | (1L << (ST_LINESTRINGFROMTEXT - 903)) | (1L << (ST_LINESTRINGFROMWKB - 903)) | (1L << (ST_NUMGEOMETRIES - 903)) | (1L << (ST_NUMINTERIORRING - 903)) | (1L << (ST_NUMINTERIORRINGS - 903)) | (1L << (ST_NUMPOINTS - 903)) | (1L << (ST_OVERLAPS - 903)) | (1L << (ST_POINTFROMTEXT - 903)) | (1L << (ST_POINTFROMWKB - 903)) | (1L << (ST_POINTN - 903)) | (1L << (ST_POLYFROMTEXT - 903)) | (1L << (ST_POLYFROMWKB - 903)) | (1L << (ST_POLYGONFROMTEXT - 903)) | (1L << (ST_POLYGONFROMWKB - 903)) | (1L << (ST_SRID - 903)) | (1L << (ST_STARTPOINT - 903)) | (1L << (ST_SYMDIFFERENCE - 903)) | (1L << (ST_TOUCHES - 903)) | (1L << (ST_UNION - 903)) | (1L << (ST_WITHIN - 903)) | (1L << (ST_X - 903)) | (1L << (ST_Y - 903)) | (1L << (SUBDATE - 903)) | (1L << (SUBSTRING_INDEX - 903)) | (1L << (SUBTIME - 903)) | (1L << (SYSTEM_USER - 903)))) != 0) || ((((_la - 967)) & ~0x3f) == 0 && ((1L << (_la - 967)) & ((1L << (TAN - 967)) | (1L << (TIMEDIFF - 967)) | (1L << (TIMESTAMPADD - 967)) | (1L << (TIMESTAMPDIFF - 967)) | (1L << (TIME_FORMAT - 967)) | (1L << (TIME_TO_SEC - 967)) | (1L << (TOUCHES - 967)) | (1L << (TO_BASE64 - 967)) | (1L << (TO_DAYS - 967)) | (1L << (TO_SECONDS - 967)) | (1L << (UCASE - 967)) | (1L << (UNCOMPRESS - 967)) | (1L << (UNCOMPRESSED_LENGTH - 967)) | (1L << (UNHEX - 967)) | (1L << (UNIX_TIMESTAMP - 967)) | (1L << (UPDATEXML - 967)) | (1L << (UPPER - 967)) | (1L << (UUID - 967)) | (1L << (UUID_SHORT - 967)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 967)) | (1L << (VERSION - 967)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 967)) | (1L << (WEEKDAY - 967)) | (1L << (WEEKOFYEAR - 967)) | (1L << (WEIGHT_STRING - 967)) | (1L << (WITHIN - 967)) | (1L << (YEARWEEK - 967)) | (1L << (Y_FUNCTION - 967)) | (1L << (X_FUNCTION - 967)) | (1L << (PLUS - 967)) | (1L << (MINUS - 967)) | (1L << (EXCLAMATION_SYMBOL - 967)) | (1L << (BIT_NOT_OP - 967)) | (1L << (LR_BRACKET - 967)) | (1L << (ZERO_DECIMAL - 967)) | (1L << (ONE_DECIMAL - 967)) | (1L << (TWO_DECIMAL - 967)))) != 0) || ((((_la - 1034)) & ~0x3f) == 0 && ((1L << (_la - 1034)) & ((1L << (CHARSET_REVERSE_QOUTE_STRING - 1034)) | (1L << (START_NATIONAL_STRING_LITERAL - 1034)) | (1L << (STRING_LITERAL - 1034)) | (1L << (DECIMAL_LITERAL - 1034)) | (1L << (HEXADECIMAL_LITERAL - 1034)) | (1L << (REAL_LITERAL - 1034)) | (1L << (NULL_SPEC_LITERAL - 1034)) | (1L << (BIT_STRING - 1034)) | (1L << (STRING_CHARSET_NAME - 1034)) | (1L << (ID - 1034)) | (1L << (REVERSE_QUOTE_ID - 1034)) | (1L << (LOCAL_ID - 1034)) | (1L << (GLOBAL_ID - 1034)))) != 0)) {
						{
						setState(3053);
						expressionsWithDefaults();
						}
					}

					setState(3056);
					match(RR_BRACKET);
					}
					}
					setState(3061);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdatedElementContext extends ParserRuleContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public UpdatedElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_updatedElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUpdatedElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUpdatedElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUpdatedElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UpdatedElementContext updatedElement() throws RecognitionException {
		UpdatedElementContext _localctx = new UpdatedElementContext(_ctx, getState());
		enterRule(_localctx, 184, RULE_updatedElement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3064);
			fullColumnName();
			setState(3065);
			match(EQUAL_SYMBOL);
			setState(3068);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CASE:
			case CAST:
			case CONVERT:
			case CURRENT:
			case CURRENT_USER:
			case DATABASE:
			case DIAGNOSTICS:
			case EXISTS:
			case FALSE:
			case IF:
			case INSERT:
			case INTERVAL:
			case LEFT:
			case NOT:
			case NULL_LITERAL:
			case NUMBER:
			case REPLACE:
			case RIGHT:
			case STACKED:
			case TRUE:
			case VALUES:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case CHAR:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case GROUP_CONCAT:
			case MAX:
			case MIN:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case EXTRACT:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case PLUS:
			case MINUS:
			case EXCLAMATION_SYMBOL:
			case BIT_NOT_OP:
			case LR_BRACKET:
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case CHARSET_REVERSE_QOUTE_STRING:
			case START_NATIONAL_STRING_LITERAL:
			case STRING_LITERAL:
			case DECIMAL_LITERAL:
			case HEXADECIMAL_LITERAL:
			case REAL_LITERAL:
			case NULL_SPEC_LITERAL:
			case BIT_STRING:
			case STRING_CHARSET_NAME:
			case ID:
			case REVERSE_QUOTE_ID:
			case LOCAL_ID:
			case GLOBAL_ID:
				{
				setState(3066);
				expression(0);
				}
				break;
			case DEFAULT:
				{
				setState(3067);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentFieldContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public AssignmentFieldContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignmentField; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAssignmentField(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAssignmentField(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAssignmentField(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentFieldContext assignmentField() throws RecognitionException {
		AssignmentFieldContext _localctx = new AssignmentFieldContext(_ctx, getState());
		enterRule(_localctx, 186, RULE_assignmentField);
		try {
			setState(3072);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(3070);
				uid();
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(3071);
				match(LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockClauseContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode SHARE() { return getToken(MySqlParser.SHARE, 0); }
		public TerminalNode MODE() { return getToken(MySqlParser.MODE, 0); }
		public LockClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLockClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockClauseContext lockClause() throws RecognitionException {
		LockClauseContext _localctx = new LockClauseContext(_ctx, getState());
		enterRule(_localctx, 188, RULE_lockClause);
		try {
			setState(3080);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(3074);
				match(FOR);
				setState(3075);
				match(UPDATE);
				}
				break;
			case LOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(3076);
				match(LOCK);
				setState(3077);
				match(IN);
				setState(3078);
				match(SHARE);
				setState(3079);
				match(MODE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SingleDeleteStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public SingleDeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_singleDeleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSingleDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSingleDeleteStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSingleDeleteStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SingleDeleteStatementContext singleDeleteStatement() throws RecognitionException {
		SingleDeleteStatementContext _localctx = new SingleDeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 190, RULE_singleDeleteStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3082);
			match(DELETE);
			setState(3084);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3083);
				((SingleDeleteStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3087);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==QUICK) {
				{
				setState(3086);
				match(QUICK);
				}
			}

			setState(3090);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3089);
				match(IGNORE);
				}
			}

			setState(3092);
			match(FROM);
			setState(3093);
			tableName();
			setState(3099);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3094);
				match(PARTITION);
				setState(3095);
				match(LR_BRACKET);
				setState(3096);
				uidList();
				setState(3097);
				match(RR_BRACKET);
				}
			}

			setState(3103);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3101);
				match(WHERE);
				setState(3102);
				expression(0);
				}
			}

			setState(3106);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3105);
				orderByClause();
				}
			}

			setState(3110);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3108);
				match(LIMIT);
				setState(3109);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultipleDeleteStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public List<TableNameContext> tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public List<TerminalNode> DOT() { return getTokens(MySqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(MySqlParser.DOT, i);
		}
		public List<TerminalNode> STAR() { return getTokens(MySqlParser.STAR); }
		public TerminalNode STAR(int i) {
			return getToken(MySqlParser.STAR, i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public MultipleDeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multipleDeleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMultipleDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMultipleDeleteStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMultipleDeleteStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MultipleDeleteStatementContext multipleDeleteStatement() throws RecognitionException {
		MultipleDeleteStatementContext _localctx = new MultipleDeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 192, RULE_multipleDeleteStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3112);
			match(DELETE);
			setState(3114);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3113);
				((MultipleDeleteStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3117);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,429,_ctx) ) {
			case 1:
				{
				setState(3116);
				match(QUICK);
				}
				break;
			}
			setState(3120);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3119);
				match(IGNORE);
				}
			}

			setState(3161);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				{
				setState(3122);
				tableName();
				setState(3125);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(3123);
					match(DOT);
					setState(3124);
					match(STAR);
					}
				}

				setState(3135);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3127);
					match(COMMA);
					setState(3128);
					tableName();
					setState(3131);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==DOT) {
						{
						setState(3129);
						match(DOT);
						setState(3130);
						match(STAR);
						}
					}

					}
					}
					setState(3137);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3138);
				match(FROM);
				setState(3139);
				tableSources();
				}
				break;
			case FROM:
				{
				setState(3141);
				match(FROM);
				setState(3142);
				tableName();
				setState(3145);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(3143);
					match(DOT);
					setState(3144);
					match(STAR);
					}
				}

				setState(3155);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3147);
					match(COMMA);
					setState(3148);
					tableName();
					setState(3151);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==DOT) {
						{
						setState(3149);
						match(DOT);
						setState(3150);
						match(STAR);
						}
					}

					}
					}
					setState(3157);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3158);
				match(USING);
				setState(3159);
				tableSources();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3165);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3163);
				match(WHERE);
				setState(3164);
				expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerOpenStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public HandlerOpenStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerOpenStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerOpenStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerOpenStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerOpenStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerOpenStatementContext handlerOpenStatement() throws RecognitionException {
		HandlerOpenStatementContext _localctx = new HandlerOpenStatementContext(_ctx, getState());
		enterRule(_localctx, 194, RULE_handlerOpenStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3167);
			match(HANDLER);
			setState(3168);
			tableName();
			setState(3169);
			match(OPEN);
			setState(3174);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
			case 1:
				{
				setState(3171);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3170);
					match(AS);
					}
				}

				setState(3173);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadIndexStatementContext extends ParserRuleContext {
		public UidContext index;
		public Token moveOrder;
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ConstantsContext constants() {
			return getRuleContext(ConstantsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode PREV() { return getToken(MySqlParser.PREV, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public HandlerReadIndexStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadIndexStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerReadIndexStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerReadIndexStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerReadIndexStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerReadIndexStatementContext handlerReadIndexStatement() throws RecognitionException {
		HandlerReadIndexStatementContext _localctx = new HandlerReadIndexStatementContext(_ctx, getState());
		enterRule(_localctx, 196, RULE_handlerReadIndexStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3176);
			match(HANDLER);
			setState(3177);
			tableName();
			setState(3178);
			match(READ);
			setState(3179);
			((HandlerReadIndexStatementContext)_localctx).index = uid();
			setState(3186);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EQUAL_SYMBOL:
			case GREATER_SYMBOL:
			case LESS_SYMBOL:
			case EXCLAMATION_SYMBOL:
				{
				setState(3180);
				comparisonOperator();
				setState(3181);
				match(LR_BRACKET);
				setState(3182);
				constants();
				setState(3183);
				match(RR_BRACKET);
				}
				break;
			case FIRST:
			case LAST:
			case NEXT:
			case PREV:
				{
				setState(3185);
				((HandlerReadIndexStatementContext)_localctx).moveOrder = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NEXT || _la==PREV) ) {
					((HandlerReadIndexStatementContext)_localctx).moveOrder = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3190);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3188);
				match(WHERE);
				setState(3189);
				expression(0);
				}
			}

			setState(3194);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3192);
				match(LIMIT);
				setState(3193);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadStatementContext extends ParserRuleContext {
		public Token moveOrder;
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public HandlerReadStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerReadStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerReadStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerReadStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerReadStatementContext handlerReadStatement() throws RecognitionException {
		HandlerReadStatementContext _localctx = new HandlerReadStatementContext(_ctx, getState());
		enterRule(_localctx, 198, RULE_handlerReadStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3196);
			match(HANDLER);
			setState(3197);
			tableName();
			setState(3198);
			match(READ);
			setState(3199);
			((HandlerReadStatementContext)_localctx).moveOrder = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==FIRST || _la==NEXT) ) {
				((HandlerReadStatementContext)_localctx).moveOrder = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3202);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3200);
				match(WHERE);
				setState(3201);
				expression(0);
				}
			}

			setState(3206);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3204);
				match(LIMIT);
				setState(3205);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerCloseStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public HandlerCloseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerCloseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerCloseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerCloseStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerCloseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerCloseStatementContext handlerCloseStatement() throws RecognitionException {
		HandlerCloseStatementContext _localctx = new HandlerCloseStatementContext(_ctx, getState());
		enterRule(_localctx, 200, RULE_handlerCloseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3208);
			match(HANDLER);
			setState(3209);
			tableName();
			setState(3210);
			match(CLOSE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SingleUpdateStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionForUpdateContext expressionForUpdate() {
			return getRuleContext(ExpressionForUpdateContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SingleUpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_singleUpdateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSingleUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSingleUpdateStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSingleUpdateStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SingleUpdateStatementContext singleUpdateStatement() throws RecognitionException {
		SingleUpdateStatementContext _localctx = new SingleUpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 202, RULE_singleUpdateStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3212);
			match(UPDATE);
			setState(3214);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3213);
				((SingleUpdateStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3217);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3216);
				match(IGNORE);
				}
			}

			setState(3219);
			tableName();
			setState(3224);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(3221);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3220);
					match(AS);
					}
				}

				setState(3223);
				uid();
				}
			}

			setState(3226);
			match(SET);
			setState(3227);
			updatedElement();
			setState(3232);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3228);
				match(COMMA);
				setState(3229);
				updatedElement();
				}
				}
				setState(3234);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3237);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3235);
				match(WHERE);
				setState(3236);
				expressionForUpdate(0);
				}
			}

			setState(3240);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3239);
				orderByClause();
				}
			}

			setState(3243);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3242);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultipleUpdateStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<UpdatedElementContext> updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public MultipleUpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multipleUpdateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMultipleUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMultipleUpdateStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMultipleUpdateStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MultipleUpdateStatementContext multipleUpdateStatement() throws RecognitionException {
		MultipleUpdateStatementContext _localctx = new MultipleUpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 204, RULE_multipleUpdateStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3245);
			match(UPDATE);
			setState(3247);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3246);
				((MultipleUpdateStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3250);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3249);
				match(IGNORE);
				}
			}

			setState(3252);
			tableSources();
			setState(3253);
			match(SET);
			setState(3254);
			updatedElement();
			setState(3259);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3255);
				match(COMMA);
				setState(3256);
				updatedElement();
				}
				}
				setState(3261);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3264);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3262);
				match(WHERE);
				setState(3263);
				expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByClauseContext extends ParserRuleContext {
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List<OrderByExpressionContext> orderByExpression() {
			return getRuleContexts(OrderByExpressionContext.class);
		}
		public OrderByExpressionContext orderByExpression(int i) {
			return getRuleContext(OrderByExpressionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOrderByClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOrderByClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOrderByClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrderByClauseContext orderByClause() throws RecognitionException {
		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
		enterRule(_localctx, 206, RULE_orderByClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3266);
			match(ORDER);
			setState(3267);
			match(BY);
			setState(3268);
			orderByExpression();
			setState(3273);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3269);
				match(COMMA);
				setState(3270);
				orderByExpression();
				}
				}
				setState(3275);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByExpressionContext extends ParserRuleContext {
		public Token order;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public OrderByExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByExpression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOrderByExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOrderByExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOrderByExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrderByExpressionContext orderByExpression() throws RecognitionException {
		OrderByExpressionContext _localctx = new OrderByExpressionContext(_ctx, getState());
		enterRule(_localctx, 208, RULE_orderByExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3276);
			expression(0);
			setState(3278);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,459,_ctx) ) {
			case 1:
				{
				setState(3277);
				((OrderByExpressionContext)_localctx).order = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((OrderByExpressionContext)_localctx).order = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourcesContext extends ParserRuleContext {
		public List<TableSourceContext> tableSource() {
			return getRuleContexts(TableSourceContext.class);
		}
		public TableSourceContext tableSource(int i) {
			return getRuleContext(TableSourceContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TableSourcesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSources; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSources(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSources(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableSources(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableSourcesContext tableSources() throws RecognitionException {
		TableSourcesContext _localctx = new TableSourcesContext(_ctx, getState());
		enterRule(_localctx, 210, RULE_tableSources);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3280);
			tableSource();
			setState(3285);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3281);
				match(COMMA);
				setState(3282);
				tableSource();
				}
				}
				setState(3287);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourceContext extends ParserRuleContext {
		public TableSourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSource; }
	 
		public TableSourceContext() { }
		public void copyFrom(TableSourceContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableSourceNestedContext extends TableSourceContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<JoinPartContext> joinPart() {
			return getRuleContexts(JoinPartContext.class);
		}
		public JoinPartContext joinPart(int i) {
			return getRuleContext(JoinPartContext.class,i);
		}
		public TableSourceNestedContext(TableSourceContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourceNested(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourceNested(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableSourceNested(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableSourceBaseContext extends TableSourceContext {
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public List<JoinPartContext> joinPart() {
			return getRuleContexts(JoinPartContext.class);
		}
		public JoinPartContext joinPart(int i) {
			return getRuleContext(JoinPartContext.class,i);
		}
		public TableSourceBaseContext(TableSourceContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourceBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourceBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableSourceBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableSourceContext tableSource() throws RecognitionException {
		TableSourceContext _localctx = new TableSourceContext(_ctx, getState());
		enterRule(_localctx, 212, RULE_tableSource);
		int _la;
		try {
			int _alt;
			setState(3305);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,463,_ctx) ) {
			case 1:
				_localctx = new TableSourceBaseContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3288);
				tableSourceItem();
				setState(3292);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,461,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(3289);
						joinPart();
						}
						} 
					}
					setState(3294);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,461,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new TableSourceNestedContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3295);
				match(LR_BRACKET);
				setState(3296);
				tableSourceItem();
				setState(3300);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (CROSS - 31)) | (1L << (INNER - 31)) | (1L << (JOIN - 31)) | (1L << (LEFT - 31)))) != 0) || ((((_la - 101)) & ~0x3f) == 0 && ((1L << (_la - 101)) & ((1L << (NATURAL - 101)) | (1L << (RIGHT - 101)) | (1L << (STRAIGHT_JOIN - 101)))) != 0)) {
					{
					{
					setState(3297);
					joinPart();
					}
					}
					setState(3302);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3303);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourceItemContext extends ParserRuleContext {
		public TableSourceItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSourceItem; }
	 
		public TableSourceItemContext() { }
		public void copyFrom(TableSourceItemContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SubqueryTableItemContext extends TableSourceItemContext {
		public SelectStatementContext parenthesisSubquery;
		public UidContext alias;
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SubqueryTableItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryTableItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryTableItem(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubqueryTableItem(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AtomTableItemContext extends TableSourceItemContext {
		public UidContext alias;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<IndexHintContext> indexHint() {
			return getRuleContexts(IndexHintContext.class);
		}
		public IndexHintContext indexHint(int i) {
			return getRuleContext(IndexHintContext.class,i);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AtomTableItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAtomTableItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAtomTableItem(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAtomTableItem(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TableSourcesItemContext extends TableSourceItemContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TableSourcesItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourcesItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourcesItem(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableSourcesItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableSourceItemContext tableSourceItem() throws RecognitionException {
		TableSourceItemContext _localctx = new TableSourceItemContext(_ctx, getState());
		enterRule(_localctx, 214, RULE_tableSourceItem);
		int _la;
		try {
			int _alt;
			setState(3347);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,471,_ctx) ) {
			case 1:
				_localctx = new AtomTableItemContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3307);
				tableName();
				setState(3313);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(3308);
					match(PARTITION);
					setState(3309);
					match(LR_BRACKET);
					setState(3310);
					uidList();
					setState(3311);
					match(RR_BRACKET);
					}
				}

				setState(3319);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,466,_ctx) ) {
				case 1:
					{
					setState(3316);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(3315);
						match(AS);
						}
					}

					setState(3318);
					((AtomTableItemContext)_localctx).alias = uid();
					}
					break;
				}
				setState(3329);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,468,_ctx) ) {
				case 1:
					{
					setState(3321);
					indexHint();
					setState(3326);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,467,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(3322);
							match(COMMA);
							setState(3323);
							indexHint();
							}
							} 
						}
						setState(3328);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,467,_ctx);
					}
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new SubqueryTableItemContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3336);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,469,_ctx) ) {
				case 1:
					{
					setState(3331);
					selectStatement();
					}
					break;
				case 2:
					{
					setState(3332);
					match(LR_BRACKET);
					setState(3333);
					((SubqueryTableItemContext)_localctx).parenthesisSubquery = selectStatement();
					setState(3334);
					match(RR_BRACKET);
					}
					break;
				}
				setState(3339);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3338);
					match(AS);
					}
				}

				setState(3341);
				((SubqueryTableItemContext)_localctx).alias = uid();
				}
				break;
			case 3:
				_localctx = new TableSourcesItemContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3343);
				match(LR_BRACKET);
				setState(3344);
				tableSources();
				setState(3345);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintContext extends ParserRuleContext {
		public Token indexHintAction;
		public Token keyFormat;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode FORCE() { return getToken(MySqlParser.FORCE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public IndexHintTypeContext indexHintType() {
			return getRuleContext(IndexHintTypeContext.class,0);
		}
		public IndexHintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexHint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexHint(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexHint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexHintContext indexHint() throws RecognitionException {
		IndexHintContext _localctx = new IndexHintContext(_ctx, getState());
		enterRule(_localctx, 216, RULE_indexHint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3349);
			((IndexHintContext)_localctx).indexHintAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==FORCE || _la==IGNORE || _la==USE) ) {
				((IndexHintContext)_localctx).indexHintAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3350);
			((IndexHintContext)_localctx).keyFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==INDEX || _la==KEY) ) {
				((IndexHintContext)_localctx).keyFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3353);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(3351);
				match(FOR);
				setState(3352);
				indexHintType();
				}
			}

			setState(3355);
			match(LR_BRACKET);
			setState(3356);
			uidList();
			setState(3357);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public IndexHintTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHintType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexHintType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexHintType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexHintType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexHintTypeContext indexHintType() throws RecognitionException {
		IndexHintTypeContext _localctx = new IndexHintTypeContext(_ctx, getState());
		enterRule(_localctx, 218, RULE_indexHintType);
		try {
			setState(3364);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case JOIN:
				enterOuterAlt(_localctx, 1);
				{
				setState(3359);
				match(JOIN);
				}
				break;
			case ORDER:
				enterOuterAlt(_localctx, 2);
				{
				setState(3360);
				match(ORDER);
				setState(3361);
				match(BY);
				}
				break;
			case GROUP:
				enterOuterAlt(_localctx, 3);
				{
				setState(3362);
				match(GROUP);
				setState(3363);
				match(BY);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinPartContext extends ParserRuleContext {
		public JoinPartContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinPart; }
	 
		public JoinPartContext() { }
		public void copyFrom(JoinPartContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class InnerJoinContext extends JoinPartContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode INNER() { return getToken(MySqlParser.INNER, 0); }
		public TerminalNode CROSS() { return getToken(MySqlParser.CROSS, 0); }
		public InnerJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInnerJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInnerJoin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInnerJoin(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NaturalJoinContext extends JoinPartContext {
		public TerminalNode NATURAL() { return getToken(MySqlParser.NATURAL, 0); }
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(MySqlParser.OUTER, 0); }
		public NaturalJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNaturalJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNaturalJoin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNaturalJoin(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class OuterJoinContext extends JoinPartContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode OUTER() { return getToken(MySqlParser.OUTER, 0); }
		public OuterJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOuterJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOuterJoin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOuterJoin(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StraightJoinContext extends JoinPartContext {
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySqlParser.STRAIGHT_JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public StraightJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStraightJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStraightJoin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStraightJoin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JoinPartContext joinPart() throws RecognitionException {
		JoinPartContext _localctx = new JoinPartContext(_ctx, getState());
		enterRule(_localctx, 220, RULE_joinPart);
		int _la;
		try {
			setState(3410);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CROSS:
			case INNER:
			case JOIN:
				_localctx = new InnerJoinContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3367);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CROSS || _la==INNER) {
					{
					setState(3366);
					_la = _input.LA(1);
					if ( !(_la==CROSS || _la==INNER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3369);
				match(JOIN);
				setState(3370);
				tableSourceItem();
				setState(3378);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,475,_ctx) ) {
				case 1:
					{
					setState(3371);
					match(ON);
					setState(3372);
					expression(0);
					}
					break;
				case 2:
					{
					setState(3373);
					match(USING);
					setState(3374);
					match(LR_BRACKET);
					setState(3375);
					uidList();
					setState(3376);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case STRAIGHT_JOIN:
				_localctx = new StraightJoinContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3380);
				match(STRAIGHT_JOIN);
				setState(3381);
				tableSourceItem();
				setState(3384);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,476,_ctx) ) {
				case 1:
					{
					setState(3382);
					match(ON);
					setState(3383);
					expression(0);
					}
					break;
				}
				}
				break;
			case LEFT:
			case RIGHT:
				_localctx = new OuterJoinContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3386);
				_la = _input.LA(1);
				if ( !(_la==LEFT || _la==RIGHT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3388);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OUTER) {
					{
					setState(3387);
					match(OUTER);
					}
				}

				setState(3390);
				match(JOIN);
				setState(3391);
				tableSourceItem();
				setState(3399);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ON:
					{
					setState(3392);
					match(ON);
					setState(3393);
					expression(0);
					}
					break;
				case USING:
					{
					setState(3394);
					match(USING);
					setState(3395);
					match(LR_BRACKET);
					setState(3396);
					uidList();
					setState(3397);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case NATURAL:
				_localctx = new NaturalJoinContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3401);
				match(NATURAL);
				setState(3406);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LEFT || _la==RIGHT) {
					{
					setState(3402);
					_la = _input.LA(1);
					if ( !(_la==LEFT || _la==RIGHT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(3404);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OUTER) {
						{
						setState(3403);
						match(OUTER);
						}
					}

					}
				}

				setState(3408);
				match(JOIN);
				setState(3409);
				tableSourceItem();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public QueryExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitQueryExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryExpressionContext queryExpression() throws RecognitionException {
		QueryExpressionContext _localctx = new QueryExpressionContext(_ctx, getState());
		enterRule(_localctx, 222, RULE_queryExpression);
		try {
			setState(3420);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,482,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3412);
				match(LR_BRACKET);
				setState(3413);
				querySpecification();
				setState(3414);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3416);
				match(LR_BRACKET);
				setState(3417);
				queryExpression();
				setState(3418);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionNointoContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public QueryExpressionNointoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpressionNointo; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryExpressionNointo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryExpressionNointo(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitQueryExpressionNointo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryExpressionNointoContext queryExpressionNointo() throws RecognitionException {
		QueryExpressionNointoContext _localctx = new QueryExpressionNointoContext(_ctx, getState());
		enterRule(_localctx, 224, RULE_queryExpressionNointo);
		try {
			setState(3430);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,483,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3422);
				match(LR_BRACKET);
				setState(3423);
				querySpecificationNointo();
				setState(3424);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3426);
				match(LR_BRACKET);
				setState(3427);
				queryExpressionNointo();
				setState(3428);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QuerySpecificationContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public SelectElementsContext selectElements() {
			return getRuleContext(SelectElementsContext.class,0);
		}
		public List<SelectSpecContext> selectSpec() {
			return getRuleContexts(SelectSpecContext.class);
		}
		public SelectSpecContext selectSpec(int i) {
			return getRuleContext(SelectSpecContext.class,i);
		}
		public SelectIntoExpressionContext selectIntoExpression() {
			return getRuleContext(SelectIntoExpressionContext.class,0);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public QuerySpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_querySpecification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQuerySpecification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQuerySpecification(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitQuerySpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QuerySpecificationContext querySpecification() throws RecognitionException {
		QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState());
		enterRule(_localctx, 226, RULE_querySpecification);
		int _la;
		try {
			int _alt;
			setState(3472);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,494,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3432);
				match(SELECT);
				setState(3436);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,484,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(3433);
						selectSpec();
						}
						} 
					}
					setState(3438);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,484,_ctx);
				}
				setState(3439);
				selectElements();
				setState(3441);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INTO) {
					{
					setState(3440);
					selectIntoExpression();
					}
				}

				setState(3444);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(3443);
					fromClause();
					}
				}

				setState(3447);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,487,_ctx) ) {
				case 1:
					{
					setState(3446);
					orderByClause();
					}
					break;
				}
				setState(3450);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,488,_ctx) ) {
				case 1:
					{
					setState(3449);
					limitClause();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3452);
				match(SELECT);
				setState(3456);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,489,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(3453);
						selectSpec();
						}
						} 
					}
					setState(3458);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,489,_ctx);
				}
				setState(3459);
				selectElements();
				setState(3461);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(3460);
					fromClause();
					}
				}

				setState(3464);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,491,_ctx) ) {
				case 1:
					{
					setState(3463);
					orderByClause();
					}
					break;
				}
				setState(3467);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,492,_ctx) ) {
				case 1:
					{
					setState(3466);
					limitClause();
					}
					break;
				}
				setState(3470);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INTO) {
					{
					setState(3469);
					selectIntoExpression();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QuerySpecificationNointoContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public SelectElementsContext selectElements() {
			return getRuleContext(SelectElementsContext.class,0);
		}
		public List<SelectSpecContext> selectSpec() {
			return getRuleContexts(SelectSpecContext.class);
		}
		public SelectSpecContext selectSpec(int i) {
			return getRuleContext(SelectSpecContext.class,i);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public QuerySpecificationNointoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_querySpecificationNointo; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQuerySpecificationNointo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQuerySpecificationNointo(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitQuerySpecificationNointo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QuerySpecificationNointoContext querySpecificationNointo() throws RecognitionException {
		QuerySpecificationNointoContext _localctx = new QuerySpecificationNointoContext(_ctx, getState());
		enterRule(_localctx, 228, RULE_querySpecificationNointo);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3474);
			match(SELECT);
			setState(3478);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,495,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3475);
					selectSpec();
					}
					} 
				}
				setState(3480);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,495,_ctx);
			}
			setState(3481);
			selectElements();
			setState(3483);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(3482);
				fromClause();
				}
			}

			setState(3486);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,497,_ctx) ) {
			case 1:
				{
				setState(3485);
				orderByClause();
				}
				break;
			}
			setState(3489);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,498,_ctx) ) {
			case 1:
				{
				setState(3488);
				limitClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnionParenthesisContext extends ParserRuleContext {
		public Token unionType;
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionParenthesisContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unionParenthesis; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionParenthesis(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionParenthesis(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnionParenthesis(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnionParenthesisContext unionParenthesis() throws RecognitionException {
		UnionParenthesisContext _localctx = new UnionParenthesisContext(_ctx, getState());
		enterRule(_localctx, 230, RULE_unionParenthesis);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3491);
			match(UNION);
			setState(3493);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(3492);
				((UnionParenthesisContext)_localctx).unionType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
					((UnionParenthesisContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3495);
			queryExpressionNointo();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnionStatementContext extends ParserRuleContext {
		public Token unionType;
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnionStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnionStatementContext unionStatement() throws RecognitionException {
		UnionStatementContext _localctx = new UnionStatementContext(_ctx, getState());
		enterRule(_localctx, 232, RULE_unionStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3497);
			match(UNION);
			setState(3499);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(3498);
				((UnionStatementContext)_localctx).unionType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
					((UnionStatementContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3503);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				{
				setState(3501);
				querySpecificationNointo();
				}
				break;
			case LR_BRACKET:
				{
				setState(3502);
				queryExpressionNointo();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectSpecContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public TerminalNode DISTINCTROW() { return getToken(MySqlParser.DISTINCTROW, 0); }
		public TerminalNode HIGH_PRIORITY() { return getToken(MySqlParser.HIGH_PRIORITY, 0); }
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySqlParser.STRAIGHT_JOIN, 0); }
		public TerminalNode SQL_SMALL_RESULT() { return getToken(MySqlParser.SQL_SMALL_RESULT, 0); }
		public TerminalNode SQL_BIG_RESULT() { return getToken(MySqlParser.SQL_BIG_RESULT, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySqlParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_CACHE() { return getToken(MySqlParser.SQL_CACHE, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySqlParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_CALC_FOUND_ROWS() { return getToken(MySqlParser.SQL_CALC_FOUND_ROWS, 0); }
		public SelectSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectSpec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectSpec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectSpec(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectSpecContext selectSpec() throws RecognitionException {
		SelectSpecContext _localctx = new SelectSpecContext(_ctx, getState());
		enterRule(_localctx, 234, RULE_selectSpec);
		int _la;
		try {
			setState(3513);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
			case DISTINCT:
			case DISTINCTROW:
				enterOuterAlt(_localctx, 1);
				{
				setState(3505);
				_la = _input.LA(1);
				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALL) | (1L << DISTINCT) | (1L << DISTINCTROW))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case HIGH_PRIORITY:
				enterOuterAlt(_localctx, 2);
				{
				setState(3506);
				match(HIGH_PRIORITY);
				}
				break;
			case STRAIGHT_JOIN:
				enterOuterAlt(_localctx, 3);
				{
				setState(3507);
				match(STRAIGHT_JOIN);
				}
				break;
			case SQL_SMALL_RESULT:
				enterOuterAlt(_localctx, 4);
				{
				setState(3508);
				match(SQL_SMALL_RESULT);
				}
				break;
			case SQL_BIG_RESULT:
				enterOuterAlt(_localctx, 5);
				{
				setState(3509);
				match(SQL_BIG_RESULT);
				}
				break;
			case SQL_BUFFER_RESULT:
				enterOuterAlt(_localctx, 6);
				{
				setState(3510);
				match(SQL_BUFFER_RESULT);
				}
				break;
			case SQL_CACHE:
			case SQL_NO_CACHE:
				enterOuterAlt(_localctx, 7);
				{
				setState(3511);
				_la = _input.LA(1);
				if ( !(_la==SQL_CACHE || _la==SQL_NO_CACHE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SQL_CALC_FOUND_ROWS:
				enterOuterAlt(_localctx, 8);
				{
				setState(3512);
				match(SQL_CALC_FOUND_ROWS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectElementsContext extends ParserRuleContext {
		public Token star;
		public List<SelectElementContext> selectElement() {
			return getRuleContexts(SelectElementContext.class);
		}
		public SelectElementContext selectElement(int i) {
			return getRuleContext(SelectElementContext.class,i);
		}
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SelectElementsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectElements; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectElements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectElements(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectElements(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectElementsContext selectElements() throws RecognitionException {
		SelectElementsContext _localctx = new SelectElementsContext(_ctx, getState());
		enterRule(_localctx, 236, RULE_selectElements);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3517);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STAR:
				{
				setState(3515);
				((SelectElementsContext)_localctx).star = match(STAR);
				}
				break;
			case CASE:
			case CAST:
			case CONVERT:
			case CURRENT:
			case CURRENT_USER:
			case DATABASE:
			case DIAGNOSTICS:
			case EXISTS:
			case FALSE:
			case IF:
			case INSERT:
			case INTERVAL:
			case LEFT:
			case NOT:
			case NULL_LITERAL:
			case NUMBER:
			case REPLACE:
			case RIGHT:
			case STACKED:
			case TRUE:
			case VALUES:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case CHAR:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case GROUP_CONCAT:
			case MAX:
			case MIN:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case EXTRACT:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case PLUS:
			case MINUS:
			case EXCLAMATION_SYMBOL:
			case BIT_NOT_OP:
			case LR_BRACKET:
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case CHARSET_REVERSE_QOUTE_STRING:
			case START_NATIONAL_STRING_LITERAL:
			case STRING_LITERAL:
			case DECIMAL_LITERAL:
			case HEXADECIMAL_LITERAL:
			case REAL_LITERAL:
			case NULL_SPEC_LITERAL:
			case BIT_STRING:
			case STRING_CHARSET_NAME:
			case ID:
			case REVERSE_QUOTE_ID:
			case LOCAL_ID:
			case GLOBAL_ID:
				{
				setState(3516);
				selectElement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3523);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3519);
				match(COMMA);
				setState(3520);
				selectElement();
				}
				}
				setState(3525);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectElementContext extends ParserRuleContext {
		public SelectElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectElement; }
	 
		public SelectElementContext() { }
		public void copyFrom(SelectElementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SelectExpressionElementContext extends SelectElementContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode VAR_ASSIGN() { return getToken(MySqlParser.VAR_ASSIGN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectExpressionElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectExpressionElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectExpressionElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectExpressionElement(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SelectFunctionElementContext extends SelectElementContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectFunctionElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectFunctionElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectFunctionElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectFunctionElement(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SelectStarElementContext extends SelectElementContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public SelectStarElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectStarElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectStarElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectStarElement(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SelectColumnElementContext extends SelectElementContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectColumnElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectColumnElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectColumnElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectColumnElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectElementContext selectElement() throws RecognitionException {
		SelectElementContext _localctx = new SelectElementContext(_ctx, getState());
		enterRule(_localctx, 238, RULE_selectElement);
		int _la;
		try {
			setState(3555);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,512,_ctx) ) {
			case 1:
				_localctx = new SelectStarElementContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3526);
				fullId();
				setState(3527);
				match(DOT);
				setState(3528);
				match(STAR);
				}
				break;
			case 2:
				_localctx = new SelectColumnElementContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3530);
				fullColumnName();
				setState(3535);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,506,_ctx) ) {
				case 1:
					{
					setState(3532);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(3531);
						match(AS);
						}
					}

					setState(3534);
					uid();
					}
					break;
				}
				}
				break;
			case 3:
				_localctx = new SelectFunctionElementContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3537);
				functionCall();
				setState(3542);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,508,_ctx) ) {
				case 1:
					{
					setState(3539);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(3538);
						match(AS);
						}
					}

					setState(3541);
					uid();
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new SelectExpressionElementContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3546);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,509,_ctx) ) {
				case 1:
					{
					setState(3544);
					match(LOCAL_ID);
					setState(3545);
					match(VAR_ASSIGN);
					}
					break;
				}
				setState(3548);
				expression(0);
				setState(3553);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,511,_ctx) ) {
				case 1:
					{
					setState(3550);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(3549);
						match(AS);
						}
					}

					setState(3552);
					uid();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectIntoExpressionContext extends ParserRuleContext {
		public SelectIntoExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectIntoExpression; }
	 
		public SelectIntoExpressionContext() { }
		public void copyFrom(SelectIntoExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SelectIntoVariablesContext extends SelectIntoExpressionContext {
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public List<AssignmentFieldContext> assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SelectIntoVariablesContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoVariables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoVariables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectIntoVariables(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SelectIntoTextFileContext extends SelectIntoExpressionContext {
		public Token filename;
		public CharsetNameContext charset;
		public Token fieldsFormat;
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode OUTFILE() { return getToken(MySqlParser.OUTFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode LINES() { return getToken(MySqlParser.LINES, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public List<SelectFieldsIntoContext> selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List<SelectLinesIntoContext> selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public SelectIntoTextFileContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoTextFile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoTextFile(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectIntoTextFile(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SelectIntoDumpFileContext extends SelectIntoExpressionContext {
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode DUMPFILE() { return getToken(MySqlParser.DUMPFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public SelectIntoDumpFileContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoDumpFile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoDumpFile(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectIntoDumpFile(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectIntoExpressionContext selectIntoExpression() throws RecognitionException {
		SelectIntoExpressionContext _localctx = new SelectIntoExpressionContext(_ctx, getState());
		enterRule(_localctx, 240, RULE_selectIntoExpression);
		int _la;
		try {
			setState(3593);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,519,_ctx) ) {
			case 1:
				_localctx = new SelectIntoVariablesContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3557);
				match(INTO);
				setState(3558);
				assignmentField();
				setState(3563);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3559);
					match(COMMA);
					setState(3560);
					assignmentField();
					}
					}
					setState(3565);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new SelectIntoDumpFileContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3566);
				match(INTO);
				setState(3567);
				match(DUMPFILE);
				setState(3568);
				match(STRING_LITERAL);
				}
				break;
			case 3:
				_localctx = new SelectIntoTextFileContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				{
				setState(3569);
				match(INTO);
				setState(3570);
				match(OUTFILE);
				setState(3571);
				((SelectIntoTextFileContext)_localctx).filename = match(STRING_LITERAL);
				setState(3575);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHARACTER) {
					{
					setState(3572);
					match(CHARACTER);
					setState(3573);
					match(SET);
					setState(3574);
					((SelectIntoTextFileContext)_localctx).charset = charsetName();
					}
				}

				setState(3583);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,516,_ctx) ) {
				case 1:
					{
					setState(3577);
					((SelectIntoTextFileContext)_localctx).fieldsFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==COLUMNS || _la==FIELDS) ) {
						((SelectIntoTextFileContext)_localctx).fieldsFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(3579); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(3578);
						selectFieldsInto();
						}
						}
						setState(3581); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==ENCLOSED || _la==ESCAPED || _la==OPTIONALLY || _la==TERMINATED );
					}
					break;
				}
				setState(3591);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINES) {
					{
					setState(3585);
					match(LINES);
					setState(3587); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(3586);
						selectLinesInto();
						}
						}
						setState(3589); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==STARTING || _la==TERMINATED );
					}
				}

				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectFieldsIntoContext extends ParserRuleContext {
		public Token terminationField;
		public Token enclosion;
		public Token escaping;
		public TerminalNode TERMINATED() { return getToken(MySqlParser.TERMINATED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENCLOSED() { return getToken(MySqlParser.ENCLOSED, 0); }
		public TerminalNode OPTIONALLY() { return getToken(MySqlParser.OPTIONALLY, 0); }
		public TerminalNode ESCAPED() { return getToken(MySqlParser.ESCAPED, 0); }
		public SelectFieldsIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectFieldsInto; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectFieldsInto(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectFieldsInto(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectFieldsInto(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectFieldsIntoContext selectFieldsInto() throws RecognitionException {
		SelectFieldsIntoContext _localctx = new SelectFieldsIntoContext(_ctx, getState());
		enterRule(_localctx, 242, RULE_selectFieldsInto);
		int _la;
		try {
			setState(3607);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TERMINATED:
				enterOuterAlt(_localctx, 1);
				{
				setState(3595);
				match(TERMINATED);
				setState(3596);
				match(BY);
				setState(3597);
				((SelectFieldsIntoContext)_localctx).terminationField = match(STRING_LITERAL);
				}
				break;
			case ENCLOSED:
			case OPTIONALLY:
				enterOuterAlt(_localctx, 2);
				{
				setState(3599);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OPTIONALLY) {
					{
					setState(3598);
					match(OPTIONALLY);
					}
				}

				setState(3601);
				match(ENCLOSED);
				setState(3602);
				match(BY);
				setState(3603);
				((SelectFieldsIntoContext)_localctx).enclosion = match(STRING_LITERAL);
				}
				break;
			case ESCAPED:
				enterOuterAlt(_localctx, 3);
				{
				setState(3604);
				match(ESCAPED);
				setState(3605);
				match(BY);
				setState(3606);
				((SelectFieldsIntoContext)_localctx).escaping = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectLinesIntoContext extends ParserRuleContext {
		public Token starting;
		public Token terminationLine;
		public TerminalNode STARTING() { return getToken(MySqlParser.STARTING, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode TERMINATED() { return getToken(MySqlParser.TERMINATED, 0); }
		public SelectLinesIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectLinesInto; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectLinesInto(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectLinesInto(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSelectLinesInto(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectLinesIntoContext selectLinesInto() throws RecognitionException {
		SelectLinesIntoContext _localctx = new SelectLinesIntoContext(_ctx, getState());
		enterRule(_localctx, 244, RULE_selectLinesInto);
		try {
			setState(3615);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STARTING:
				enterOuterAlt(_localctx, 1);
				{
				setState(3609);
				match(STARTING);
				setState(3610);
				match(BY);
				setState(3611);
				((SelectLinesIntoContext)_localctx).starting = match(STRING_LITERAL);
				}
				break;
			case TERMINATED:
				enterOuterAlt(_localctx, 2);
				{
				setState(3612);
				match(TERMINATED);
				setState(3613);
				match(BY);
				setState(3614);
				((SelectLinesIntoContext)_localctx).terminationLine = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromClauseContext extends ParserRuleContext {
		public ExpressionContext whereExpr;
		public ExpressionContext havingExpr;
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List<GroupByItemContext> groupByItem() {
			return getRuleContexts(GroupByItemContext.class);
		}
		public GroupByItemContext groupByItem(int i) {
			return getRuleContext(GroupByItemContext.class,i);
		}
		public TerminalNode HAVING() { return getToken(MySqlParser.HAVING, 0); }
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode ROLLUP() { return getToken(MySqlParser.ROLLUP, 0); }
		public FromClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFromClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFromClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFromClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromClauseContext fromClause() throws RecognitionException {
		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
		enterRule(_localctx, 246, RULE_fromClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3617);
			match(FROM);
			setState(3618);
			tableSources();
			setState(3621);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3619);
				match(WHERE);
				setState(3620);
				((FromClauseContext)_localctx).whereExpr = expression(0);
				}
			}

			setState(3637);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GROUP) {
				{
				setState(3623);
				match(GROUP);
				setState(3624);
				match(BY);
				setState(3625);
				groupByItem();
				setState(3630);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3626);
					match(COMMA);
					setState(3627);
					groupByItem();
					}
					}
					setState(3632);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3635);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,525,_ctx) ) {
				case 1:
					{
					setState(3633);
					match(WITH);
					setState(3634);
					match(ROLLUP);
					}
					break;
				}
				}
			}

			setState(3641);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==HAVING) {
				{
				setState(3639);
				match(HAVING);
				setState(3640);
				((FromClauseContext)_localctx).havingExpr = expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByItemContext extends ParserRuleContext {
		public Token order;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public GroupByItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByItem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGroupByItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGroupByItem(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGroupByItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupByItemContext groupByItem() throws RecognitionException {
		GroupByItemContext _localctx = new GroupByItemContext(_ctx, getState());
		enterRule(_localctx, 248, RULE_groupByItem);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3643);
			expression(0);
			setState(3645);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,528,_ctx) ) {
			case 1:
				{
				setState(3644);
				((GroupByItemContext)_localctx).order = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((GroupByItemContext)_localctx).order = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitClauseContext extends ParserRuleContext {
		public LimitClauseAtomContext offset;
		public LimitClauseAtomContext limit;
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public TerminalNode OFFSET() { return getToken(MySqlParser.OFFSET, 0); }
		public List<LimitClauseAtomContext> limitClauseAtom() {
			return getRuleContexts(LimitClauseAtomContext.class);
		}
		public LimitClauseAtomContext limitClauseAtom(int i) {
			return getRuleContext(LimitClauseAtomContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public LimitClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLimitClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLimitClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLimitClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitClauseContext limitClause() throws RecognitionException {
		LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState());
		enterRule(_localctx, 250, RULE_limitClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3647);
			match(LIMIT);
			setState(3658);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,530,_ctx) ) {
			case 1:
				{
				setState(3651);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,529,_ctx) ) {
				case 1:
					{
					setState(3648);
					((LimitClauseContext)_localctx).offset = limitClauseAtom();
					setState(3649);
					match(COMMA);
					}
					break;
				}
				setState(3653);
				((LimitClauseContext)_localctx).limit = limitClauseAtom();
				}
				break;
			case 2:
				{
				setState(3654);
				((LimitClauseContext)_localctx).limit = limitClauseAtom();
				setState(3655);
				match(OFFSET);
				setState(3656);
				((LimitClauseContext)_localctx).offset = limitClauseAtom();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitClauseAtomContext extends ParserRuleContext {
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public LimitClauseAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClauseAtom; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLimitClauseAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLimitClauseAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLimitClauseAtom(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitClauseAtomContext limitClauseAtom() throws RecognitionException {
		LimitClauseAtomContext _localctx = new LimitClauseAtomContext(_ctx, getState());
		enterRule(_localctx, 252, RULE_limitClauseAtom);
		try {
			setState(3662);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(3660);
				decimalLiteral();
				}
				break;
			case LOCAL_ID:
			case GLOBAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(3661);
				mysqlVariable();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartTransactionContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public List<TransactionModeContext> transactionMode() {
			return getRuleContexts(TransactionModeContext.class);
		}
		public TransactionModeContext transactionMode(int i) {
			return getRuleContext(TransactionModeContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StartTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartTransaction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStartTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartTransactionContext startTransaction() throws RecognitionException {
		StartTransactionContext _localctx = new StartTransactionContext(_ctx, getState());
		enterRule(_localctx, 254, RULE_startTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3664);
			match(START);
			setState(3665);
			match(TRANSACTION);
			setState(3674);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==READ || _la==WITH) {
				{
				setState(3666);
				transactionMode();
				setState(3671);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3667);
					match(COMMA);
					setState(3668);
					transactionMode();
					}
					}
					setState(3673);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginWorkContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public BeginWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBeginWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBeginWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBeginWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BeginWorkContext beginWork() throws RecognitionException {
		BeginWorkContext _localctx = new BeginWorkContext(_ctx, getState());
		enterRule(_localctx, 256, RULE_beginWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3676);
			match(BEGIN);
			setState(3678);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(3677);
				match(WORK);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommitWorkContext extends ParserRuleContext {
		public Token nochain;
		public Token norelease;
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public List<TerminalNode> NO() { return getTokens(MySqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(MySqlParser.NO, i);
		}
		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commitWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCommitWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCommitWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCommitWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommitWorkContext commitWork() throws RecognitionException {
		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
		enterRule(_localctx, 258, RULE_commitWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3680);
			match(COMMIT);
			setState(3682);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(3681);
				match(WORK);
				}
			}

			setState(3689);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(3684);
				match(AND);
				setState(3686);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(3685);
					((CommitWorkContext)_localctx).nochain = match(NO);
					}
				}

				setState(3688);
				match(CHAIN);
				}
			}

			setState(3695);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,539,_ctx) ) {
			case 1:
				{
				setState(3692);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(3691);
					((CommitWorkContext)_localctx).norelease = match(NO);
					}
				}

				setState(3694);
				match(RELEASE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackWorkContext extends ParserRuleContext {
		public Token nochain;
		public Token norelease;
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public List<TerminalNode> NO() { return getTokens(MySqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(MySqlParser.NO, i);
		}
		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRollbackWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRollbackWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRollbackWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackWorkContext rollbackWork() throws RecognitionException {
		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
		enterRule(_localctx, 260, RULE_rollbackWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3697);
			match(ROLLBACK);
			setState(3699);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(3698);
				match(WORK);
				}
			}

			setState(3706);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(3701);
				match(AND);
				setState(3703);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(3702);
					((RollbackWorkContext)_localctx).nochain = match(NO);
					}
				}

				setState(3705);
				match(CHAIN);
				}
			}

			setState(3712);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,544,_ctx) ) {
			case 1:
				{
				setState(3709);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(3708);
					((RollbackWorkContext)_localctx).norelease = match(NO);
					}
				}

				setState(3711);
				match(RELEASE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SavepointStatementContext extends ParserRuleContext {
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public SavepointStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_savepointStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSavepointStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSavepointStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSavepointStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SavepointStatementContext savepointStatement() throws RecognitionException {
		SavepointStatementContext _localctx = new SavepointStatementContext(_ctx, getState());
		enterRule(_localctx, 262, RULE_savepointStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3714);
			match(SAVEPOINT);
			setState(3715);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackStatementContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public RollbackStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRollbackStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRollbackStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRollbackStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackStatementContext rollbackStatement() throws RecognitionException {
		RollbackStatementContext _localctx = new RollbackStatementContext(_ctx, getState());
		enterRule(_localctx, 264, RULE_rollbackStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3717);
			match(ROLLBACK);
			setState(3719);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(3718);
				match(WORK);
				}
			}

			setState(3721);
			match(TO);
			setState(3723);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,546,_ctx) ) {
			case 1:
				{
				setState(3722);
				match(SAVEPOINT);
				}
				break;
			}
			setState(3725);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReleaseStatementContext extends ParserRuleContext {
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ReleaseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_releaseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReleaseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReleaseStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReleaseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReleaseStatementContext releaseStatement() throws RecognitionException {
		ReleaseStatementContext _localctx = new ReleaseStatementContext(_ctx, getState());
		enterRule(_localctx, 266, RULE_releaseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3727);
			match(RELEASE);
			setState(3728);
			match(SAVEPOINT);
			setState(3729);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockTablesContext extends ParserRuleContext {
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public List<LockTableElementContext> lockTableElement() {
			return getRuleContexts(LockTableElementContext.class);
		}
		public LockTableElementContext lockTableElement(int i) {
			return getRuleContext(LockTableElementContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LockTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockTables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockTables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLockTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockTablesContext lockTables() throws RecognitionException {
		LockTablesContext _localctx = new LockTablesContext(_ctx, getState());
		enterRule(_localctx, 268, RULE_lockTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3731);
			match(LOCK);
			setState(3732);
			match(TABLES);
			setState(3733);
			lockTableElement();
			setState(3738);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3734);
				match(COMMA);
				setState(3735);
				lockTableElement();
				}
				}
				setState(3740);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnlockTablesContext extends ParserRuleContext {
		public TerminalNode UNLOCK() { return getToken(MySqlParser.UNLOCK, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public UnlockTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unlockTables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnlockTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnlockTables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnlockTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnlockTablesContext unlockTables() throws RecognitionException {
		UnlockTablesContext _localctx = new UnlockTablesContext(_ctx, getState());
		enterRule(_localctx, 270, RULE_unlockTables);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3741);
			match(UNLOCK);
			setState(3742);
			match(TABLES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetAutocommitStatementContext extends ParserRuleContext {
		public Token autocommitValue;
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySqlParser.AUTOCOMMIT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public SetAutocommitStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setAutocommitStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetAutocommitStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetAutocommitStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetAutocommitStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetAutocommitStatementContext setAutocommitStatement() throws RecognitionException {
		SetAutocommitStatementContext _localctx = new SetAutocommitStatementContext(_ctx, getState());
		enterRule(_localctx, 272, RULE_setAutocommitStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3744);
			match(SET);
			setState(3745);
			match(AUTOCOMMIT);
			setState(3746);
			match(EQUAL_SYMBOL);
			setState(3747);
			((SetAutocommitStatementContext)_localctx).autocommitValue = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
				((SetAutocommitStatementContext)_localctx).autocommitValue = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTransactionStatementContext extends ParserRuleContext {
		public Token transactionContext;
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public List<TransactionOptionContext> transactionOption() {
			return getRuleContexts(TransactionOptionContext.class);
		}
		public TransactionOptionContext transactionOption(int i) {
			return getRuleContext(TransactionOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public SetTransactionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTransactionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetTransactionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetTransactionStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetTransactionStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetTransactionStatementContext setTransactionStatement() throws RecognitionException {
		SetTransactionStatementContext _localctx = new SetTransactionStatementContext(_ctx, getState());
		enterRule(_localctx, 274, RULE_setTransactionStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3749);
			match(SET);
			setState(3751);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==SESSION) {
				{
				setState(3750);
				((SetTransactionStatementContext)_localctx).transactionContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==SESSION) ) {
					((SetTransactionStatementContext)_localctx).transactionContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3753);
			match(TRANSACTION);
			setState(3754);
			transactionOption();
			setState(3759);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3755);
				match(COMMA);
				setState(3756);
				transactionOption();
				}
				}
				setState(3761);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionModeContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySqlParser.CONSISTENT, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySqlParser.SNAPSHOT, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TransactionModeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionMode; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionMode(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionMode(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTransactionMode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionModeContext transactionMode() throws RecognitionException {
		TransactionModeContext _localctx = new TransactionModeContext(_ctx, getState());
		enterRule(_localctx, 276, RULE_transactionMode);
		try {
			setState(3769);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,550,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3762);
				match(WITH);
				setState(3763);
				match(CONSISTENT);
				setState(3764);
				match(SNAPSHOT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3765);
				match(READ);
				setState(3766);
				match(WRITE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3767);
				match(READ);
				setState(3768);
				match(ONLY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockTableElementContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public LockActionContext lockAction() {
			return getRuleContext(LockActionContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public LockTableElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockTableElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockTableElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockTableElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLockTableElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockTableElementContext lockTableElement() throws RecognitionException {
		LockTableElementContext _localctx = new LockTableElementContext(_ctx, getState());
		enterRule(_localctx, 278, RULE_lockTableElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3771);
			tableName();
			setState(3776);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << AS) | (1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(3773);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3772);
					match(AS);
					}
				}

				setState(3775);
				uid();
				}
			}

			setState(3778);
			lockAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockActionContext extends ParserRuleContext {
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public LockActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockAction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockAction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockAction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLockAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockActionContext lockAction() throws RecognitionException {
		LockActionContext _localctx = new LockActionContext(_ctx, getState());
		enterRule(_localctx, 280, RULE_lockAction);
		int _la;
		try {
			setState(3788);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case READ:
				enterOuterAlt(_localctx, 1);
				{
				setState(3780);
				match(READ);
				setState(3782);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL) {
					{
					setState(3781);
					match(LOCAL);
					}
				}

				}
				break;
			case LOW_PRIORITY:
			case WRITE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3785);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOW_PRIORITY) {
					{
					setState(3784);
					match(LOW_PRIORITY);
					}
				}

				setState(3787);
				match(WRITE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionOptionContext extends ParserRuleContext {
		public TerminalNode ISOLATION() { return getToken(MySqlParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TransactionLevelContext transactionLevel() {
			return getRuleContext(TransactionLevelContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TransactionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTransactionOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionOptionContext transactionOption() throws RecognitionException {
		TransactionOptionContext _localctx = new TransactionOptionContext(_ctx, getState());
		enterRule(_localctx, 282, RULE_transactionOption);
		try {
			setState(3797);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3790);
				match(ISOLATION);
				setState(3791);
				match(LEVEL);
				setState(3792);
				transactionLevel();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3793);
				match(READ);
				setState(3794);
				match(WRITE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3795);
				match(READ);
				setState(3796);
				match(ONLY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionLevelContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(MySqlParser.REPEATABLE, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode COMMITTED() { return getToken(MySqlParser.COMMITTED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySqlParser.UNCOMMITTED, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySqlParser.SERIALIZABLE, 0); }
		public TransactionLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionLevel; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTransactionLevel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionLevelContext transactionLevel() throws RecognitionException {
		TransactionLevelContext _localctx = new TransactionLevelContext(_ctx, getState());
		enterRule(_localctx, 284, RULE_transactionLevel);
		try {
			setState(3806);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,557,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3799);
				match(REPEATABLE);
				setState(3800);
				match(READ);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3801);
				match(READ);
				setState(3802);
				match(COMMITTED);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3803);
				match(READ);
				setState(3804);
				match(UNCOMMITTED);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3805);
				match(SERIALIZABLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeMasterContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List<MasterOptionContext> masterOption() {
			return getRuleContexts(MasterOptionContext.class);
		}
		public MasterOptionContext masterOption(int i) {
			return getRuleContext(MasterOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChangeMasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeMaster; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChangeMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChangeMaster(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitChangeMaster(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChangeMasterContext changeMaster() throws RecognitionException {
		ChangeMasterContext _localctx = new ChangeMasterContext(_ctx, getState());
		enterRule(_localctx, 286, RULE_changeMaster);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3808);
			match(CHANGE);
			setState(3809);
			match(MASTER);
			setState(3810);
			match(TO);
			setState(3811);
			masterOption();
			setState(3816);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3812);
				match(COMMA);
				setState(3813);
				masterOption();
				}
				}
				setState(3818);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3820);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(3819);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeReplicationFilterContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode FILTER() { return getToken(MySqlParser.FILTER, 0); }
		public List<ReplicationFilterContext> replicationFilter() {
			return getRuleContexts(ReplicationFilterContext.class);
		}
		public ReplicationFilterContext replicationFilter(int i) {
			return getRuleContext(ReplicationFilterContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ChangeReplicationFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeReplicationFilter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChangeReplicationFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChangeReplicationFilter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitChangeReplicationFilter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChangeReplicationFilterContext changeReplicationFilter() throws RecognitionException {
		ChangeReplicationFilterContext _localctx = new ChangeReplicationFilterContext(_ctx, getState());
		enterRule(_localctx, 288, RULE_changeReplicationFilter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3822);
			match(CHANGE);
			setState(3823);
			match(REPLICATION);
			setState(3824);
			match(FILTER);
			setState(3825);
			replicationFilter();
			setState(3830);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3826);
				match(COMMA);
				setState(3827);
				replicationFilter();
				}
				}
				setState(3832);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PurgeBinaryLogsContext extends ParserRuleContext {
		public Token purgeFormat;
		public Token fileName;
		public Token timeValue;
		public TerminalNode PURGE() { return getToken(MySqlParser.PURGE, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode BEFORE() { return getToken(MySqlParser.BEFORE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PurgeBinaryLogsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_purgeBinaryLogs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPurgeBinaryLogs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPurgeBinaryLogs(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPurgeBinaryLogs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PurgeBinaryLogsContext purgeBinaryLogs() throws RecognitionException {
		PurgeBinaryLogsContext _localctx = new PurgeBinaryLogsContext(_ctx, getState());
		enterRule(_localctx, 290, RULE_purgeBinaryLogs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3833);
			match(PURGE);
			setState(3834);
			((PurgeBinaryLogsContext)_localctx).purgeFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BINARY || _la==MASTER) ) {
				((PurgeBinaryLogsContext)_localctx).purgeFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3835);
			match(LOGS);
			setState(3840);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TO:
				{
				setState(3836);
				match(TO);
				setState(3837);
				((PurgeBinaryLogsContext)_localctx).fileName = match(STRING_LITERAL);
				}
				break;
			case BEFORE:
				{
				setState(3838);
				match(BEFORE);
				setState(3839);
				((PurgeBinaryLogsContext)_localctx).timeValue = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetMasterContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public ResetMasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetMaster; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetMaster(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitResetMaster(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetMasterContext resetMaster() throws RecognitionException {
		ResetMasterContext _localctx = new ResetMasterContext(_ctx, getState());
		enterRule(_localctx, 292, RULE_resetMaster);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3842);
			match(RESET);
			setState(3843);
			match(MASTER);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetSlaveContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ResetSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetSlave(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitResetSlave(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetSlaveContext resetSlave() throws RecognitionException {
		ResetSlaveContext _localctx = new ResetSlaveContext(_ctx, getState());
		enterRule(_localctx, 294, RULE_resetSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3845);
			match(RESET);
			setState(3846);
			match(SLAVE);
			setState(3848);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL) {
				{
				setState(3847);
				match(ALL);
				}
			}

			setState(3851);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(3850);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartSlaveContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public List<ThreadTypeContext> threadType() {
			return getRuleContexts(ThreadTypeContext.class);
		}
		public ThreadTypeContext threadType(int i) {
			return getRuleContext(ThreadTypeContext.class,i);
		}
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public UntilOptionContext untilOption() {
			return getRuleContext(UntilOptionContext.class,0);
		}
		public List<ConnectionOptionContext> connectionOption() {
			return getRuleContexts(ConnectionOptionContext.class);
		}
		public ConnectionOptionContext connectionOption(int i) {
			return getRuleContext(ConnectionOptionContext.class,i);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StartSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartSlave(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStartSlave(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartSlaveContext startSlave() throws RecognitionException {
		StartSlaveContext _localctx = new StartSlaveContext(_ctx, getState());
		enterRule(_localctx, 296, RULE_startSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3853);
			match(START);
			setState(3854);
			match(SLAVE);
			setState(3863);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IO_THREAD || _la==SQL_THREAD) {
				{
				setState(3855);
				threadType();
				setState(3860);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3856);
					match(COMMA);
					setState(3857);
					threadType();
					}
					}
					setState(3862);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(3867);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNTIL) {
				{
				setState(3865);
				match(UNTIL);
				setState(3866);
				untilOption();
				}
			}

			setState(3872);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DEFAULT_AUTH || _la==PASSWORD || _la==PLUGIN_DIR || _la==USER) {
				{
				{
				setState(3869);
				connectionOption();
				}
				}
				setState(3874);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3876);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(3875);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopSlaveContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public List<ThreadTypeContext> threadType() {
			return getRuleContexts(ThreadTypeContext.class);
		}
		public ThreadTypeContext threadType(int i) {
			return getRuleContext(ThreadTypeContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StopSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStopSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStopSlave(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStopSlave(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StopSlaveContext stopSlave() throws RecognitionException {
		StopSlaveContext _localctx = new StopSlaveContext(_ctx, getState());
		enterRule(_localctx, 298, RULE_stopSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3878);
			match(STOP);
			setState(3879);
			match(SLAVE);
			setState(3888);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IO_THREAD || _la==SQL_THREAD) {
				{
				setState(3880);
				threadType();
				setState(3885);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3881);
					match(COMMA);
					setState(3882);
					threadType();
					}
					}
					setState(3887);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartGroupReplicationContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public StartGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startGroupReplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartGroupReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartGroupReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStartGroupReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartGroupReplicationContext startGroupReplication() throws RecognitionException {
		StartGroupReplicationContext _localctx = new StartGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 300, RULE_startGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3890);
			match(START);
			setState(3891);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopGroupReplicationContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public StopGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopGroupReplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStopGroupReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStopGroupReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStopGroupReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StopGroupReplicationContext stopGroupReplication() throws RecognitionException {
		StopGroupReplicationContext _localctx = new StopGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 302, RULE_stopGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3893);
			match(STOP);
			setState(3894);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MasterOptionContext extends ParserRuleContext {
		public MasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_masterOption; }
	 
		public MasterOptionContext() { }
		public void copyFrom(MasterOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class MasterStringOptionContext extends MasterOptionContext {
		public StringMasterOptionContext stringMasterOption() {
			return getRuleContext(StringMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public MasterStringOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterStringOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterStringOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterStringOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MasterRealOptionContext extends MasterOptionContext {
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode REAL_LITERAL() { return getToken(MySqlParser.REAL_LITERAL, 0); }
		public MasterRealOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterRealOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterRealOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterRealOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MasterBoolOptionContext extends MasterOptionContext {
		public Token boolVal;
		public BoolMasterOptionContext boolMasterOption() {
			return getRuleContext(BoolMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public MasterBoolOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterBoolOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterBoolOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterBoolOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MasterUidListOptionContext extends MasterOptionContext {
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySqlParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public MasterUidListOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterUidListOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterUidListOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterUidListOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MasterDecimalOptionContext extends MasterOptionContext {
		public DecimalMasterOptionContext decimalMasterOption() {
			return getRuleContext(DecimalMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MasterDecimalOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterDecimalOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterDecimalOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterDecimalOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MasterOptionContext masterOption() throws RecognitionException {
		MasterOptionContext _localctx = new MasterOptionContext(_ctx, getState());
		enterRule(_localctx, 304, RULE_masterOption);
		int _la;
		try {
			setState(3925);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MASTER_BIND:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_PASSWORD:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case RELAY_LOG_FILE:
				_localctx = new MasterStringOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3896);
				stringMasterOption();
				setState(3897);
				match(EQUAL_SYMBOL);
				setState(3898);
				match(STRING_LITERAL);
				}
				break;
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_LOG_POS:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case RELAY_LOG_POS:
				_localctx = new MasterDecimalOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3900);
				decimalMasterOption();
				setState(3901);
				match(EQUAL_SYMBOL);
				setState(3902);
				decimalLiteral();
				}
				break;
			case MASTER_SSL_VERIFY_SERVER_CERT:
			case MASTER_AUTO_POSITION:
			case MASTER_SSL:
				_localctx = new MasterBoolOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3904);
				boolMasterOption();
				setState(3905);
				match(EQUAL_SYMBOL);
				setState(3906);
				((MasterBoolOptionContext)_localctx).boolVal = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((MasterBoolOptionContext)_localctx).boolVal = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case MASTER_HEARTBEAT_PERIOD:
				_localctx = new MasterRealOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3908);
				match(MASTER_HEARTBEAT_PERIOD);
				setState(3909);
				match(EQUAL_SYMBOL);
				setState(3910);
				match(REAL_LITERAL);
				}
				break;
			case IGNORE_SERVER_IDS:
				_localctx = new MasterUidListOptionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(3911);
				match(IGNORE_SERVER_IDS);
				setState(3912);
				match(EQUAL_SYMBOL);
				setState(3913);
				match(LR_BRACKET);
				setState(3922);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
					{
					setState(3914);
					uid();
					setState(3919);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(3915);
						match(COMMA);
						setState(3916);
						uid();
						}
						}
						setState(3921);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3924);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_BIND() { return getToken(MySqlParser.MASTER_BIND, 0); }
		public TerminalNode MASTER_HOST() { return getToken(MySqlParser.MASTER_HOST, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySqlParser.MASTER_USER, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySqlParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySqlParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySqlParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySqlParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySqlParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySqlParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySqlParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySqlParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySqlParser.MASTER_TLS_VERSION, 0); }
		public StringMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringMasterOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStringMasterOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StringMasterOptionContext stringMasterOption() throws RecognitionException {
		StringMasterOptionContext _localctx = new StringMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 306, RULE_stringMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3927);
			_la = _input.LA(1);
			if ( !(_la==MASTER_BIND || ((((_la - 410)) & ~0x3f) == 0 && ((1L << (_la - 410)) & ((1L << (MASTER_HOST - 410)) | (1L << (MASTER_LOG_FILE - 410)) | (1L << (MASTER_PASSWORD - 410)) | (1L << (MASTER_SSL_CA - 410)) | (1L << (MASTER_SSL_CAPATH - 410)) | (1L << (MASTER_SSL_CERT - 410)) | (1L << (MASTER_SSL_CIPHER - 410)) | (1L << (MASTER_SSL_CRL - 410)) | (1L << (MASTER_SSL_CRLPATH - 410)) | (1L << (MASTER_SSL_KEY - 410)) | (1L << (MASTER_TLS_VERSION - 410)) | (1L << (MASTER_USER - 410)))) != 0) || _la==RELAY_LOG_FILE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DecimalMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_PORT() { return getToken(MySqlParser.MASTER_PORT, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySqlParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySqlParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySqlParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public DecimalMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_decimalMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDecimalMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDecimalMasterOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDecimalMasterOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DecimalMasterOptionContext decimalMasterOption() throws RecognitionException {
		DecimalMasterOptionContext _localctx = new DecimalMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 308, RULE_decimalMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3929);
			_la = _input.LA(1);
			if ( !(((((_la - 407)) & ~0x3f) == 0 && ((1L << (_la - 407)) & ((1L << (MASTER_CONNECT_RETRY - 407)) | (1L << (MASTER_DELAY - 407)) | (1L << (MASTER_LOG_POS - 407)) | (1L << (MASTER_PORT - 407)) | (1L << (MASTER_RETRY_COUNT - 407)))) != 0) || _la==RELAY_LOG_POS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BoolMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySqlParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySqlParser.MASTER_SSL, 0); }
		public TerminalNode MASTER_SSL_VERIFY_SERVER_CERT() { return getToken(MySqlParser.MASTER_SSL_VERIFY_SERVER_CERT, 0); }
		public BoolMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_boolMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBoolMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBoolMasterOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBoolMasterOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BoolMasterOptionContext boolMasterOption() throws RecognitionException {
		BoolMasterOptionContext _localctx = new BoolMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 310, RULE_boolMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3931);
			_la = _input.LA(1);
			if ( !(_la==MASTER_SSL_VERIFY_SERVER_CERT || _la==MASTER_AUTO_POSITION || _la==MASTER_SSL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChannelOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public ChannelOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_channelOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChannelOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChannelOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitChannelOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChannelOptionContext channelOption() throws RecognitionException {
		ChannelOptionContext _localctx = new ChannelOptionContext(_ctx, getState());
		enterRule(_localctx, 312, RULE_channelOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3933);
			match(FOR);
			setState(3934);
			match(CHANNEL);
			setState(3935);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplicationFilterContext extends ParserRuleContext {
		public ReplicationFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replicationFilter; }
	 
		public ReplicationFilterContext() { }
		public void copyFrom(ReplicationFilterContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class WildIgnoreTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SimpleStringsContext simpleStrings() {
			return getRuleContext(SimpleStringsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public WildIgnoreTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWildIgnoreTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWildIgnoreTableReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitWildIgnoreTableReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DoTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySqlParser.REPLICATE_DO_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public DoTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoTableReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDoTableReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IgnoreTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public IgnoreTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIgnoreTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIgnoreTableReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIgnoreTableReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RewriteDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySqlParser.REPLICATE_REWRITE_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<TablePairContext> tablePair() {
			return getRuleContexts(TablePairContext.class);
		}
		public TablePairContext tablePair(int i) {
			return getRuleContext(TablePairContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RewriteDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRewriteDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRewriteDbReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRewriteDbReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DoDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySqlParser.REPLICATE_DO_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public DoDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoDbReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDoDbReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IgnoreDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySqlParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public IgnoreDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIgnoreDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIgnoreDbReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIgnoreDbReplication(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class WildDoTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SimpleStringsContext simpleStrings() {
			return getRuleContext(SimpleStringsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public WildDoTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWildDoTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWildDoTableReplication(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitWildDoTableReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplicationFilterContext replicationFilter() throws RecognitionException {
		ReplicationFilterContext _localctx = new ReplicationFilterContext(_ctx, getState());
		enterRule(_localctx, 314, RULE_replicationFilter);
		int _la;
		try {
			setState(3986);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REPLICATE_DO_DB:
				_localctx = new DoDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3937);
				match(REPLICATE_DO_DB);
				setState(3938);
				match(EQUAL_SYMBOL);
				setState(3939);
				match(LR_BRACKET);
				setState(3940);
				uidList();
				setState(3941);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_IGNORE_DB:
				_localctx = new IgnoreDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3943);
				match(REPLICATE_IGNORE_DB);
				setState(3944);
				match(EQUAL_SYMBOL);
				setState(3945);
				match(LR_BRACKET);
				setState(3946);
				uidList();
				setState(3947);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_DO_TABLE:
				_localctx = new DoTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3949);
				match(REPLICATE_DO_TABLE);
				setState(3950);
				match(EQUAL_SYMBOL);
				setState(3951);
				match(LR_BRACKET);
				setState(3952);
				tables();
				setState(3953);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_IGNORE_TABLE:
				_localctx = new IgnoreTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3955);
				match(REPLICATE_IGNORE_TABLE);
				setState(3956);
				match(EQUAL_SYMBOL);
				setState(3957);
				match(LR_BRACKET);
				setState(3958);
				tables();
				setState(3959);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_WILD_DO_TABLE:
				_localctx = new WildDoTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(3961);
				match(REPLICATE_WILD_DO_TABLE);
				setState(3962);
				match(EQUAL_SYMBOL);
				setState(3963);
				match(LR_BRACKET);
				setState(3964);
				simpleStrings();
				setState(3965);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_WILD_IGNORE_TABLE:
				_localctx = new WildIgnoreTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(3967);
				match(REPLICATE_WILD_IGNORE_TABLE);
				setState(3968);
				match(EQUAL_SYMBOL);
				setState(3969);
				match(LR_BRACKET);
				setState(3970);
				simpleStrings();
				setState(3971);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_REWRITE_DB:
				_localctx = new RewriteDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(3973);
				match(REPLICATE_REWRITE_DB);
				setState(3974);
				match(EQUAL_SYMBOL);
				setState(3975);
				match(LR_BRACKET);
				setState(3976);
				tablePair();
				setState(3981);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3977);
					match(COMMA);
					setState(3978);
					tablePair();
					}
					}
					setState(3983);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3984);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablePairContext extends ParserRuleContext {
		public TableNameContext firstTable;
		public TableNameContext secondTable;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TableNameContext> tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TablePairContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablePair; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTablePair(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTablePair(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTablePair(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TablePairContext tablePair() throws RecognitionException {
		TablePairContext _localctx = new TablePairContext(_ctx, getState());
		enterRule(_localctx, 316, RULE_tablePair);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3988);
			match(LR_BRACKET);
			setState(3989);
			((TablePairContext)_localctx).firstTable = tableName();
			setState(3990);
			match(COMMA);
			setState(3991);
			((TablePairContext)_localctx).secondTable = tableName();
			setState(3992);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ThreadTypeContext extends ParserRuleContext {
		public TerminalNode IO_THREAD() { return getToken(MySqlParser.IO_THREAD, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySqlParser.SQL_THREAD, 0); }
		public ThreadTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_threadType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterThreadType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitThreadType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitThreadType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ThreadTypeContext threadType() throws RecognitionException {
		ThreadTypeContext _localctx = new ThreadTypeContext(_ctx, getState());
		enterRule(_localctx, 318, RULE_threadType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3994);
			_la = _input.LA(1);
			if ( !(_la==IO_THREAD || _la==SQL_THREAD) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UntilOptionContext extends ParserRuleContext {
		public UntilOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_untilOption; }
	 
		public UntilOptionContext() { }
		public void copyFrom(UntilOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class GtidsUntilOptionContext extends UntilOptionContext {
		public Token gtids;
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public GtuidSetContext gtuidSet() {
			return getRuleContext(GtuidSetContext.class,0);
		}
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySqlParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySqlParser.SQL_AFTER_GTIDS, 0); }
		public GtidsUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGtidsUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGtidsUntilOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGtidsUntilOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SqlGapsUntilOptionContext extends UntilOptionContext {
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0); }
		public SqlGapsUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlGapsUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlGapsUntilOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSqlGapsUntilOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MasterLogUntilOptionContext extends UntilOptionContext {
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MasterLogUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterLogUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterLogUntilOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMasterLogUntilOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RelayLogUntilOptionContext extends UntilOptionContext {
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public RelayLogUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRelayLogUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRelayLogUntilOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRelayLogUntilOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UntilOptionContext untilOption() throws RecognitionException {
		UntilOptionContext _localctx = new UntilOptionContext(_ctx, getState());
		enterRule(_localctx, 320, RULE_untilOption);
		int _la;
		try {
			setState(4014);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQL_AFTER_GTIDS:
			case SQL_BEFORE_GTIDS:
				_localctx = new GtidsUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3996);
				((GtidsUntilOptionContext)_localctx).gtids = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==SQL_AFTER_GTIDS || _la==SQL_BEFORE_GTIDS) ) {
					((GtidsUntilOptionContext)_localctx).gtids = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3997);
				match(EQUAL_SYMBOL);
				setState(3998);
				gtuidSet();
				}
				break;
			case MASTER_LOG_FILE:
				_localctx = new MasterLogUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3999);
				match(MASTER_LOG_FILE);
				setState(4000);
				match(EQUAL_SYMBOL);
				setState(4001);
				match(STRING_LITERAL);
				setState(4002);
				match(COMMA);
				setState(4003);
				match(MASTER_LOG_POS);
				setState(4004);
				match(EQUAL_SYMBOL);
				setState(4005);
				decimalLiteral();
				}
				break;
			case RELAY_LOG_FILE:
				_localctx = new RelayLogUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4006);
				match(RELAY_LOG_FILE);
				setState(4007);
				match(EQUAL_SYMBOL);
				setState(4008);
				match(STRING_LITERAL);
				setState(4009);
				match(COMMA);
				setState(4010);
				match(RELAY_LOG_POS);
				setState(4011);
				match(EQUAL_SYMBOL);
				setState(4012);
				decimalLiteral();
				}
				break;
			case SQL_AFTER_MTS_GAPS:
				_localctx = new SqlGapsUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4013);
				match(SQL_AFTER_MTS_GAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectionOptionContext extends ParserRuleContext {
		public ConnectionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectionOption; }
	 
		public ConnectionOptionContext() { }
		public void copyFrom(ConnectionOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PluginDirConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptPluginDir;
		public TerminalNode PLUGIN_DIR() { return getToken(MySqlParser.PLUGIN_DIR, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PluginDirConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPluginDirConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPluginDirConnectionOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPluginDirConnectionOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class UserConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptUser;
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public UserConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserConnectionOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserConnectionOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DefaultAuthConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptDefAuth;
		public TerminalNode DEFAULT_AUTH() { return getToken(MySqlParser.DEFAULT_AUTH, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public DefaultAuthConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultAuthConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultAuthConnectionOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefaultAuthConnectionOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PasswordConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptPassword;
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PasswordConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordConnectionOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPasswordConnectionOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConnectionOptionContext connectionOption() throws RecognitionException {
		ConnectionOptionContext _localctx = new ConnectionOptionContext(_ctx, getState());
		enterRule(_localctx, 322, RULE_connectionOption);
		try {
			setState(4028);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case USER:
				_localctx = new UserConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4016);
				match(USER);
				setState(4017);
				match(EQUAL_SYMBOL);
				setState(4018);
				((UserConnectionOptionContext)_localctx).conOptUser = match(STRING_LITERAL);
				}
				break;
			case PASSWORD:
				_localctx = new PasswordConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4019);
				match(PASSWORD);
				setState(4020);
				match(EQUAL_SYMBOL);
				setState(4021);
				((PasswordConnectionOptionContext)_localctx).conOptPassword = match(STRING_LITERAL);
				}
				break;
			case DEFAULT_AUTH:
				_localctx = new DefaultAuthConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4022);
				match(DEFAULT_AUTH);
				setState(4023);
				match(EQUAL_SYMBOL);
				setState(4024);
				((DefaultAuthConnectionOptionContext)_localctx).conOptDefAuth = match(STRING_LITERAL);
				}
				break;
			case PLUGIN_DIR:
				_localctx = new PluginDirConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4025);
				match(PLUGIN_DIR);
				setState(4026);
				match(EQUAL_SYMBOL);
				setState(4027);
				((PluginDirConnectionOptionContext)_localctx).conOptPluginDir = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GtuidSetContext extends ParserRuleContext {
		public List<UuidSetContext> uuidSet() {
			return getRuleContexts(UuidSetContext.class);
		}
		public UuidSetContext uuidSet(int i) {
			return getRuleContext(UuidSetContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public GtuidSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_gtuidSet; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGtuidSet(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGtuidSet(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGtuidSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GtuidSetContext gtuidSet() throws RecognitionException {
		GtuidSetContext _localctx = new GtuidSetContext(_ctx, getState());
		enterRule(_localctx, 324, RULE_gtuidSet);
		int _la;
		try {
			setState(4039);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4030);
				uuidSet();
				setState(4035);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4031);
					match(COMMA);
					setState(4032);
					uuidSet();
					}
					}
					setState(4037);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(4038);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaStartTransactionContext extends ParserRuleContext {
		public Token xaStart;
		public Token xaAction;
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TerminalNode RESUME() { return getToken(MySqlParser.RESUME, 0); }
		public XaStartTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaStartTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaStartTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaStartTransaction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaStartTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaStartTransactionContext xaStartTransaction() throws RecognitionException {
		XaStartTransactionContext _localctx = new XaStartTransactionContext(_ctx, getState());
		enterRule(_localctx, 326, RULE_xaStartTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4041);
			match(XA);
			setState(4042);
			((XaStartTransactionContext)_localctx).xaStart = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BEGIN || _la==START) ) {
				((XaStartTransactionContext)_localctx).xaStart = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4043);
			xid();
			setState(4045);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==JOIN || _la==RESUME) {
				{
				setState(4044);
				((XaStartTransactionContext)_localctx).xaAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JOIN || _la==RESUME) ) {
					((XaStartTransactionContext)_localctx).xaAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaEndTransactionContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode SUSPEND() { return getToken(MySqlParser.SUSPEND, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode MIGRATE() { return getToken(MySqlParser.MIGRATE, 0); }
		public XaEndTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaEndTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaEndTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaEndTransaction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaEndTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaEndTransactionContext xaEndTransaction() throws RecognitionException {
		XaEndTransactionContext _localctx = new XaEndTransactionContext(_ctx, getState());
		enterRule(_localctx, 328, RULE_xaEndTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4047);
			match(XA);
			setState(4048);
			match(END);
			setState(4049);
			xid();
			setState(4055);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SUSPEND) {
				{
				setState(4050);
				match(SUSPEND);
				setState(4053);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(4051);
					match(FOR);
					setState(4052);
					match(MIGRATE);
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaPrepareStatementContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaPrepareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaPrepareStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaPrepareStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaPrepareStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaPrepareStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaPrepareStatementContext xaPrepareStatement() throws RecognitionException {
		XaPrepareStatementContext _localctx = new XaPrepareStatementContext(_ctx, getState());
		enterRule(_localctx, 330, RULE_xaPrepareStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4057);
			match(XA);
			setState(4058);
			match(PREPARE);
			setState(4059);
			xid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaCommitWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode ONE() { return getToken(MySqlParser.ONE, 0); }
		public TerminalNode PHASE() { return getToken(MySqlParser.PHASE, 0); }
		public XaCommitWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaCommitWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaCommitWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaCommitWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaCommitWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaCommitWorkContext xaCommitWork() throws RecognitionException {
		XaCommitWorkContext _localctx = new XaCommitWorkContext(_ctx, getState());
		enterRule(_localctx, 332, RULE_xaCommitWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4061);
			match(XA);
			setState(4062);
			match(COMMIT);
			setState(4063);
			xid();
			setState(4066);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ONE) {
				{
				setState(4064);
				match(ONE);
				setState(4065);
				match(PHASE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaRollbackWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaRollbackWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaRollbackWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaRollbackWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaRollbackWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaRollbackWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaRollbackWorkContext xaRollbackWork() throws RecognitionException {
		XaRollbackWorkContext _localctx = new XaRollbackWorkContext(_ctx, getState());
		enterRule(_localctx, 334, RULE_xaRollbackWork);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4068);
			match(XA);
			setState(4069);
			match(ROLLBACK);
			setState(4070);
			xid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaRecoverWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode RECOVER() { return getToken(MySqlParser.RECOVER, 0); }
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaRecoverWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaRecoverWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaRecoverWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaRecoverWork(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXaRecoverWork(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaRecoverWorkContext xaRecoverWork() throws RecognitionException {
		XaRecoverWorkContext _localctx = new XaRecoverWorkContext(_ctx, getState());
		enterRule(_localctx, 336, RULE_xaRecoverWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4072);
			match(XA);
			setState(4073);
			match(RECOVER);
			setState(4076);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONVERT) {
				{
				setState(4074);
				match(CONVERT);
				setState(4075);
				xid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepareStatementContext extends ParserRuleContext {
		public Token query;
		public Token variable;
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public PrepareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepareStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrepareStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrepareStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrepareStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrepareStatementContext prepareStatement() throws RecognitionException {
		PrepareStatementContext _localctx = new PrepareStatementContext(_ctx, getState());
		enterRule(_localctx, 338, RULE_prepareStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4078);
			match(PREPARE);
			setState(4079);
			uid();
			setState(4080);
			match(FROM);
			setState(4083);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_LITERAL:
				{
				setState(4081);
				((PrepareStatementContext)_localctx).query = match(STRING_LITERAL);
				}
				break;
			case LOCAL_ID:
				{
				setState(4082);
				((PrepareStatementContext)_localctx).variable = match(LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteStatementContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public UserVariablesContext userVariables() {
			return getRuleContext(UserVariablesContext.class,0);
		}
		public ExecuteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExecuteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExecuteStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExecuteStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteStatementContext executeStatement() throws RecognitionException {
		ExecuteStatementContext _localctx = new ExecuteStatementContext(_ctx, getState());
		enterRule(_localctx, 340, RULE_executeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4085);
			match(EXECUTE);
			setState(4086);
			uid();
			setState(4089);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(4087);
				match(USING);
				setState(4088);
				userVariables();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeallocatePrepareContext extends ParserRuleContext {
		public Token dropFormat;
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DEALLOCATE() { return getToken(MySqlParser.DEALLOCATE, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public DeallocatePrepareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deallocatePrepare; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeallocatePrepare(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeallocatePrepare(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeallocatePrepare(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeallocatePrepareContext deallocatePrepare() throws RecognitionException {
		DeallocatePrepareContext _localctx = new DeallocatePrepareContext(_ctx, getState());
		enterRule(_localctx, 342, RULE_deallocatePrepare);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4091);
			((DeallocatePrepareContext)_localctx).dropFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DROP || _la==DEALLOCATE) ) {
				((DeallocatePrepareContext)_localctx).dropFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4092);
			match(PREPARE);
			setState(4093);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineBodyContext extends ParserRuleContext {
		public BlockStatementContext blockStatement() {
			return getRuleContext(BlockStatementContext.class,0);
		}
		public SqlStatementContext sqlStatement() {
			return getRuleContext(SqlStatementContext.class,0);
		}
		public RoutineBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineBody; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineBody(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineBody(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRoutineBody(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineBodyContext routineBody() throws RecognitionException {
		RoutineBodyContext _localctx = new RoutineBodyContext(_ctx, getState());
		enterRule(_localctx, 344, RULE_routineBody);
		try {
			setState(4097);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,587,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4095);
				blockStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4096);
				sqlStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BlockStatementContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List<DeclareVariableContext> declareVariable() {
			return getRuleContexts(DeclareVariableContext.class);
		}
		public DeclareVariableContext declareVariable(int i) {
			return getRuleContext(DeclareVariableContext.class,i);
		}
		public List<TerminalNode> SEMI() { return getTokens(MySqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(MySqlParser.SEMI, i);
		}
		public List<DeclareConditionContext> declareCondition() {
			return getRuleContexts(DeclareConditionContext.class);
		}
		public DeclareConditionContext declareCondition(int i) {
			return getRuleContext(DeclareConditionContext.class,i);
		}
		public List<DeclareCursorContext> declareCursor() {
			return getRuleContexts(DeclareCursorContext.class);
		}
		public DeclareCursorContext declareCursor(int i) {
			return getRuleContext(DeclareCursorContext.class,i);
		}
		public List<DeclareHandlerContext> declareHandler() {
			return getRuleContexts(DeclareHandlerContext.class);
		}
		public DeclareHandlerContext declareHandler(int i) {
			return getRuleContext(DeclareHandlerContext.class,i);
		}
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public BlockStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_blockStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBlockStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBlockStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBlockStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BlockStatementContext blockStatement() throws RecognitionException {
		BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState());
		enterRule(_localctx, 346, RULE_blockStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4102);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,588,_ctx) ) {
			case 1:
				{
				setState(4099);
				uid();
				setState(4100);
				match(COLON_SYMB);
				}
				break;
			}
			setState(4104);
			match(BEGIN);
			setState(4143);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,594,_ctx) ) {
			case 1:
				{
				setState(4110);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,589,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4105);
						declareVariable();
						setState(4106);
						match(SEMI);
						}
						} 
					}
					setState(4112);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,589,_ctx);
				}
				setState(4118);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,590,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4113);
						declareCondition();
						setState(4114);
						match(SEMI);
						}
						} 
					}
					setState(4120);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,590,_ctx);
				}
				setState(4126);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,591,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4121);
						declareCursor();
						setState(4122);
						match(SEMI);
						}
						} 
					}
					setState(4128);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,591,_ctx);
				}
				setState(4134);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DECLARE) {
					{
					{
					setState(4129);
					declareHandler();
					setState(4130);
					match(SEMI);
					}
					}
					setState(4136);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4140);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,593,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4137);
						procedureSqlStatement();
						}
						} 
					}
					setState(4142);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,593,_ctx);
				}
				}
				break;
			}
			setState(4145);
			match(END);
			setState(4147);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,595,_ctx) ) {
			case 1:
				{
				setState(4146);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseStatementContext extends ParserRuleContext {
		public List<TerminalNode> CASE() { return getTokens(MySqlParser.CASE); }
		public TerminalNode CASE(int i) {
			return getToken(MySqlParser.CASE, i);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List<CaseAlternativeContext> caseAlternative() {
			return getRuleContexts(CaseAlternativeContext.class);
		}
		public CaseAlternativeContext caseAlternative(int i) {
			return getRuleContext(CaseAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public CaseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCaseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseStatementContext caseStatement() throws RecognitionException {
		CaseStatementContext _localctx = new CaseStatementContext(_ctx, getState());
		enterRule(_localctx, 348, RULE_caseStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4149);
			match(CASE);
			setState(4152);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) {
			case 1:
				{
				setState(4150);
				uid();
				}
				break;
			case 2:
				{
				setState(4151);
				expression(0);
				}
				break;
			}
			setState(4155); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(4154);
				caseAlternative();
				}
				}
				setState(4157); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==WHEN );
			setState(4165);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(4159);
				match(ELSE);
				setState(4161); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(4160);
						procedureSqlStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(4163); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,598,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(4167);
			match(END);
			setState(4168);
			match(CASE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfStatementContext extends ParserRuleContext {
		public ProcedureSqlStatementContext procedureSqlStatement;
		public List<ProcedureSqlStatementContext> thenStatements = new ArrayList<ProcedureSqlStatementContext>();
		public List<ProcedureSqlStatementContext> elseStatements = new ArrayList<ProcedureSqlStatementContext>();
		public List<TerminalNode> IF() { return getTokens(MySqlParser.IF); }
		public TerminalNode IF(int i) {
			return getToken(MySqlParser.IF, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<ElifAlternativeContext> elifAlternative() {
			return getRuleContexts(ElifAlternativeContext.class);
		}
		public ElifAlternativeContext elifAlternative(int i) {
			return getRuleContext(ElifAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public IfStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIfStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfStatementContext ifStatement() throws RecognitionException {
		IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
		enterRule(_localctx, 350, RULE_ifStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4170);
			match(IF);
			setState(4171);
			expression(0);
			setState(4172);
			match(THEN);
			setState(4174); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4173);
					((IfStatementContext)_localctx).procedureSqlStatement = procedureSqlStatement();
					((IfStatementContext)_localctx).thenStatements.add(((IfStatementContext)_localctx).procedureSqlStatement);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4176); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,600,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(4181);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ELSEIF) {
				{
				{
				setState(4178);
				elifAlternative();
				}
				}
				setState(4183);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4190);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(4184);
				match(ELSE);
				setState(4186); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(4185);
						((IfStatementContext)_localctx).procedureSqlStatement = procedureSqlStatement();
						((IfStatementContext)_localctx).elseStatements.add(((IfStatementContext)_localctx).procedureSqlStatement);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(4188); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,602,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(4192);
			match(END);
			setState(4193);
			match(IF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IterateStatementContext extends ParserRuleContext {
		public TerminalNode ITERATE() { return getToken(MySqlParser.ITERATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IterateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_iterateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIterateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIterateStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIterateStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IterateStatementContext iterateStatement() throws RecognitionException {
		IterateStatementContext _localctx = new IterateStatementContext(_ctx, getState());
		enterRule(_localctx, 352, RULE_iterateStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4195);
			match(ITERATE);
			setState(4196);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LeaveStatementContext extends ParserRuleContext {
		public TerminalNode LEAVE() { return getToken(MySqlParser.LEAVE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public LeaveStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_leaveStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLeaveStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLeaveStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLeaveStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LeaveStatementContext leaveStatement() throws RecognitionException {
		LeaveStatementContext _localctx = new LeaveStatementContext(_ctx, getState());
		enterRule(_localctx, 354, RULE_leaveStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4198);
			match(LEAVE);
			setState(4199);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoopStatementContext extends ParserRuleContext {
		public List<TerminalNode> LOOP() { return getTokens(MySqlParser.LOOP); }
		public TerminalNode LOOP(int i) {
			return getToken(MySqlParser.LOOP, i);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public LoopStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loopStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoopStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoopStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLoopStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoopStatementContext loopStatement() throws RecognitionException {
		LoopStatementContext _localctx = new LoopStatementContext(_ctx, getState());
		enterRule(_localctx, 356, RULE_loopStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4204);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4201);
				uid();
				setState(4202);
				match(COLON_SYMB);
				}
			}

			setState(4206);
			match(LOOP);
			setState(4208); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4207);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4210); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,605,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(4212);
			match(END);
			setState(4213);
			match(LOOP);
			setState(4215);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4214);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepeatStatementContext extends ParserRuleContext {
		public List<TerminalNode> REPEAT() { return getTokens(MySqlParser.REPEAT); }
		public TerminalNode REPEAT(int i) {
			return getToken(MySqlParser.REPEAT, i);
		}
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public RepeatStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repeatStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRepeatStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRepeatStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRepeatStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepeatStatementContext repeatStatement() throws RecognitionException {
		RepeatStatementContext _localctx = new RepeatStatementContext(_ctx, getState());
		enterRule(_localctx, 358, RULE_repeatStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4220);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4217);
				uid();
				setState(4218);
				match(COLON_SYMB);
				}
			}

			setState(4222);
			match(REPEAT);
			setState(4224); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4223);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4226); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,608,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(4228);
			match(UNTIL);
			setState(4229);
			expression(0);
			setState(4230);
			match(END);
			setState(4231);
			match(REPEAT);
			setState(4233);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4232);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReturnStatementContext extends ParserRuleContext {
		public TerminalNode RETURN() { return getToken(MySqlParser.RETURN, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ReturnStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_returnStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReturnStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReturnStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitReturnStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReturnStatementContext returnStatement() throws RecognitionException {
		ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
		enterRule(_localctx, 360, RULE_returnStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4235);
			match(RETURN);
			setState(4236);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhileStatementContext extends ParserRuleContext {
		public List<TerminalNode> WHILE() { return getTokens(MySqlParser.WHILE); }
		public TerminalNode WHILE(int i) {
			return getToken(MySqlParser.WHILE, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public WhileStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whileStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWhileStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWhileStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitWhileStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhileStatementContext whileStatement() throws RecognitionException {
		WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
		enterRule(_localctx, 362, RULE_whileStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4241);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4238);
				uid();
				setState(4239);
				match(COLON_SYMB);
				}
			}

			setState(4243);
			match(WHILE);
			setState(4244);
			expression(0);
			setState(4245);
			match(DO);
			setState(4247); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4246);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4249); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,611,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(4251);
			match(END);
			setState(4252);
			match(WHILE);
			setState(4254);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CURRENT) | (1L << DATABASE) | (1L << DIAGNOSTICS))) != 0) || ((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (LEFT - 87)) | (1L << (NUMBER - 87)) | (1L << (RIGHT - 87)))) != 0) || ((((_la - 151)) & ~0x3f) == 0 && ((1L << (_la - 151)) & ((1L << (STACKED - 151)) | (1L << (DATE - 151)) | (1L << (TIME - 151)) | (1L << (TIMESTAMP - 151)) | (1L << (DATETIME - 151)) | (1L << (YEAR - 151)))) != 0) || ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (TEXT - 216)) | (1L << (ENUM - 216)) | (1L << (SERIAL - 216)) | (1L << (COUNT - 216)) | (1L << (POSITION - 216)) | (1L << (ACCOUNT - 216)) | (1L << (ACTION - 216)) | (1L << (AFTER - 216)) | (1L << (AGGREGATE - 216)) | (1L << (ALGORITHM - 216)) | (1L << (ANY - 216)) | (1L << (AT - 216)) | (1L << (AUTHORS - 216)) | (1L << (AUTOCOMMIT - 216)) | (1L << (AUTOEXTEND_SIZE - 216)))) != 0) || ((((_la - 280)) & ~0x3f) == 0 && ((1L << (_la - 280)) & ((1L << (AUTO_INCREMENT - 280)) | (1L << (AVG_ROW_LENGTH - 280)) | (1L << (BEGIN - 280)) | (1L << (BINLOG - 280)) | (1L << (BIT - 280)) | (1L << (BLOCK - 280)) | (1L << (BOOL - 280)) | (1L << (BOOLEAN - 280)) | (1L << (BTREE - 280)) | (1L << (CACHE - 280)) | (1L << (CASCADED - 280)) | (1L << (CHAIN - 280)) | (1L << (CHANGED - 280)) | (1L << (CHANNEL - 280)) | (1L << (CHECKSUM - 280)) | (1L << (PAGE_CHECKSUM - 280)) | (1L << (CIPHER - 280)) | (1L << (CLASS_ORIGIN - 280)) | (1L << (CLIENT - 280)) | (1L << (CLOSE - 280)) | (1L << (COALESCE - 280)) | (1L << (CODE - 280)) | (1L << (COLUMNS - 280)) | (1L << (COLUMN_FORMAT - 280)) | (1L << (COLUMN_NAME - 280)) | (1L << (COMMENT - 280)) | (1L << (COMMIT - 280)) | (1L << (COMPACT - 280)) | (1L << (COMPLETION - 280)) | (1L << (COMPRESSED - 280)) | (1L << (COMPRESSION - 280)) | (1L << (CONCURRENT - 280)) | (1L << (CONNECTION - 280)) | (1L << (CONSISTENT - 280)) | (1L << (CONSTRAINT_CATALOG - 280)) | (1L << (CONSTRAINT_SCHEMA - 280)) | (1L << (CONSTRAINT_NAME - 280)) | (1L << (CONTAINS - 280)) | (1L << (CONTEXT - 280)) | (1L << (CONTRIBUTORS - 280)) | (1L << (COPY - 280)) | (1L << (CPU - 280)) | (1L << (CURSOR_NAME - 280)) | (1L << (DATA - 280)) | (1L << (DATAFILE - 280)) | (1L << (DEALLOCATE - 280)) | (1L << (DEFAULT_AUTH - 280)) | (1L << (DEFINER - 280)) | (1L << (DELAY_KEY_WRITE - 280)) | (1L << (DES_KEY_FILE - 280)) | (1L << (DIRECTORY - 280)) | (1L << (DISABLE - 280)) | (1L << (DISCARD - 280)) | (1L << (DISK - 280)) | (1L << (DO - 280)) | (1L << (DUMPFILE - 280)) | (1L << (DUPLICATE - 280)) | (1L << (DYNAMIC - 280)) | (1L << (ENABLE - 280)) | (1L << (ENCRYPTION - 280)) | (1L << (END - 280)) | (1L << (ENDS - 280)) | (1L << (ENGINE - 280)) | (1L << (ENGINES - 280)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (ERROR - 344)) | (1L << (ERRORS - 344)) | (1L << (ESCAPE - 344)) | (1L << (EVEN - 344)) | (1L << (EVENT - 344)) | (1L << (EVENTS - 344)) | (1L << (EVERY - 344)) | (1L << (EXCHANGE - 344)) | (1L << (EXCLUSIVE - 344)) | (1L << (EXPIRE - 344)) | (1L << (EXPORT - 344)) | (1L << (EXTENDED - 344)) | (1L << (EXTENT_SIZE - 344)) | (1L << (FAST - 344)) | (1L << (FAULTS - 344)) | (1L << (FIELDS - 344)) | (1L << (FILE_BLOCK_SIZE - 344)) | (1L << (FILTER - 344)) | (1L << (FIRST - 344)) | (1L << (FIXED - 344)) | (1L << (FLUSH - 344)) | (1L << (FOLLOWS - 344)) | (1L << (FOUND - 344)) | (1L << (FULL - 344)) | (1L << (FUNCTION - 344)) | (1L << (GENERAL - 344)) | (1L << (GLOBAL - 344)) | (1L << (GRANTS - 344)) | (1L << (GROUP_REPLICATION - 344)) | (1L << (HANDLER - 344)) | (1L << (HASH - 344)) | (1L << (HELP - 344)) | (1L << (HOST - 344)) | (1L << (HOSTS - 344)) | (1L << (IDENTIFIED - 344)) | (1L << (IGNORE_SERVER_IDS - 344)) | (1L << (IMPORT - 344)) | (1L << (INDEXES - 344)) | (1L << (INITIAL_SIZE - 344)) | (1L << (INPLACE - 344)) | (1L << (INSERT_METHOD - 344)) | (1L << (INSTALL - 344)) | (1L << (INSTANCE - 344)) | (1L << (INVISIBLE - 344)) | (1L << (INVOKER - 344)) | (1L << (IO - 344)) | (1L << (IO_THREAD - 344)) | (1L << (IPC - 344)) | (1L << (ISOLATION - 344)) | (1L << (ISSUER - 344)) | (1L << (JSON - 344)) | (1L << (KEY_BLOCK_SIZE - 344)) | (1L << (LANGUAGE - 344)) | (1L << (LAST - 344)) | (1L << (LEAVES - 344)) | (1L << (LESS - 344)) | (1L << (LEVEL - 344)) | (1L << (LIST - 344)) | (1L << (LOCAL - 344)) | (1L << (LOGFILE - 344)) | (1L << (LOGS - 344)) | (1L << (MASTER - 344)) | (1L << (MASTER_AUTO_POSITION - 344)) | (1L << (MASTER_CONNECT_RETRY - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (MASTER_DELAY - 408)) | (1L << (MASTER_HEARTBEAT_PERIOD - 408)) | (1L << (MASTER_HOST - 408)) | (1L << (MASTER_LOG_FILE - 408)) | (1L << (MASTER_LOG_POS - 408)) | (1L << (MASTER_PASSWORD - 408)) | (1L << (MASTER_PORT - 408)) | (1L << (MASTER_RETRY_COUNT - 408)) | (1L << (MASTER_SSL - 408)) | (1L << (MASTER_SSL_CA - 408)) | (1L << (MASTER_SSL_CAPATH - 408)) | (1L << (MASTER_SSL_CERT - 408)) | (1L << (MASTER_SSL_CIPHER - 408)) | (1L << (MASTER_SSL_CRL - 408)) | (1L << (MASTER_SSL_CRLPATH - 408)) | (1L << (MASTER_SSL_KEY - 408)) | (1L << (MASTER_TLS_VERSION - 408)) | (1L << (MASTER_USER - 408)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 408)) | (1L << (MAX_QUERIES_PER_HOUR - 408)) | (1L << (MAX_ROWS - 408)) | (1L << (MAX_SIZE - 408)) | (1L << (MAX_UPDATES_PER_HOUR - 408)) | (1L << (MAX_USER_CONNECTIONS - 408)) | (1L << (MEDIUM - 408)) | (1L << (MERGE - 408)) | (1L << (MESSAGE_TEXT - 408)) | (1L << (MID - 408)) | (1L << (MIGRATE - 408)) | (1L << (MIN_ROWS - 408)) | (1L << (MODE - 408)) | (1L << (MODIFY - 408)) | (1L << (MUTEX - 408)) | (1L << (MYSQL - 408)) | (1L << (MYSQL_ERRNO - 408)) | (1L << (NAME - 408)) | (1L << (NAMES - 408)) | (1L << (NCHAR - 408)) | (1L << (NEVER - 408)) | (1L << (NEXT - 408)) | (1L << (NO - 408)) | (1L << (NODEGROUP - 408)) | (1L << (NONE - 408)) | (1L << (OFFLINE - 408)) | (1L << (OFFSET - 408)) | (1L << (OJ - 408)) | (1L << (OLD_PASSWORD - 408)) | (1L << (ONE - 408)) | (1L << (ONLINE - 408)) | (1L << (ONLY - 408)) | (1L << (OPEN - 408)) | (1L << (OPTIMIZER_COSTS - 408)) | (1L << (OPTIONS - 408)) | (1L << (OWNER - 408)) | (1L << (PACK_KEYS - 408)) | (1L << (PAGE - 408)) | (1L << (PARSER - 408)) | (1L << (PARTIAL - 408)) | (1L << (PARTITIONING - 408)) | (1L << (PARTITIONS - 408)) | (1L << (PASSWORD - 408)) | (1L << (PHASE - 408)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (PLUGIN - 472)) | (1L << (PLUGIN_DIR - 472)) | (1L << (PLUGINS - 472)) | (1L << (PORT - 472)) | (1L << (PRECEDES - 472)) | (1L << (PREPARE - 472)) | (1L << (PRESERVE - 472)) | (1L << (PREV - 472)) | (1L << (PROCESSLIST - 472)) | (1L << (PROFILE - 472)) | (1L << (PROFILES - 472)) | (1L << (PROXY - 472)) | (1L << (QUERY - 472)) | (1L << (QUICK - 472)) | (1L << (REBUILD - 472)) | (1L << (RECOVER - 472)) | (1L << (REDO_BUFFER_SIZE - 472)) | (1L << (REDUNDANT - 472)) | (1L << (RELAY - 472)) | (1L << (RELAY_LOG_FILE - 472)) | (1L << (RELAY_LOG_POS - 472)) | (1L << (RELAYLOG - 472)) | (1L << (REMOVE - 472)) | (1L << (REORGANIZE - 472)) | (1L << (REPAIR - 472)) | (1L << (REPLICATE_DO_DB - 472)) | (1L << (REPLICATE_DO_TABLE - 472)) | (1L << (REPLICATE_IGNORE_DB - 472)) | (1L << (REPLICATE_IGNORE_TABLE - 472)) | (1L << (REPLICATE_REWRITE_DB - 472)) | (1L << (REPLICATE_WILD_DO_TABLE - 472)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 472)) | (1L << (REPLICATION - 472)) | (1L << (RESET - 472)) | (1L << (RESUME - 472)) | (1L << (RETURNED_SQLSTATE - 472)) | (1L << (RETURNS - 472)) | (1L << (ROLLBACK - 472)) | (1L << (ROLLUP - 472)) | (1L << (ROTATE - 472)) | (1L << (ROW - 472)) | (1L << (ROWS - 472)) | (1L << (ROW_FORMAT - 472)) | (1L << (SAVEPOINT - 472)) | (1L << (SCHEDULE - 472)) | (1L << (SECURITY - 472)) | (1L << (SERVER - 472)) | (1L << (SESSION - 472)) | (1L << (SHARE - 472)) | (1L << (SHARED - 472)) | (1L << (SIGNED - 472)) | (1L << (SIMPLE - 472)) | (1L << (SLAVE - 472)) | (1L << (SLOW - 472)) | (1L << (SNAPSHOT - 472)) | (1L << (SOCKET - 472)) | (1L << (SOME - 472)) | (1L << (SONAME - 472)) | (1L << (SOUNDS - 472)) | (1L << (SOURCE - 472)) | (1L << (SQL_AFTER_GTIDS - 472)) | (1L << (SQL_AFTER_MTS_GAPS - 472)) | (1L << (SQL_BEFORE_GTIDS - 472)))) != 0) || ((((_la - 536)) & ~0x3f) == 0 && ((1L << (_la - 536)) & ((1L << (SQL_BUFFER_RESULT - 536)) | (1L << (SQL_CACHE - 536)) | (1L << (SQL_NO_CACHE - 536)) | (1L << (SQL_THREAD - 536)) | (1L << (START - 536)) | (1L << (STARTS - 536)) | (1L << (STATS_AUTO_RECALC - 536)) | (1L << (STATS_PERSISTENT - 536)) | (1L << (STATS_SAMPLE_PAGES - 536)) | (1L << (STATUS - 536)) | (1L << (STOP - 536)) | (1L << (STORAGE - 536)) | (1L << (STRING - 536)) | (1L << (SUBCLASS_ORIGIN - 536)) | (1L << (SUBJECT - 536)) | (1L << (SUBPARTITION - 536)) | (1L << (SUBPARTITIONS - 536)) | (1L << (SUSPEND - 536)) | (1L << (SWAPS - 536)) | (1L << (SWITCHES - 536)) | (1L << (TABLE_NAME - 536)) | (1L << (TABLESPACE - 536)) | (1L << (TEMPORARY - 536)) | (1L << (TEMPTABLE - 536)) | (1L << (THAN - 536)) | (1L << (TRADITIONAL - 536)) | (1L << (TRANSACTION - 536)) | (1L << (TRIGGERS - 536)) | (1L << (TRUNCATE - 536)) | (1L << (UNDEFINED - 536)) | (1L << (UNDOFILE - 536)) | (1L << (UNDO_BUFFER_SIZE - 536)) | (1L << (UNINSTALL - 536)) | (1L << (UNKNOWN - 536)) | (1L << (UNTIL - 536)) | (1L << (UPGRADE - 536)) | (1L << (USER - 536)) | (1L << (USE_FRM - 536)) | (1L << (USER_RESOURCES - 536)) | (1L << (VALIDATION - 536)) | (1L << (VALUE - 536)) | (1L << (VARIABLES - 536)) | (1L << (VIEW - 536)) | (1L << (VISIBLE - 536)) | (1L << (WAIT - 536)) | (1L << (WARNINGS - 536)) | (1L << (WITHOUT - 536)) | (1L << (WORK - 536)) | (1L << (WRAPPER - 536)) | (1L << (X509 - 536)) | (1L << (XA - 536)) | (1L << (XML - 536)) | (1L << (INTERNAL - 536)) | (1L << (QUARTER - 536)) | (1L << (MONTH - 536)) | (1L << (DAY - 536)) | (1L << (HOUR - 536)))) != 0) || ((((_la - 600)) & ~0x3f) == 0 && ((1L << (_la - 600)) & ((1L << (MINUTE - 600)) | (1L << (WEEK - 600)) | (1L << (SECOND - 600)) | (1L << (MICROSECOND - 600)) | (1L << (TABLES - 600)) | (1L << (ROUTINE - 600)) | (1L << (EXECUTE - 600)) | (1L << (FILE - 600)) | (1L << (PROCESS - 600)) | (1L << (RELOAD - 600)) | (1L << (SHUTDOWN - 600)) | (1L << (SUPER - 600)) | (1L << (PRIVILEGES - 600)) | (1L << (SESSION_VARIABLES_ADMIN - 600)) | (1L << (ARMSCII8 - 600)) | (1L << (ASCII - 600)) | (1L << (BIG5 - 600)) | (1L << (CP1250 - 600)) | (1L << (CP1251 - 600)) | (1L << (CP1256 - 600)) | (1L << (CP1257 - 600)) | (1L << (CP850 - 600)) | (1L << (CP852 - 600)) | (1L << (CP866 - 600)) | (1L << (CP932 - 600)) | (1L << (DEC8 - 600)) | (1L << (EUCJPMS - 600)) | (1L << (EUCKR - 600)) | (1L << (GB2312 - 600)) | (1L << (GBK - 600)) | (1L << (GEOSTD8 - 600)) | (1L << (GREEK - 600)) | (1L << (HEBREW - 600)) | (1L << (HP8 - 600)) | (1L << (KEYBCS2 - 600)) | (1L << (KOI8R - 600)) | (1L << (KOI8U - 600)) | (1L << (LATIN1 - 600)) | (1L << (LATIN2 - 600)))) != 0) || ((((_la - 664)) & ~0x3f) == 0 && ((1L << (_la - 664)) & ((1L << (LATIN5 - 664)) | (1L << (LATIN7 - 664)) | (1L << (MACCE - 664)) | (1L << (MACROMAN - 664)) | (1L << (SJIS - 664)) | (1L << (SWE7 - 664)) | (1L << (TIS620 - 664)) | (1L << (UCS2 - 664)) | (1L << (UJIS - 664)) | (1L << (UTF16 - 664)) | (1L << (UTF16LE - 664)) | (1L << (UTF32 - 664)) | (1L << (UTF8 - 664)) | (1L << (UTF8MB3 - 664)) | (1L << (UTF8MB4 - 664)) | (1L << (ARCHIVE - 664)) | (1L << (BLACKHOLE - 664)) | (1L << (CSV - 664)) | (1L << (FEDERATED - 664)) | (1L << (INNODB - 664)) | (1L << (MEMORY - 664)) | (1L << (MRG_MYISAM - 664)) | (1L << (MYISAM - 664)) | (1L << (NDB - 664)) | (1L << (NDBCLUSTER - 664)) | (1L << (PERFORMANCE_SCHEMA - 664)) | (1L << (TOKUDB - 664)) | (1L << (REPEATABLE - 664)) | (1L << (COMMITTED - 664)) | (1L << (UNCOMMITTED - 664)) | (1L << (SERIALIZABLE - 664)) | (1L << (GEOMETRYCOLLECTION - 664)) | (1L << (LINESTRING - 664)) | (1L << (MULTILINESTRING - 664)) | (1L << (MULTIPOINT - 664)) | (1L << (MULTIPOLYGON - 664)) | (1L << (POINT - 664)) | (1L << (POLYGON - 664)) | (1L << (ABS - 664)) | (1L << (ACOS - 664)) | (1L << (ADDDATE - 664)) | (1L << (ADDTIME - 664)) | (1L << (AES_DECRYPT - 664)) | (1L << (AES_ENCRYPT - 664)) | (1L << (AREA - 664)) | (1L << (ASBINARY - 664)) | (1L << (ASIN - 664)) | (1L << (ASTEXT - 664)) | (1L << (ASWKB - 664)) | (1L << (ASWKT - 664)) | (1L << (ASYMMETRIC_DECRYPT - 664)) | (1L << (ASYMMETRIC_DERIVE - 664)) | (1L << (ASYMMETRIC_ENCRYPT - 664)) | (1L << (ASYMMETRIC_SIGN - 664)) | (1L << (ASYMMETRIC_VERIFY - 664)) | (1L << (ATAN - 664)) | (1L << (ATAN2 - 664)) | (1L << (BENCHMARK - 664)) | (1L << (BIN - 664)) | (1L << (BIT_COUNT - 664)) | (1L << (BIT_LENGTH - 664)) | (1L << (BUFFER - 664)))) != 0) || ((((_la - 728)) & ~0x3f) == 0 && ((1L << (_la - 728)) & ((1L << (CATALOG_NAME - 728)) | (1L << (CEIL - 728)) | (1L << (CEILING - 728)) | (1L << (CENTROID - 728)) | (1L << (CHARACTER_LENGTH - 728)) | (1L << (CHARSET - 728)) | (1L << (CHAR_LENGTH - 728)) | (1L << (COERCIBILITY - 728)) | (1L << (COLLATION - 728)) | (1L << (COMPRESS - 728)) | (1L << (CONCAT - 728)) | (1L << (CONCAT_WS - 728)) | (1L << (CONNECTION_ID - 728)) | (1L << (CONV - 728)) | (1L << (CONVERT_TZ - 728)) | (1L << (COS - 728)) | (1L << (COT - 728)) | (1L << (CRC32 - 728)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 728)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 728)) | (1L << (CREATE_DH_PARAMETERS - 728)) | (1L << (CREATE_DIGEST - 728)) | (1L << (CROSSES - 728)) | (1L << (DATEDIFF - 728)) | (1L << (DATE_FORMAT - 728)) | (1L << (DAYNAME - 728)) | (1L << (DAYOFMONTH - 728)) | (1L << (DAYOFWEEK - 728)) | (1L << (DAYOFYEAR - 728)) | (1L << (DECODE - 728)) | (1L << (DEGREES - 728)) | (1L << (DES_DECRYPT - 728)) | (1L << (DES_ENCRYPT - 728)) | (1L << (DIMENSION - 728)) | (1L << (DISJOINT - 728)) | (1L << (ELT - 728)) | (1L << (ENCODE - 728)) | (1L << (ENCRYPT - 728)) | (1L << (ENDPOINT - 728)) | (1L << (ENVELOPE - 728)) | (1L << (EQUALS - 728)) | (1L << (EXP - 728)) | (1L << (EXPORT_SET - 728)) | (1L << (EXTERIORRING - 728)) | (1L << (EXTRACTVALUE - 728)) | (1L << (FIELD - 728)) | (1L << (FIND_IN_SET - 728)) | (1L << (FLOOR - 728)) | (1L << (FORMAT - 728)) | (1L << (FOUND_ROWS - 728)) | (1L << (FROM_BASE64 - 728)) | (1L << (FROM_DAYS - 728)) | (1L << (FROM_UNIXTIME - 728)) | (1L << (GEOMCOLLFROMTEXT - 728)) | (1L << (GEOMCOLLFROMWKB - 728)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 728)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 728)) | (1L << (GEOMETRYFROMTEXT - 728)) | (1L << (GEOMETRYFROMWKB - 728)) | (1L << (GEOMETRYN - 728)) | (1L << (GEOMETRYTYPE - 728)) | (1L << (GEOMFROMTEXT - 728)) | (1L << (GEOMFROMWKB - 728)) | (1L << (GET_FORMAT - 728)))) != 0) || ((((_la - 792)) & ~0x3f) == 0 && ((1L << (_la - 792)) & ((1L << (GET_LOCK - 792)) | (1L << (GLENGTH - 792)) | (1L << (GREATEST - 792)) | (1L << (GTID_SUBSET - 792)) | (1L << (GTID_SUBTRACT - 792)) | (1L << (HEX - 792)) | (1L << (IFNULL - 792)) | (1L << (INET6_ATON - 792)) | (1L << (INET6_NTOA - 792)) | (1L << (INET_ATON - 792)) | (1L << (INET_NTOA - 792)) | (1L << (INSTR - 792)) | (1L << (INTERIORRINGN - 792)) | (1L << (INTERSECTS - 792)) | (1L << (ISCLOSED - 792)) | (1L << (ISEMPTY - 792)) | (1L << (ISNULL - 792)) | (1L << (ISSIMPLE - 792)) | (1L << (IS_FREE_LOCK - 792)) | (1L << (IS_IPV4 - 792)) | (1L << (IS_IPV4_COMPAT - 792)) | (1L << (IS_IPV4_MAPPED - 792)) | (1L << (IS_IPV6 - 792)) | (1L << (IS_USED_LOCK - 792)) | (1L << (LAST_INSERT_ID - 792)) | (1L << (LCASE - 792)) | (1L << (LEAST - 792)) | (1L << (LENGTH - 792)) | (1L << (LINEFROMTEXT - 792)) | (1L << (LINEFROMWKB - 792)) | (1L << (LINESTRINGFROMTEXT - 792)) | (1L << (LINESTRINGFROMWKB - 792)) | (1L << (LN - 792)) | (1L << (LOAD_FILE - 792)) | (1L << (LOCATE - 792)) | (1L << (LOG - 792)) | (1L << (LOG10 - 792)) | (1L << (LOG2 - 792)) | (1L << (LOWER - 792)) | (1L << (LPAD - 792)) | (1L << (LTRIM - 792)) | (1L << (MAKEDATE - 792)) | (1L << (MAKETIME - 792)) | (1L << (MAKE_SET - 792)) | (1L << (MASTER_POS_WAIT - 792)) | (1L << (MBRCONTAINS - 792)) | (1L << (MBRDISJOINT - 792)) | (1L << (MBREQUAL - 792)) | (1L << (MBRINTERSECTS - 792)) | (1L << (MBROVERLAPS - 792)) | (1L << (MBRTOUCHES - 792)) | (1L << (MBRWITHIN - 792)) | (1L << (MD5 - 792)) | (1L << (MLINEFROMTEXT - 792)) | (1L << (MLINEFROMWKB - 792)) | (1L << (MONTHNAME - 792)) | (1L << (MPOINTFROMTEXT - 792)) | (1L << (MPOINTFROMWKB - 792)) | (1L << (MPOLYFROMTEXT - 792)) | (1L << (MPOLYFROMWKB - 792)) | (1L << (MULTILINESTRINGFROMTEXT - 792)) | (1L << (MULTILINESTRINGFROMWKB - 792)) | (1L << (MULTIPOINTFROMTEXT - 792)) | (1L << (MULTIPOINTFROMWKB - 792)))) != 0) || ((((_la - 856)) & ~0x3f) == 0 && ((1L << (_la - 856)) & ((1L << (MULTIPOLYGONFROMTEXT - 856)) | (1L << (MULTIPOLYGONFROMWKB - 856)) | (1L << (NAME_CONST - 856)) | (1L << (NULLIF - 856)) | (1L << (NUMGEOMETRIES - 856)) | (1L << (NUMINTERIORRINGS - 856)) | (1L << (NUMPOINTS - 856)) | (1L << (OCT - 856)) | (1L << (OCTET_LENGTH - 856)) | (1L << (ORD - 856)) | (1L << (OVERLAPS - 856)) | (1L << (PERIOD_ADD - 856)) | (1L << (PERIOD_DIFF - 856)) | (1L << (PI - 856)) | (1L << (POINTFROMTEXT - 856)) | (1L << (POINTFROMWKB - 856)) | (1L << (POINTN - 856)) | (1L << (POLYFROMTEXT - 856)) | (1L << (POLYFROMWKB - 856)) | (1L << (POLYGONFROMTEXT - 856)) | (1L << (POLYGONFROMWKB - 856)) | (1L << (POW - 856)) | (1L << (POWER - 856)) | (1L << (QUOTE - 856)) | (1L << (RADIANS - 856)) | (1L << (RAND - 856)) | (1L << (RANDOM_BYTES - 856)) | (1L << (RELEASE_LOCK - 856)) | (1L << (REVERSE - 856)) | (1L << (ROUND - 856)) | (1L << (ROW_COUNT - 856)) | (1L << (RPAD - 856)) | (1L << (RTRIM - 856)) | (1L << (SEC_TO_TIME - 856)) | (1L << (SESSION_USER - 856)) | (1L << (SHA - 856)) | (1L << (SHA1 - 856)) | (1L << (SHA2 - 856)) | (1L << (SCHEMA_NAME - 856)) | (1L << (SIGN - 856)) | (1L << (SIN - 856)) | (1L << (SLEEP - 856)) | (1L << (SOUNDEX - 856)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 856)) | (1L << (SQRT - 856)) | (1L << (SRID - 856)) | (1L << (STARTPOINT - 856)) | (1L << (STRCMP - 856)) | (1L << (STR_TO_DATE - 856)) | (1L << (ST_AREA - 856)) | (1L << (ST_ASBINARY - 856)) | (1L << (ST_ASTEXT - 856)) | (1L << (ST_ASWKB - 856)) | (1L << (ST_ASWKT - 856)) | (1L << (ST_BUFFER - 856)) | (1L << (ST_CENTROID - 856)) | (1L << (ST_CONTAINS - 856)) | (1L << (ST_CROSSES - 856)) | (1L << (ST_DIFFERENCE - 856)) | (1L << (ST_DIMENSION - 856)) | (1L << (ST_DISJOINT - 856)) | (1L << (ST_DISTANCE - 856)) | (1L << (ST_ENDPOINT - 856)) | (1L << (ST_ENVELOPE - 856)))) != 0) || ((((_la - 920)) & ~0x3f) == 0 && ((1L << (_la - 920)) & ((1L << (ST_EQUALS - 920)) | (1L << (ST_EXTERIORRING - 920)) | (1L << (ST_GEOMCOLLFROMTEXT - 920)) | (1L << (ST_GEOMCOLLFROMTXT - 920)) | (1L << (ST_GEOMCOLLFROMWKB - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 920)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 920)) | (1L << (ST_GEOMETRYFROMTEXT - 920)) | (1L << (ST_GEOMETRYFROMWKB - 920)) | (1L << (ST_GEOMETRYN - 920)) | (1L << (ST_GEOMETRYTYPE - 920)) | (1L << (ST_GEOMFROMTEXT - 920)) | (1L << (ST_GEOMFROMWKB - 920)) | (1L << (ST_INTERIORRINGN - 920)) | (1L << (ST_INTERSECTION - 920)) | (1L << (ST_INTERSECTS - 920)) | (1L << (ST_ISCLOSED - 920)) | (1L << (ST_ISEMPTY - 920)) | (1L << (ST_ISSIMPLE - 920)) | (1L << (ST_LINEFROMTEXT - 920)) | (1L << (ST_LINEFROMWKB - 920)) | (1L << (ST_LINESTRINGFROMTEXT - 920)) | (1L << (ST_LINESTRINGFROMWKB - 920)) | (1L << (ST_NUMGEOMETRIES - 920)) | (1L << (ST_NUMINTERIORRING - 920)) | (1L << (ST_NUMINTERIORRINGS - 920)) | (1L << (ST_NUMPOINTS - 920)) | (1L << (ST_OVERLAPS - 920)) | (1L << (ST_POINTFROMTEXT - 920)) | (1L << (ST_POINTFROMWKB - 920)) | (1L << (ST_POINTN - 920)) | (1L << (ST_POLYFROMTEXT - 920)) | (1L << (ST_POLYFROMWKB - 920)) | (1L << (ST_POLYGONFROMTEXT - 920)) | (1L << (ST_POLYGONFROMWKB - 920)) | (1L << (ST_SRID - 920)) | (1L << (ST_STARTPOINT - 920)) | (1L << (ST_SYMDIFFERENCE - 920)) | (1L << (ST_TOUCHES - 920)) | (1L << (ST_UNION - 920)) | (1L << (ST_WITHIN - 920)) | (1L << (ST_X - 920)) | (1L << (ST_Y - 920)) | (1L << (SUBDATE - 920)) | (1L << (SUBSTRING_INDEX - 920)) | (1L << (SUBTIME - 920)) | (1L << (SYSTEM_USER - 920)) | (1L << (TAN - 920)) | (1L << (TIMEDIFF - 920)) | (1L << (TIMESTAMPADD - 920)) | (1L << (TIMESTAMPDIFF - 920)) | (1L << (TIME_FORMAT - 920)) | (1L << (TIME_TO_SEC - 920)) | (1L << (TOUCHES - 920)) | (1L << (TO_BASE64 - 920)) | (1L << (TO_DAYS - 920)) | (1L << (TO_SECONDS - 920)) | (1L << (UCASE - 920)) | (1L << (UNCOMPRESS - 920)) | (1L << (UNCOMPRESSED_LENGTH - 920)) | (1L << (UNHEX - 920)) | (1L << (UNIX_TIMESTAMP - 920)) | (1L << (UPDATEXML - 920)) | (1L << (UPPER - 920)))) != 0) || ((((_la - 984)) & ~0x3f) == 0 && ((1L << (_la - 984)) & ((1L << (UUID - 984)) | (1L << (UUID_SHORT - 984)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 984)) | (1L << (VERSION - 984)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 984)) | (1L << (WEEKDAY - 984)) | (1L << (WEEKOFYEAR - 984)) | (1L << (WEIGHT_STRING - 984)) | (1L << (WITHIN - 984)) | (1L << (YEARWEEK - 984)) | (1L << (Y_FUNCTION - 984)) | (1L << (X_FUNCTION - 984)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 984)) | (1L << (STRING_LITERAL - 984)) | (1L << (ID - 984)) | (1L << (REVERSE_QUOTE_ID - 984)))) != 0)) {
				{
				setState(4253);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorStatementContext extends ParserRuleContext {
		public CursorStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorStatement; }
	 
		public CursorStatementContext() { }
		public void copyFrom(CursorStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CloseCursorContext extends CursorStatementContext {
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CloseCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCloseCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCloseCursor(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCloseCursor(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class OpenCursorContext extends CursorStatementContext {
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public OpenCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOpenCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOpenCursor(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOpenCursor(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FetchCursorContext extends CursorStatementContext {
		public TerminalNode FETCH() { return getToken(MySqlParser.FETCH, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public FetchCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFetchCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFetchCursor(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFetchCursor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorStatementContext cursorStatement() throws RecognitionException {
		CursorStatementContext _localctx = new CursorStatementContext(_ctx, getState());
		enterRule(_localctx, 364, RULE_cursorStatement);
		int _la;
		try {
			setState(4271);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CLOSE:
				_localctx = new CloseCursorContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4256);
				match(CLOSE);
				setState(4257);
				uid();
				}
				break;
			case FETCH:
				_localctx = new FetchCursorContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4258);
				match(FETCH);
				setState(4263);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,614,_ctx) ) {
				case 1:
					{
					setState(4260);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==NEXT) {
						{
						setState(4259);
						match(NEXT);
						}
					}

					setState(4262);
					match(FROM);
					}
					break;
				}
				setState(4265);
				uid();
				setState(4266);
				match(INTO);
				setState(4267);
				uidList();
				}
				break;
			case OPEN:
				_localctx = new OpenCursorContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4269);
				match(OPEN);
				setState(4270);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareVariableContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareVariable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareVariable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeclareVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareVariableContext declareVariable() throws RecognitionException {
		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
		enterRule(_localctx, 366, RULE_declareVariable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4273);
			match(DECLARE);
			setState(4274);
			uidList();
			setState(4275);
			dataType();
			setState(4278);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(4276);
				match(DEFAULT);
				setState(4277);
				defaultValue();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareConditionContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode CONDITION() { return getToken(MySqlParser.CONDITION, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public DeclareConditionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareCondition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareCondition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareCondition(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeclareCondition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareConditionContext declareCondition() throws RecognitionException {
		DeclareConditionContext _localctx = new DeclareConditionContext(_ctx, getState());
		enterRule(_localctx, 368, RULE_declareCondition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4280);
			match(DECLARE);
			setState(4281);
			uid();
			setState(4282);
			match(CONDITION);
			setState(4283);
			match(FOR);
			setState(4290);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
				{
				setState(4284);
				decimalLiteral();
				}
				break;
			case SQLSTATE:
				{
				setState(4285);
				match(SQLSTATE);
				setState(4287);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(4286);
					match(VALUE);
					}
				}

				setState(4289);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareCursorContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(MySqlParser.CURSOR, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public DeclareCursorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareCursor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareCursor(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeclareCursor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareCursorContext declareCursor() throws RecognitionException {
		DeclareCursorContext _localctx = new DeclareCursorContext(_ctx, getState());
		enterRule(_localctx, 370, RULE_declareCursor);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4292);
			match(DECLARE);
			setState(4293);
			uid();
			setState(4294);
			match(CURSOR);
			setState(4295);
			match(FOR);
			setState(4296);
			selectStatement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareHandlerContext extends ParserRuleContext {
		public Token handlerAction;
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public List<HandlerConditionValueContext> handlerConditionValue() {
			return getRuleContexts(HandlerConditionValueContext.class);
		}
		public HandlerConditionValueContext handlerConditionValue(int i) {
			return getRuleContext(HandlerConditionValueContext.class,i);
		}
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public TerminalNode CONTINUE() { return getToken(MySqlParser.CONTINUE, 0); }
		public TerminalNode EXIT() { return getToken(MySqlParser.EXIT, 0); }
		public TerminalNode UNDO() { return getToken(MySqlParser.UNDO, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DeclareHandlerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareHandler; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareHandler(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareHandler(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDeclareHandler(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareHandlerContext declareHandler() throws RecognitionException {
		DeclareHandlerContext _localctx = new DeclareHandlerContext(_ctx, getState());
		enterRule(_localctx, 372, RULE_declareHandler);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4298);
			match(DECLARE);
			setState(4299);
			((DeclareHandlerContext)_localctx).handlerAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==CONTINUE || _la==EXIT || _la==UNDO) ) {
				((DeclareHandlerContext)_localctx).handlerAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4300);
			match(HANDLER);
			setState(4301);
			match(FOR);
			setState(4302);
			handlerConditionValue();
			setState(4307);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4303);
				match(COMMA);
				setState(4304);
				handlerConditionValue();
				}
				}
				setState(4309);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4310);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerConditionValueContext extends ParserRuleContext {
		public HandlerConditionValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerConditionValue; }
	 
		public HandlerConditionValueContext() { }
		public void copyFrom(HandlerConditionValueContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class HandlerConditionWarningContext extends HandlerConditionValueContext {
		public TerminalNode SQLWARNING() { return getToken(MySqlParser.SQLWARNING, 0); }
		public HandlerConditionWarningContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionWarning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionWarning(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionWarning(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HandlerConditionCodeContext extends HandlerConditionValueContext {
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public HandlerConditionCodeContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionCode(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionCode(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionCode(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HandlerConditionNotfoundContext extends HandlerConditionValueContext {
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode FOUND() { return getToken(MySqlParser.FOUND, 0); }
		public HandlerConditionNotfoundContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionNotfound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionNotfound(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionNotfound(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HandlerConditionStateContext extends HandlerConditionValueContext {
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public HandlerConditionStateContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionState(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionState(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionState(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HandlerConditionExceptionContext extends HandlerConditionValueContext {
		public TerminalNode SQLEXCEPTION() { return getToken(MySqlParser.SQLEXCEPTION, 0); }
		public HandlerConditionExceptionContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionException(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionException(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionException(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HandlerConditionNameContext extends HandlerConditionValueContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public HandlerConditionNameContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHandlerConditionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerConditionValueContext handlerConditionValue() throws RecognitionException {
		HandlerConditionValueContext _localctx = new HandlerConditionValueContext(_ctx, getState());
		enterRule(_localctx, 374, RULE_handlerConditionValue);
		int _la;
		try {
			setState(4323);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
				_localctx = new HandlerConditionCodeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4312);
				decimalLiteral();
				}
				break;
			case SQLSTATE:
				_localctx = new HandlerConditionStateContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4313);
				match(SQLSTATE);
				setState(4315);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(4314);
					match(VALUE);
					}
				}

				setState(4317);
				match(STRING_LITERAL);
				}
				break;
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				_localctx = new HandlerConditionNameContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4318);
				uid();
				}
				break;
			case SQLWARNING:
				_localctx = new HandlerConditionWarningContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4319);
				match(SQLWARNING);
				}
				break;
			case NOT:
				_localctx = new HandlerConditionNotfoundContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4320);
				match(NOT);
				setState(4321);
				match(FOUND);
				}
				break;
			case SQLEXCEPTION:
				_localctx = new HandlerConditionExceptionContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(4322);
				match(SQLEXCEPTION);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureSqlStatementContext extends ParserRuleContext {
		public TerminalNode SEMI() { return getToken(MySqlParser.SEMI, 0); }
		public CompoundStatementContext compoundStatement() {
			return getRuleContext(CompoundStatementContext.class,0);
		}
		public SqlStatementContext sqlStatement() {
			return getRuleContext(SqlStatementContext.class,0);
		}
		public ProcedureSqlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureSqlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterProcedureSqlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitProcedureSqlStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitProcedureSqlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProcedureSqlStatementContext procedureSqlStatement() throws RecognitionException {
		ProcedureSqlStatementContext _localctx = new ProcedureSqlStatementContext(_ctx, getState());
		enterRule(_localctx, 376, RULE_procedureSqlStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4327);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,622,_ctx) ) {
			case 1:
				{
				setState(4325);
				compoundStatement();
				}
				break;
			case 2:
				{
				setState(4326);
				sqlStatement();
				}
				break;
			}
			setState(4329);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseAlternativeContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(MySqlParser.WHEN, 0); }
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public CaseAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseAlternative(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCaseAlternative(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseAlternativeContext caseAlternative() throws RecognitionException {
		CaseAlternativeContext _localctx = new CaseAlternativeContext(_ctx, getState());
		enterRule(_localctx, 378, RULE_caseAlternative);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4331);
			match(WHEN);
			setState(4334);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,623,_ctx) ) {
			case 1:
				{
				setState(4332);
				constant();
				}
				break;
			case 2:
				{
				setState(4333);
				expression(0);
				}
				break;
			}
			setState(4336);
			match(THEN);
			setState(4338); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4337);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4340); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,624,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ElifAlternativeContext extends ParserRuleContext {
		public TerminalNode ELSEIF() { return getToken(MySqlParser.ELSEIF, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public List<ProcedureSqlStatementContext> procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public ElifAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_elifAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterElifAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitElifAlternative(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitElifAlternative(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ElifAlternativeContext elifAlternative() throws RecognitionException {
		ElifAlternativeContext _localctx = new ElifAlternativeContext(_ctx, getState());
		enterRule(_localctx, 380, RULE_elifAlternative);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4342);
			match(ELSEIF);
			setState(4343);
			expression(0);
			setState(4344);
			match(THEN);
			setState(4346); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(4345);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4348); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,625,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserContext extends ParserRuleContext {
		public AlterUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUser; }
	 
		public AlterUserContext() { }
		public void copyFrom(AlterUserContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterUserMysqlV56Context extends AlterUserContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<UserSpecificationContext> userSpecification() {
			return getRuleContexts(UserSpecificationContext.class);
		}
		public UserSpecificationContext userSpecification(int i) {
			return getRuleContext(UserSpecificationContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterUserMysqlV56Context(AlterUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUserMysqlV56(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUserMysqlV56(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterUserMysqlV56(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterUserMysqlV57Context extends AlterUserContext {
		public Token tlsNone;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<UserAuthOptionContext> userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public List<UserPasswordOptionContext> userPasswordOption() {
			return getRuleContexts(UserPasswordOptionContext.class);
		}
		public UserPasswordOptionContext userPasswordOption(int i) {
			return getRuleContext(UserPasswordOptionContext.class,i);
		}
		public List<UserLockOptionContext> userLockOption() {
			return getRuleContexts(UserLockOptionContext.class);
		}
		public UserLockOptionContext userLockOption(int i) {
			return getRuleContext(UserLockOptionContext.class,i);
		}
		public List<TlsOptionContext> tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List<UserResourceOptionContext> userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List<TerminalNode> AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public AlterUserMysqlV57Context(AlterUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUserMysqlV57(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUserMysqlV57(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAlterUserMysqlV57(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserContext alterUser() throws RecognitionException {
		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
		enterRule(_localctx, 382, RULE_alterUser);
		int _la;
		try {
			setState(4404);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
			case 1:
				_localctx = new AlterUserMysqlV56Context(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4350);
				match(ALTER);
				setState(4351);
				match(USER);
				setState(4352);
				userSpecification();
				setState(4357);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4353);
					match(COMMA);
					setState(4354);
					userSpecification();
					}
					}
					setState(4359);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new AlterUserMysqlV57Context(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4360);
				match(ALTER);
				setState(4361);
				match(USER);
				setState(4363);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(4362);
					ifExists();
					}
				}

				setState(4365);
				userAuthOption();
				setState(4370);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4366);
					match(COMMA);
					setState(4367);
					userAuthOption();
					}
					}
					setState(4372);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4387);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(4373);
					match(REQUIRE);
					setState(4385);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case NONE:
						{
						setState(4374);
						((AlterUserMysqlV57Context)_localctx).tlsNone = match(NONE);
						}
						break;
					case SSL:
					case CIPHER:
					case ISSUER:
					case SUBJECT:
					case X509:
						{
						setState(4375);
						tlsOption();
						setState(4382);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
							{
							{
							setState(4377);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==AND) {
								{
								setState(4376);
								match(AND);
								}
							}

							setState(4379);
							tlsOption();
							}
							}
							setState(4384);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(4395);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(4389);
					match(WITH);
					setState(4391); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(4390);
						userResourceOption();
						}
						}
						setState(4393); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( ((((_la - 426)) & ~0x3f) == 0 && ((1L << (_la - 426)) & ((1L << (MAX_CONNECTIONS_PER_HOUR - 426)) | (1L << (MAX_QUERIES_PER_HOUR - 426)) | (1L << (MAX_UPDATES_PER_HOUR - 426)) | (1L << (MAX_USER_CONNECTIONS - 426)))) != 0) );
					}
				}

				setState(4401);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ACCOUNT || _la==PASSWORD) {
					{
					setState(4399);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case PASSWORD:
						{
						setState(4397);
						userPasswordOption();
						}
						break;
					case ACCOUNT:
						{
						setState(4398);
						userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(4403);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserContext extends ParserRuleContext {
		public CreateUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUser; }
	 
		public CreateUserContext() { }
		public void copyFrom(CreateUserContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CreateUserMysqlV57Context extends CreateUserContext {
		public Token tlsNone;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<UserAuthOptionContext> userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public List<UserPasswordOptionContext> userPasswordOption() {
			return getRuleContexts(UserPasswordOptionContext.class);
		}
		public UserPasswordOptionContext userPasswordOption(int i) {
			return getRuleContext(UserPasswordOptionContext.class,i);
		}
		public List<UserLockOptionContext> userLockOption() {
			return getRuleContexts(UserLockOptionContext.class);
		}
		public UserLockOptionContext userLockOption(int i) {
			return getRuleContext(UserLockOptionContext.class,i);
		}
		public List<TlsOptionContext> tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List<UserResourceOptionContext> userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List<TerminalNode> AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public CreateUserMysqlV57Context(CreateUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUserMysqlV57(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUserMysqlV57(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateUserMysqlV57(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CreateUserMysqlV56Context extends CreateUserContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<UserAuthOptionContext> userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateUserMysqlV56Context(CreateUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUserMysqlV56(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUserMysqlV56(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateUserMysqlV56(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserContext createUser() throws RecognitionException {
		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
		enterRule(_localctx, 384, RULE_createUser);
		int _la;
		try {
			setState(4460);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,649,_ctx) ) {
			case 1:
				_localctx = new CreateUserMysqlV56Context(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4406);
				match(CREATE);
				setState(4407);
				match(USER);
				setState(4408);
				userAuthOption();
				setState(4413);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4409);
					match(COMMA);
					setState(4410);
					userAuthOption();
					}
					}
					setState(4415);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new CreateUserMysqlV57Context(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4416);
				match(CREATE);
				setState(4417);
				match(USER);
				setState(4419);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(4418);
					ifNotExists();
					}
				}

				setState(4421);
				userAuthOption();
				setState(4426);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4422);
					match(COMMA);
					setState(4423);
					userAuthOption();
					}
					}
					setState(4428);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4443);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(4429);
					match(REQUIRE);
					setState(4441);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case NONE:
						{
						setState(4430);
						((CreateUserMysqlV57Context)_localctx).tlsNone = match(NONE);
						}
						break;
					case SSL:
					case CIPHER:
					case ISSUER:
					case SUBJECT:
					case X509:
						{
						setState(4431);
						tlsOption();
						setState(4438);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
							{
							{
							setState(4433);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==AND) {
								{
								setState(4432);
								match(AND);
								}
							}

							setState(4435);
							tlsOption();
							}
							}
							setState(4440);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(4451);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(4445);
					match(WITH);
					setState(4447); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(4446);
						userResourceOption();
						}
						}
						setState(4449); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( ((((_la - 426)) & ~0x3f) == 0 && ((1L << (_la - 426)) & ((1L << (MAX_CONNECTIONS_PER_HOUR - 426)) | (1L << (MAX_QUERIES_PER_HOUR - 426)) | (1L << (MAX_UPDATES_PER_HOUR - 426)) | (1L << (MAX_USER_CONNECTIONS - 426)))) != 0) );
					}
				}

				setState(4457);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ACCOUNT || _la==PASSWORD) {
					{
					setState(4455);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case PASSWORD:
						{
						setState(4453);
						userPasswordOption();
						}
						break;
					case ACCOUNT:
						{
						setState(4454);
						userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(4459);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropUserContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DropUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropUser; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropUser(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDropUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropUserContext dropUser() throws RecognitionException {
		DropUserContext _localctx = new DropUserContext(_ctx, getState());
		enterRule(_localctx, 386, RULE_dropUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4462);
			match(DROP);
			setState(4463);
			match(USER);
			setState(4465);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(4464);
				ifExists();
				}
			}

			setState(4467);
			userName();
			setState(4472);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4468);
				match(COMMA);
				setState(4469);
				userName();
				}
				}
				setState(4474);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantStatementContext extends ParserRuleContext {
		public Token privilegeObject;
		public Token tlsNone;
		public List<TerminalNode> GRANT() { return getTokens(MySqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(MySqlParser.GRANT, i);
		}
		public List<PrivelegeClauseContext> privelegeClause() {
			return getRuleContexts(PrivelegeClauseContext.class);
		}
		public PrivelegeClauseContext privelegeClause(int i) {
			return getRuleContext(PrivelegeClauseContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public PrivilegeLevelContext privilegeLevel() {
			return getRuleContext(PrivilegeLevelContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List<UserAuthOptionContext> userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public List<TlsOptionContext> tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List<TerminalNode> OPTION() { return getTokens(MySqlParser.OPTION); }
		public TerminalNode OPTION(int i) {
			return getToken(MySqlParser.OPTION, i);
		}
		public List<UserResourceOptionContext> userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List<TerminalNode> AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public GrantStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGrantStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGrantStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGrantStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantStatementContext grantStatement() throws RecognitionException {
		GrantStatementContext _localctx = new GrantStatementContext(_ctx, getState());
		enterRule(_localctx, 388, RULE_grantStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4475);
			match(GRANT);
			setState(4476);
			privelegeClause();
			setState(4481);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4477);
				match(COMMA);
				setState(4478);
				privelegeClause();
				}
				}
				setState(4483);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4484);
			match(ON);
			setState(4486);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,653,_ctx) ) {
			case 1:
				{
				setState(4485);
				((GrantStatementContext)_localctx).privilegeObject = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==PROCEDURE || _la==TABLE || _la==FUNCTION) ) {
					((GrantStatementContext)_localctx).privilegeObject = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(4488);
			privilegeLevel();
			setState(4489);
			match(TO);
			setState(4490);
			userAuthOption();
			setState(4495);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4491);
				match(COMMA);
				setState(4492);
				userAuthOption();
				}
				}
				setState(4497);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4512);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REQUIRE) {
				{
				setState(4498);
				match(REQUIRE);
				setState(4510);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case NONE:
					{
					setState(4499);
					((GrantStatementContext)_localctx).tlsNone = match(NONE);
					}
					break;
				case SSL:
				case CIPHER:
				case ISSUER:
				case SUBJECT:
				case X509:
					{
					setState(4500);
					tlsOption();
					setState(4507);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
						{
						{
						setState(4502);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==AND) {
							{
							setState(4501);
							match(AND);
							}
						}

						setState(4504);
						tlsOption();
						}
						}
						setState(4509);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(4523);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(4514);
				match(WITH);
				setState(4520);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,660,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						setState(4518);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case GRANT:
							{
							setState(4515);
							match(GRANT);
							setState(4516);
							match(OPTION);
							}
							break;
						case MAX_CONNECTIONS_PER_HOUR:
						case MAX_QUERIES_PER_HOUR:
						case MAX_UPDATES_PER_HOUR:
						case MAX_USER_CONNECTIONS:
							{
							setState(4517);
							userResourceOption();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						} 
					}
					setState(4522);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,660,_ctx);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantProxyContext extends ParserRuleContext {
		public UserNameContext fromFirst;
		public UserNameContext toFirst;
		public UserNameContext userName;
		public List<UserNameContext> toOther = new ArrayList<UserNameContext>();
		public List<TerminalNode> GRANT() { return getTokens(MySqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(MySqlParser.GRANT, i);
		}
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public GrantProxyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantProxy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGrantProxy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGrantProxy(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGrantProxy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantProxyContext grantProxy() throws RecognitionException {
		GrantProxyContext _localctx = new GrantProxyContext(_ctx, getState());
		enterRule(_localctx, 390, RULE_grantProxy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4525);
			match(GRANT);
			setState(4526);
			match(PROXY);
			setState(4527);
			match(ON);
			setState(4528);
			((GrantProxyContext)_localctx).fromFirst = userName();
			setState(4529);
			match(TO);
			setState(4530);
			((GrantProxyContext)_localctx).toFirst = userName();
			setState(4535);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4531);
				match(COMMA);
				setState(4532);
				((GrantProxyContext)_localctx).userName = userName();
				((GrantProxyContext)_localctx).toOther.add(((GrantProxyContext)_localctx).userName);
				}
				}
				setState(4537);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4541);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(4538);
				match(WITH);
				setState(4539);
				match(GRANT);
				setState(4540);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameUserContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List<RenameUserClauseContext> renameUserClause() {
			return getRuleContexts(RenameUserClauseContext.class);
		}
		public RenameUserClauseContext renameUserClause(int i) {
			return getRuleContext(RenameUserClauseContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RenameUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameUser; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameUser(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRenameUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameUserContext renameUser() throws RecognitionException {
		RenameUserContext _localctx = new RenameUserContext(_ctx, getState());
		enterRule(_localctx, 392, RULE_renameUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4543);
			match(RENAME);
			setState(4544);
			match(USER);
			setState(4545);
			renameUserClause();
			setState(4550);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4546);
				match(COMMA);
				setState(4547);
				renameUserClause();
				}
				}
				setState(4552);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeStatementContext extends ParserRuleContext {
		public RevokeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revokeStatement; }
	 
		public RevokeStatementContext() { }
		public void copyFrom(RevokeStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DetailRevokeContext extends RevokeStatementContext {
		public Token privilegeObject;
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public List<PrivelegeClauseContext> privelegeClause() {
			return getRuleContexts(PrivelegeClauseContext.class);
		}
		public PrivelegeClauseContext privelegeClause(int i) {
			return getRuleContext(PrivelegeClauseContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public PrivilegeLevelContext privilegeLevel() {
			return getRuleContext(PrivilegeLevelContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public DetailRevokeContext(RevokeStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDetailRevoke(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDetailRevoke(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDetailRevoke(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShortRevokeContext extends RevokeStatementContext {
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode GRANT() { return getToken(MySqlParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public ShortRevokeContext(RevokeStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShortRevoke(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShortRevoke(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShortRevoke(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RevokeStatementContext revokeStatement() throws RecognitionException {
		RevokeStatementContext _localctx = new RevokeStatementContext(_ctx, getState());
		enterRule(_localctx, 394, RULE_revokeStatement);
		int _la;
		try {
			setState(4593);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) {
			case 1:
				_localctx = new DetailRevokeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4553);
				match(REVOKE);
				setState(4554);
				privelegeClause();
				setState(4559);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4555);
					match(COMMA);
					setState(4556);
					privelegeClause();
					}
					}
					setState(4561);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4562);
				match(ON);
				setState(4564);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,666,_ctx) ) {
				case 1:
					{
					setState(4563);
					((DetailRevokeContext)_localctx).privilegeObject = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==PROCEDURE || _la==TABLE || _la==FUNCTION) ) {
						((DetailRevokeContext)_localctx).privilegeObject = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(4566);
				privilegeLevel();
				setState(4567);
				match(FROM);
				setState(4568);
				userName();
				setState(4573);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4569);
					match(COMMA);
					setState(4570);
					userName();
					}
					}
					setState(4575);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new ShortRevokeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4576);
				match(REVOKE);
				setState(4577);
				match(ALL);
				setState(4579);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(4578);
					match(PRIVILEGES);
					}
				}

				setState(4581);
				match(COMMA);
				setState(4582);
				match(GRANT);
				setState(4583);
				match(OPTION);
				setState(4584);
				match(FROM);
				setState(4585);
				userName();
				setState(4590);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4586);
					match(COMMA);
					setState(4587);
					userName();
					}
					}
					setState(4592);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeProxyContext extends ParserRuleContext {
		public UserNameContext onUser;
		public UserNameContext fromFirst;
		public UserNameContext userName;
		public List<UserNameContext> fromOther = new ArrayList<UserNameContext>();
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RevokeProxyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revokeProxy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRevokeProxy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRevokeProxy(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRevokeProxy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RevokeProxyContext revokeProxy() throws RecognitionException {
		RevokeProxyContext _localctx = new RevokeProxyContext(_ctx, getState());
		enterRule(_localctx, 396, RULE_revokeProxy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4595);
			match(REVOKE);
			setState(4596);
			match(PROXY);
			setState(4597);
			match(ON);
			setState(4598);
			((RevokeProxyContext)_localctx).onUser = userName();
			setState(4599);
			match(FROM);
			setState(4600);
			((RevokeProxyContext)_localctx).fromFirst = userName();
			setState(4605);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4601);
				match(COMMA);
				setState(4602);
				((RevokeProxyContext)_localctx).userName = userName();
				((RevokeProxyContext)_localctx).fromOther.add(((RevokeProxyContext)_localctx).userName);
				}
				}
				setState(4607);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetPasswordStatementContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PasswordFunctionClauseContext passwordFunctionClause() {
			return getRuleContext(PasswordFunctionClauseContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public SetPasswordStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setPasswordStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetPasswordStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetPasswordStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetPasswordStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetPasswordStatementContext setPasswordStatement() throws RecognitionException {
		SetPasswordStatementContext _localctx = new SetPasswordStatementContext(_ctx, getState());
		enterRule(_localctx, 398, RULE_setPasswordStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4608);
			match(SET);
			setState(4609);
			match(PASSWORD);
			setState(4612);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4610);
				match(FOR);
				setState(4611);
				userName();
				}
			}

			setState(4614);
			match(EQUAL_SYMBOL);
			setState(4617);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OLD_PASSWORD:
			case PASSWORD:
				{
				setState(4615);
				passwordFunctionClause();
				}
				break;
			case STRING_LITERAL:
				{
				setState(4616);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserSpecificationContext extends ParserRuleContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public UserPasswordOptionContext userPasswordOption() {
			return getRuleContext(UserPasswordOptionContext.class,0);
		}
		public UserSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userSpecification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserSpecification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserSpecification(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserSpecificationContext userSpecification() throws RecognitionException {
		UserSpecificationContext _localctx = new UserSpecificationContext(_ctx, getState());
		enterRule(_localctx, 400, RULE_userSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4619);
			userName();
			setState(4620);
			userPasswordOption();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserAuthOptionContext extends ParserRuleContext {
		public UserAuthOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userAuthOption; }
	 
		public UserAuthOptionContext() { }
		public void copyFrom(UserAuthOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SimpleAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public SimpleAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleAuthOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PasswordAuthOptionContext extends UserAuthOptionContext {
		public Token hashed;
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PasswordAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordAuthOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPasswordAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StringAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public AuthPluginContext authPlugin() {
			return getRuleContext(AuthPluginContext.class,0);
		}
		public StringAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringAuthOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStringAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class HashAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public AuthPluginContext authPlugin() {
			return getRuleContext(AuthPluginContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public HashAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHashAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHashAuthOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHashAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserAuthOptionContext userAuthOption() throws RecognitionException {
		UserAuthOptionContext _localctx = new UserAuthOptionContext(_ctx, getState());
		enterRule(_localctx, 402, RULE_userAuthOption);
		int _la;
		try {
			setState(4646);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,676,_ctx) ) {
			case 1:
				_localctx = new PasswordAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4622);
				userName();
				setState(4623);
				match(IDENTIFIED);
				setState(4624);
				match(BY);
				setState(4625);
				match(PASSWORD);
				setState(4626);
				((PasswordAuthOptionContext)_localctx).hashed = match(STRING_LITERAL);
				}
				break;
			case 2:
				_localctx = new StringAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4628);
				userName();
				setState(4629);
				match(IDENTIFIED);
				setState(4632);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(4630);
					match(WITH);
					setState(4631);
					authPlugin();
					}
				}

				setState(4634);
				match(BY);
				setState(4635);
				match(STRING_LITERAL);
				}
				break;
			case 3:
				_localctx = new HashAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4637);
				userName();
				setState(4638);
				match(IDENTIFIED);
				setState(4639);
				match(WITH);
				setState(4640);
				authPlugin();
				setState(4643);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(4641);
					match(AS);
					setState(4642);
					match(STRING_LITERAL);
					}
				}

				}
				break;
			case 4:
				_localctx = new SimpleAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4645);
				userName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TlsOptionContext extends ParserRuleContext {
		public TerminalNode SSL() { return getToken(MySqlParser.SSL, 0); }
		public TerminalNode X509() { return getToken(MySqlParser.X509, 0); }
		public TerminalNode CIPHER() { return getToken(MySqlParser.CIPHER, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ISSUER() { return getToken(MySqlParser.ISSUER, 0); }
		public TerminalNode SUBJECT() { return getToken(MySqlParser.SUBJECT, 0); }
		public TlsOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tlsOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTlsOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTlsOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTlsOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TlsOptionContext tlsOption() throws RecognitionException {
		TlsOptionContext _localctx = new TlsOptionContext(_ctx, getState());
		enterRule(_localctx, 404, RULE_tlsOption);
		try {
			setState(4656);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SSL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4648);
				match(SSL);
				}
				break;
			case X509:
				enterOuterAlt(_localctx, 2);
				{
				setState(4649);
				match(X509);
				}
				break;
			case CIPHER:
				enterOuterAlt(_localctx, 3);
				{
				setState(4650);
				match(CIPHER);
				setState(4651);
				match(STRING_LITERAL);
				}
				break;
			case ISSUER:
				enterOuterAlt(_localctx, 4);
				{
				setState(4652);
				match(ISSUER);
				setState(4653);
				match(STRING_LITERAL);
				}
				break;
			case SUBJECT:
				enterOuterAlt(_localctx, 5);
				{
				setState(4654);
				match(SUBJECT);
				setState(4655);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserResourceOptionContext extends ParserRuleContext {
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySqlParser.MAX_USER_CONNECTIONS, 0); }
		public UserResourceOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userResourceOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserResourceOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserResourceOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserResourceOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserResourceOptionContext userResourceOption() throws RecognitionException {
		UserResourceOptionContext _localctx = new UserResourceOptionContext(_ctx, getState());
		enterRule(_localctx, 406, RULE_userResourceOption);
		try {
			setState(4666);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX_QUERIES_PER_HOUR:
				enterOuterAlt(_localctx, 1);
				{
				setState(4658);
				match(MAX_QUERIES_PER_HOUR);
				setState(4659);
				decimalLiteral();
				}
				break;
			case MAX_UPDATES_PER_HOUR:
				enterOuterAlt(_localctx, 2);
				{
				setState(4660);
				match(MAX_UPDATES_PER_HOUR);
				setState(4661);
				decimalLiteral();
				}
				break;
			case MAX_CONNECTIONS_PER_HOUR:
				enterOuterAlt(_localctx, 3);
				{
				setState(4662);
				match(MAX_CONNECTIONS_PER_HOUR);
				setState(4663);
				decimalLiteral();
				}
				break;
			case MAX_USER_CONNECTIONS:
				enterOuterAlt(_localctx, 4);
				{
				setState(4664);
				match(MAX_USER_CONNECTIONS);
				setState(4665);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserPasswordOptionContext extends ParserRuleContext {
		public Token expireType;
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EXPIRE() { return getToken(MySqlParser.EXPIRE, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode NEVER() { return getToken(MySqlParser.NEVER, 0); }
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public UserPasswordOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userPasswordOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserPasswordOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserPasswordOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserPasswordOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserPasswordOptionContext userPasswordOption() throws RecognitionException {
		UserPasswordOptionContext _localctx = new UserPasswordOptionContext(_ctx, getState());
		enterRule(_localctx, 408, RULE_userPasswordOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4668);
			match(PASSWORD);
			setState(4669);
			match(EXPIRE);
			setState(4676);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DEFAULT:
				{
				setState(4670);
				((UserPasswordOptionContext)_localctx).expireType = match(DEFAULT);
				}
				break;
			case NEVER:
				{
				setState(4671);
				((UserPasswordOptionContext)_localctx).expireType = match(NEVER);
				}
				break;
			case INTERVAL:
				{
				setState(4672);
				((UserPasswordOptionContext)_localctx).expireType = match(INTERVAL);
				setState(4673);
				decimalLiteral();
				setState(4674);
				match(DAY);
				}
				break;
			case EOF:
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case UNLOCK:
			case UPDATE:
			case USE:
			case ACCOUNT:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CHECKSUM:
			case COMMIT:
			case DEALLOCATE:
			case DO:
			case FLUSH:
			case HANDLER:
			case HELP:
			case INSTALL:
			case PASSWORD:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case START:
			case STOP:
			case TRUNCATE:
			case UNINSTALL:
			case XA:
			case EXECUTE:
			case SHUTDOWN:
			case MINUSMINUS:
			case LR_BRACKET:
			case COMMA:
			case SEMI:
				break;
			default:
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserLockOptionContext extends ParserRuleContext {
		public Token lockType;
		public TerminalNode ACCOUNT() { return getToken(MySqlParser.ACCOUNT, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode UNLOCK() { return getToken(MySqlParser.UNLOCK, 0); }
		public UserLockOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userLockOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserLockOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserLockOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserLockOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserLockOptionContext userLockOption() throws RecognitionException {
		UserLockOptionContext _localctx = new UserLockOptionContext(_ctx, getState());
		enterRule(_localctx, 410, RULE_userLockOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4678);
			match(ACCOUNT);
			setState(4679);
			((UserLockOptionContext)_localctx).lockType = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==LOCK || _la==UNLOCK) ) {
				((UserLockOptionContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivelegeClauseContext extends ParserRuleContext {
		public PrivilegeContext privilege() {
			return getRuleContext(PrivilegeContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public PrivelegeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privelegeClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivelegeClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivelegeClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrivelegeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivelegeClauseContext privelegeClause() throws RecognitionException {
		PrivelegeClauseContext _localctx = new PrivelegeClauseContext(_ctx, getState());
		enterRule(_localctx, 412, RULE_privelegeClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4681);
			privilege();
			setState(4686);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(4682);
				match(LR_BRACKET);
				setState(4683);
				uidList();
				setState(4684);
				match(RR_BRACKET);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode ROUTINE() { return getToken(MySqlParser.ROUTINE, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public TerminalNode FILE() { return getToken(MySqlParser.FILE, 0); }
		public TerminalNode GRANT() { return getToken(MySqlParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode PROCESS() { return getToken(MySqlParser.PROCESS, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode REFERENCES() { return getToken(MySqlParser.REFERENCES, 0); }
		public TerminalNode RELOAD() { return getToken(MySqlParser.RELOAD, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode CLIENT() { return getToken(MySqlParser.CLIENT, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode DATABASES() { return getToken(MySqlParser.DATABASES, 0); }
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public TerminalNode SUPER() { return getToken(MySqlParser.SUPER, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode USAGE() { return getToken(MySqlParser.USAGE, 0); }
		public TerminalNode SESSION_VARIABLES_ADMIN() { return getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0); }
		public PrivilegeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilege; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivilege(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivilege(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrivilege(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeContext privilege() throws RecognitionException {
		PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState());
		enterRule(_localctx, 414, RULE_privilege);
		int _la;
		try {
			setState(4731);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4688);
				match(ALL);
				setState(4690);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(4689);
					match(PRIVILEGES);
					}
				}

				}
				break;
			case ALTER:
				enterOuterAlt(_localctx, 2);
				{
				setState(4692);
				match(ALTER);
				setState(4694);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ROUTINE) {
					{
					setState(4693);
					match(ROUTINE);
					}
				}

				}
				break;
			case CREATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(4696);
				match(CREATE);
				setState(4703);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case TEMPORARY:
					{
					setState(4697);
					match(TEMPORARY);
					setState(4698);
					match(TABLES);
					}
					break;
				case ROUTINE:
					{
					setState(4699);
					match(ROUTINE);
					}
					break;
				case VIEW:
					{
					setState(4700);
					match(VIEW);
					}
					break;
				case USER:
					{
					setState(4701);
					match(USER);
					}
					break;
				case TABLESPACE:
					{
					setState(4702);
					match(TABLESPACE);
					}
					break;
				case ON:
				case LR_BRACKET:
				case COMMA:
					break;
				default:
					break;
				}
				}
				break;
			case DELETE:
				enterOuterAlt(_localctx, 4);
				{
				setState(4705);
				match(DELETE);
				}
				break;
			case DROP:
				enterOuterAlt(_localctx, 5);
				{
				setState(4706);
				match(DROP);
				}
				break;
			case EVENT:
				enterOuterAlt(_localctx, 6);
				{
				setState(4707);
				match(EVENT);
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 7);
				{
				setState(4708);
				match(EXECUTE);
				}
				break;
			case FILE:
				enterOuterAlt(_localctx, 8);
				{
				setState(4709);
				match(FILE);
				}
				break;
			case GRANT:
				enterOuterAlt(_localctx, 9);
				{
				setState(4710);
				match(GRANT);
				setState(4711);
				match(OPTION);
				}
				break;
			case INDEX:
				enterOuterAlt(_localctx, 10);
				{
				setState(4712);
				match(INDEX);
				}
				break;
			case INSERT:
				enterOuterAlt(_localctx, 11);
				{
				setState(4713);
				match(INSERT);
				}
				break;
			case LOCK:
				enterOuterAlt(_localctx, 12);
				{
				setState(4714);
				match(LOCK);
				setState(4715);
				match(TABLES);
				}
				break;
			case PROCESS:
				enterOuterAlt(_localctx, 13);
				{
				setState(4716);
				match(PROCESS);
				}
				break;
			case PROXY:
				enterOuterAlt(_localctx, 14);
				{
				setState(4717);
				match(PROXY);
				}
				break;
			case REFERENCES:
				enterOuterAlt(_localctx, 15);
				{
				setState(4718);
				match(REFERENCES);
				}
				break;
			case RELOAD:
				enterOuterAlt(_localctx, 16);
				{
				setState(4719);
				match(RELOAD);
				}
				break;
			case REPLICATION:
				enterOuterAlt(_localctx, 17);
				{
				setState(4720);
				match(REPLICATION);
				setState(4721);
				_la = _input.LA(1);
				if ( !(_la==CLIENT || _la==SLAVE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SELECT:
				enterOuterAlt(_localctx, 18);
				{
				setState(4722);
				match(SELECT);
				}
				break;
			case SHOW:
				enterOuterAlt(_localctx, 19);
				{
				setState(4723);
				match(SHOW);
				setState(4724);
				_la = _input.LA(1);
				if ( !(_la==DATABASES || _la==VIEW) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SHUTDOWN:
				enterOuterAlt(_localctx, 20);
				{
				setState(4725);
				match(SHUTDOWN);
				}
				break;
			case SUPER:
				enterOuterAlt(_localctx, 21);
				{
				setState(4726);
				match(SUPER);
				}
				break;
			case TRIGGER:
				enterOuterAlt(_localctx, 22);
				{
				setState(4727);
				match(TRIGGER);
				}
				break;
			case UPDATE:
				enterOuterAlt(_localctx, 23);
				{
				setState(4728);
				match(UPDATE);
				}
				break;
			case USAGE:
				enterOuterAlt(_localctx, 24);
				{
				setState(4729);
				match(USAGE);
				}
				break;
			case SESSION_VARIABLES_ADMIN:
				enterOuterAlt(_localctx, 25);
				{
				setState(4730);
				match(SESSION_VARIABLES_ADMIN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeLevelContext extends ParserRuleContext {
		public PrivilegeLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeLevel; }
	 
		public PrivilegeLevelContext() { }
		public void copyFrom(PrivilegeLevelContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DefiniteSchemaPrivLevelContext extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public DefiniteSchemaPrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteSchemaPrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteSchemaPrivLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefiniteSchemaPrivLevel(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DefiniteFullTablePrivLevel2Context extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DottedIdContext dottedId() {
			return getRuleContext(DottedIdContext.class,0);
		}
		public DefiniteFullTablePrivLevel2Context(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteFullTablePrivLevel2(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteFullTablePrivLevel2(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefiniteFullTablePrivLevel2(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DefiniteFullTablePrivLevelContext extends PrivilegeLevelContext {
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public DefiniteFullTablePrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteFullTablePrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteFullTablePrivLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefiniteFullTablePrivLevel(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GlobalPrivLevelContext extends PrivilegeLevelContext {
		public List<TerminalNode> STAR() { return getTokens(MySqlParser.STAR); }
		public TerminalNode STAR(int i) {
			return getToken(MySqlParser.STAR, i);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public GlobalPrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGlobalPrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGlobalPrivLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGlobalPrivLevel(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DefiniteTablePrivLevelContext extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DefiniteTablePrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteTablePrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteTablePrivLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefiniteTablePrivLevel(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CurrentSchemaPriviLevelContext extends PrivilegeLevelContext {
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public CurrentSchemaPriviLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentSchemaPriviLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentSchemaPriviLevel(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCurrentSchemaPriviLevel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegeLevelContext privilegeLevel() throws RecognitionException {
		PrivilegeLevelContext _localctx = new PrivilegeLevelContext(_ctx, getState());
		enterRule(_localctx, 416, RULE_privilegeLevel);
		try {
			setState(4749);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
			case 1:
				_localctx = new CurrentSchemaPriviLevelContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4733);
				match(STAR);
				}
				break;
			case 2:
				_localctx = new GlobalPrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4734);
				match(STAR);
				setState(4735);
				match(DOT);
				setState(4736);
				match(STAR);
				}
				break;
			case 3:
				_localctx = new DefiniteSchemaPrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4737);
				uid();
				setState(4738);
				match(DOT);
				setState(4739);
				match(STAR);
				}
				break;
			case 4:
				_localctx = new DefiniteFullTablePrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4741);
				uid();
				setState(4742);
				match(DOT);
				setState(4743);
				uid();
				}
				break;
			case 5:
				_localctx = new DefiniteFullTablePrivLevel2Context(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4745);
				uid();
				setState(4746);
				dottedId();
				}
				break;
			case 6:
				_localctx = new DefiniteTablePrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(4748);
				uid();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameUserClauseContext extends ParserRuleContext {
		public UserNameContext fromFirst;
		public UserNameContext toFirst;
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List<UserNameContext> userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public RenameUserClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameUserClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameUserClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameUserClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRenameUserClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameUserClauseContext renameUserClause() throws RecognitionException {
		RenameUserClauseContext _localctx = new RenameUserClauseContext(_ctx, getState());
		enterRule(_localctx, 418, RULE_renameUserClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4751);
			((RenameUserClauseContext)_localctx).fromFirst = userName();
			setState(4752);
			match(TO);
			setState(4753);
			((RenameUserClauseContext)_localctx).toFirst = userName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnalyzeTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode ANALYZE() { return getToken(MySqlParser.ANALYZE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public AnalyzeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analyzeTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAnalyzeTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAnalyzeTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAnalyzeTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnalyzeTableContext analyzeTable() throws RecognitionException {
		AnalyzeTableContext _localctx = new AnalyzeTableContext(_ctx, getState());
		enterRule(_localctx, 420, RULE_analyzeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4755);
			match(ANALYZE);
			setState(4757);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(4756);
				((AnalyzeTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((AnalyzeTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4759);
			match(TABLE);
			setState(4760);
			tables();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableContext extends ParserRuleContext {
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public List<CheckTableOptionContext> checkTableOption() {
			return getRuleContexts(CheckTableOptionContext.class);
		}
		public CheckTableOptionContext checkTableOption(int i) {
			return getRuleContext(CheckTableOptionContext.class,i);
		}
		public CheckTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCheckTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckTableContext checkTable() throws RecognitionException {
		CheckTableContext _localctx = new CheckTableContext(_ctx, getState());
		enterRule(_localctx, 422, RULE_checkTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4762);
			match(CHECK);
			setState(4763);
			match(TABLE);
			setState(4764);
			tables();
			setState(4768);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FOR || _la==CHANGED || _la==EXTENDED || _la==FAST || _la==MEDIUM || _la==QUICK) {
				{
				{
				setState(4765);
				checkTableOption();
				}
				}
				setState(4770);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChecksumTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public ChecksumTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checksumTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChecksumTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChecksumTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitChecksumTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChecksumTableContext checksumTable() throws RecognitionException {
		ChecksumTableContext _localctx = new ChecksumTableContext(_ctx, getState());
		enterRule(_localctx, 424, RULE_checksumTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4771);
			match(CHECKSUM);
			setState(4772);
			match(TABLE);
			setState(4773);
			tables();
			setState(4775);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED || _la==QUICK) {
				{
				setState(4774);
				((ChecksumTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==EXTENDED || _la==QUICK) ) {
					((ChecksumTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptimizeTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode OPTIMIZE() { return getToken(MySqlParser.OPTIMIZE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public OptimizeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optimizeTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOptimizeTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOptimizeTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitOptimizeTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptimizeTableContext optimizeTable() throws RecognitionException {
		OptimizeTableContext _localctx = new OptimizeTableContext(_ctx, getState());
		enterRule(_localctx, 426, RULE_optimizeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4777);
			match(OPTIMIZE);
			setState(4779);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(4778);
				((OptimizeTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((OptimizeTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4781);
			match(TABLE);
			setState(4782);
			tables();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepairTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode USE_FRM() { return getToken(MySqlParser.USE_FRM, 0); }
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public RepairTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repairTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRepairTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRepairTable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRepairTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepairTableContext repairTable() throws RecognitionException {
		RepairTableContext _localctx = new RepairTableContext(_ctx, getState());
		enterRule(_localctx, 428, RULE_repairTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4784);
			match(REPAIR);
			setState(4786);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(4785);
				((RepairTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((RepairTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4788);
			match(TABLE);
			setState(4789);
			tables();
			setState(4791);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==QUICK) {
				{
				setState(4790);
				match(QUICK);
				}
			}

			setState(4794);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(4793);
				match(EXTENDED);
				}
			}

			setState(4797);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USE_FRM) {
				{
				setState(4796);
				match(USE_FRM);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode FAST() { return getToken(MySqlParser.FAST, 0); }
		public TerminalNode MEDIUM() { return getToken(MySqlParser.MEDIUM, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode CHANGED() { return getToken(MySqlParser.CHANGED, 0); }
		public CheckTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTableOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTableOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCheckTableOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckTableOptionContext checkTableOption() throws RecognitionException {
		CheckTableOptionContext _localctx = new CheckTableOptionContext(_ctx, getState());
		enterRule(_localctx, 430, RULE_checkTableOption);
		try {
			setState(4806);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(4799);
				match(FOR);
				setState(4800);
				match(UPGRADE);
				}
				break;
			case QUICK:
				enterOuterAlt(_localctx, 2);
				{
				setState(4801);
				match(QUICK);
				}
				break;
			case FAST:
				enterOuterAlt(_localctx, 3);
				{
				setState(4802);
				match(FAST);
				}
				break;
			case MEDIUM:
				enterOuterAlt(_localctx, 4);
				{
				setState(4803);
				match(MEDIUM);
				}
				break;
			case EXTENDED:
				enterOuterAlt(_localctx, 5);
				{
				setState(4804);
				match(EXTENDED);
				}
				break;
			case CHANGED:
				enterOuterAlt(_localctx, 6);
				{
				setState(4805);
				match(CHANGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUdfunctionContext extends ParserRuleContext {
		public Token returnType;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode STRING() { return getToken(MySqlParser.STRING, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public TerminalNode REAL() { return getToken(MySqlParser.REAL, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public TerminalNode AGGREGATE() { return getToken(MySqlParser.AGGREGATE, 0); }
		public CreateUdfunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUdfunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUdfunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUdfunction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCreateUdfunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUdfunctionContext createUdfunction() throws RecognitionException {
		CreateUdfunctionContext _localctx = new CreateUdfunctionContext(_ctx, getState());
		enterRule(_localctx, 432, RULE_createUdfunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4808);
			match(CREATE);
			setState(4810);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AGGREGATE) {
				{
				setState(4809);
				match(AGGREGATE);
				}
			}

			setState(4812);
			match(FUNCTION);
			setState(4813);
			uid();
			setState(4814);
			match(RETURNS);
			setState(4815);
			((CreateUdfunctionContext)_localctx).returnType = _input.LT(1);
			_la = _input.LA(1);
			if ( !(((((_la - 188)) & ~0x3f) == 0 && ((1L << (_la - 188)) & ((1L << (INTEGER - 188)) | (1L << (REAL - 188)) | (1L << (DECIMAL - 188)))) != 0) || _la==STRING) ) {
				((CreateUdfunctionContext)_localctx).returnType = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4816);
			match(SONAME);
			setState(4817);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstallPluginContext extends ParserRuleContext {
		public TerminalNode INSTALL() { return getToken(MySqlParser.INSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public InstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_installPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInstallPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInstallPlugin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInstallPlugin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InstallPluginContext installPlugin() throws RecognitionException {
		InstallPluginContext _localctx = new InstallPluginContext(_ctx, getState());
		enterRule(_localctx, 434, RULE_installPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4819);
			match(INSTALL);
			setState(4820);
			match(PLUGIN);
			setState(4821);
			uid();
			setState(4822);
			match(SONAME);
			setState(4823);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UninstallPluginContext extends ParserRuleContext {
		public TerminalNode UNINSTALL() { return getToken(MySqlParser.UNINSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public UninstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uninstallPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUninstallPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUninstallPlugin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUninstallPlugin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UninstallPluginContext uninstallPlugin() throws RecognitionException {
		UninstallPluginContext _localctx = new UninstallPluginContext(_ctx, getState());
		enterRule(_localctx, 436, RULE_uninstallPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4825);
			match(UNINSTALL);
			setState(4826);
			match(PLUGIN);
			setState(4827);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetStatementContext extends ParserRuleContext {
		public SetStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setStatement; }
	 
		public SetStatementContext() { }
		public void copyFrom(SetStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SetTransactionContext extends SetStatementContext {
		public SetTransactionStatementContext setTransactionStatement() {
			return getRuleContext(SetTransactionStatementContext.class,0);
		}
		public SetTransactionContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetTransaction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetTransaction(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetCharsetContext extends SetStatementContext {
		public List<TerminalNode> SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public SetCharsetContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetCharset(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetCharset(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetNamesContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode NAMES() { return getToken(MySqlParser.NAMES, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public SetNamesContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetNames(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetNames(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetNames(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetPasswordContext extends SetStatementContext {
		public SetPasswordStatementContext setPasswordStatement() {
			return getRuleContext(SetPasswordStatementContext.class,0);
		}
		public SetPasswordContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetPassword(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetPassword(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetPassword(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetAutocommitContext extends SetStatementContext {
		public SetAutocommitStatementContext setAutocommitStatement() {
			return getRuleContext(SetAutocommitStatementContext.class,0);
		}
		public SetAutocommitContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetAutocommit(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetAutocommit(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetAutocommit(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetNewValueInsideTriggerContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<FullIdContext> fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List<TerminalNode> VAR_ASSIGN() { return getTokens(MySqlParser.VAR_ASSIGN); }
		public TerminalNode VAR_ASSIGN(int i) {
			return getToken(MySqlParser.VAR_ASSIGN, i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SetNewValueInsideTriggerContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetNewValueInsideTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetNewValueInsideTrigger(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetNewValueInsideTrigger(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SetVariableContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<VariableClauseContext> variableClause() {
			return getRuleContexts(VariableClauseContext.class);
		}
		public VariableClauseContext variableClause(int i) {
			return getRuleContext(VariableClauseContext.class,i);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List<TerminalNode> VAR_ASSIGN() { return getTokens(MySqlParser.VAR_ASSIGN); }
		public TerminalNode VAR_ASSIGN(int i) {
			return getToken(MySqlParser.VAR_ASSIGN, i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SetVariableContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetVariable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSetVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetStatementContext setStatement() throws RecognitionException {
		SetStatementContext _localctx = new SetStatementContext(_ctx, getState());
		enterRule(_localctx, 438, RULE_setStatement);
		int _la;
		try {
			setState(4880);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,702,_ctx) ) {
			case 1:
				_localctx = new SetVariableContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4829);
				match(SET);
				setState(4830);
				variableClause();
				setState(4831);
				_la = _input.LA(1);
				if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4832);
				expression(0);
				setState(4840);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4833);
					match(COMMA);
					setState(4834);
					variableClause();
					setState(4835);
					_la = _input.LA(1);
					if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4836);
					expression(0);
					}
					}
					setState(4842);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new SetCharsetContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4843);
				match(SET);
				setState(4847);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CHARACTER:
					{
					setState(4844);
					match(CHARACTER);
					setState(4845);
					match(SET);
					}
					break;
				case CHARSET:
					{
					setState(4846);
					match(CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4851);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(4849);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(4850);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 3:
				_localctx = new SetNamesContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4853);
				match(SET);
				setState(4854);
				match(NAMES);
				setState(4861);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(4855);
					charsetName();
					setState(4858);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COLLATE) {
						{
						setState(4856);
						match(COLLATE);
						setState(4857);
						collationName();
						}
					}

					}
					break;
				case DEFAULT:
					{
					setState(4860);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				_localctx = new SetPasswordContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4863);
				setPasswordStatement();
				}
				break;
			case 5:
				_localctx = new SetTransactionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4864);
				setTransactionStatement();
				}
				break;
			case 6:
				_localctx = new SetAutocommitContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(4865);
				setAutocommitStatement();
				}
				break;
			case 7:
				_localctx = new SetNewValueInsideTriggerContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(4866);
				match(SET);
				setState(4867);
				fullId();
				setState(4868);
				_la = _input.LA(1);
				if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4869);
				expression(0);
				setState(4877);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4870);
					match(COMMA);
					setState(4871);
					fullId();
					setState(4872);
					_la = _input.LA(1);
					if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4873);
					expression(0);
					}
					}
					setState(4879);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowStatementContext extends ParserRuleContext {
		public ShowStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showStatement; }
	 
		public ShowStatementContext() { }
		public void copyFrom(ShowStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class ShowOpenTablesContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public ShowOpenTablesContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowOpenTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowOpenTables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowOpenTables(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowGlobalInfoContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowGlobalInfoClauseContext showGlobalInfoClause() {
			return getRuleContext(ShowGlobalInfoClauseContext.class,0);
		}
		public ShowGlobalInfoContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGlobalInfo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGlobalInfo(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowGlobalInfo(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowCreateFullIdObjectContext extends ShowStatementContext {
		public Token namedEntity;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public ShowCreateFullIdObjectContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateFullIdObject(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateFullIdObject(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowCreateFullIdObject(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowCreateUserContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public ShowCreateUserContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateUser(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowCreateUser(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowErrorsContext extends ShowStatementContext {
		public Token errorFormat;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public ShowErrorsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowErrors(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowErrors(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowErrors(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowCountErrorsContext extends ShowStatementContext {
		public Token errorFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public ShowCountErrorsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCountErrors(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCountErrors(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowCountErrors(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowObjectFilterContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowCommonEntityContext showCommonEntity() {
			return getRuleContext(ShowCommonEntityContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowObjectFilterContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowObjectFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowObjectFilter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowObjectFilter(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowCreateDbContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public ShowCreateDbContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateDb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateDb(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowCreateDb(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowEngineContext extends ShowStatementContext {
		public Token engineOption;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode MUTEX() { return getToken(MySqlParser.MUTEX, 0); }
		public ShowEngineContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowEngine(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowEngine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowSchemaFilterContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowSchemaEntityContext showSchemaEntity() {
			return getRuleContext(ShowSchemaEntityContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public ShowSchemaFilterContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSchemaFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSchemaFilter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowSchemaFilter(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowIndexesContext extends ShowStatementContext {
		public Token indexFormat;
		public Token tableFormat;
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INDEXES() { return getToken(MySqlParser.INDEXES, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public List<TerminalNode> FROM() { return getTokens(MySqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(MySqlParser.FROM, i);
		}
		public List<TerminalNode> IN() { return getTokens(MySqlParser.IN); }
		public TerminalNode IN(int i) {
			return getToken(MySqlParser.IN, i);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ShowIndexesContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowIndexes(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowIndexes(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowLogEventsContext extends ShowStatementContext {
		public Token logFormat;
		public Token filename;
		public DecimalLiteralContext fromPosition;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySqlParser.RELAYLOG, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public ShowLogEventsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowLogEvents(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowLogEvents(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowLogEvents(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowMasterLogsContext extends ShowStatementContext {
		public Token logFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public ShowMasterLogsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowMasterLogs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowMasterLogs(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowMasterLogs(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowGrantsContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode GRANTS() { return getToken(MySqlParser.GRANTS, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public ShowGrantsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGrants(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGrants(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowGrants(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowSlaveStatusContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public ShowSlaveStatusContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSlaveStatus(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSlaveStatus(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowSlaveStatus(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowRoutineContext extends ShowStatementContext {
		public Token routine;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CODE() { return getToken(MySqlParser.CODE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public ShowRoutineContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowRoutine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowRoutine(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowRoutine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowProfileContext extends ShowStatementContext {
		public DecimalLiteralContext queryCount;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode PROFILE() { return getToken(MySqlParser.PROFILE, 0); }
		public List<ShowProfileTypeContext> showProfileType() {
			return getRuleContexts(ShowProfileTypeContext.class);
		}
		public ShowProfileTypeContext showProfileType(int i) {
			return getRuleContext(ShowProfileTypeContext.class,i);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public ShowProfileContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowProfile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowProfile(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowProfile(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ShowColumnsContext extends ShowStatementContext {
		public Token columnsFormat;
		public Token tableFormat;
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public List<TerminalNode> FROM() { return getTokens(MySqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(MySqlParser.FROM, i);
		}
		public List<TerminalNode> IN() { return getTokens(MySqlParser.IN); }
		public TerminalNode IN(int i) {
			return getToken(MySqlParser.IN, i);
		}
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowColumnsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowColumns(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowColumns(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowColumns(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowStatementContext showStatement() throws RecognitionException {
		ShowStatementContext _localctx = new ShowStatementContext(_ctx, getState());
		enterRule(_localctx, 440, RULE_showStatement);
		int _la;
		try {
			setState(5033);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,724,_ctx) ) {
			case 1:
				_localctx = new ShowMasterLogsContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4882);
				match(SHOW);
				setState(4883);
				((ShowMasterLogsContext)_localctx).logFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BINARY || _la==MASTER) ) {
					((ShowMasterLogsContext)_localctx).logFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4884);
				match(LOGS);
				}
				break;
			case 2:
				_localctx = new ShowLogEventsContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4885);
				match(SHOW);
				setState(4886);
				((ShowLogEventsContext)_localctx).logFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BINLOG || _la==RELAYLOG) ) {
					((ShowLogEventsContext)_localctx).logFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4887);
				match(EVENTS);
				setState(4890);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IN) {
					{
					setState(4888);
					match(IN);
					setState(4889);
					((ShowLogEventsContext)_localctx).filename = match(STRING_LITERAL);
					}
				}

				setState(4894);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(4892);
					match(FROM);
					setState(4893);
					((ShowLogEventsContext)_localctx).fromPosition = decimalLiteral();
					}
				}

				setState(4903);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(4896);
					match(LIMIT);
					setState(4900);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) {
					case 1:
						{
						setState(4897);
						((ShowLogEventsContext)_localctx).offset = decimalLiteral();
						setState(4898);
						match(COMMA);
						}
						break;
					}
					setState(4902);
					((ShowLogEventsContext)_localctx).rowCount = decimalLiteral();
					}
				}

				}
				break;
			case 3:
				_localctx = new ShowObjectFilterContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4905);
				match(SHOW);
				setState(4906);
				showCommonEntity();
				setState(4908);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(4907);
					showFilter();
					}
				}

				}
				break;
			case 4:
				_localctx = new ShowColumnsContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4910);
				match(SHOW);
				setState(4912);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(4911);
					match(FULL);
					}
				}

				setState(4914);
				((ShowColumnsContext)_localctx).columnsFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==COLUMNS || _la==FIELDS) ) {
					((ShowColumnsContext)_localctx).columnsFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4915);
				((ShowColumnsContext)_localctx).tableFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
					((ShowColumnsContext)_localctx).tableFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4916);
				tableName();
				setState(4919);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(4917);
					((ShowColumnsContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowColumnsContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4918);
					uid();
					}
				}

				setState(4922);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(4921);
					showFilter();
					}
				}

				}
				break;
			case 5:
				_localctx = new ShowCreateDbContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4924);
				match(SHOW);
				setState(4925);
				match(CREATE);
				setState(4926);
				((ShowCreateDbContext)_localctx).schemaFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((ShowCreateDbContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4928);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(4927);
					ifNotExists();
					}
				}

				setState(4930);
				uid();
				}
				break;
			case 6:
				_localctx = new ShowCreateFullIdObjectContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(4931);
				match(SHOW);
				setState(4932);
				match(CREATE);
				setState(4933);
				((ShowCreateFullIdObjectContext)_localctx).namedEntity = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 117)) & ~0x3f) == 0 && ((1L << (_la - 117)) & ((1L << (PROCEDURE - 117)) | (1L << (TABLE - 117)) | (1L << (TRIGGER - 117)))) != 0) || _la==EVENT || _la==FUNCTION || _la==VIEW) ) {
					((ShowCreateFullIdObjectContext)_localctx).namedEntity = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4934);
				fullId();
				}
				break;
			case 7:
				_localctx = new ShowCreateUserContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(4935);
				match(SHOW);
				setState(4936);
				match(CREATE);
				setState(4937);
				match(USER);
				setState(4938);
				userName();
				}
				break;
			case 8:
				_localctx = new ShowEngineContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(4939);
				match(SHOW);
				setState(4940);
				match(ENGINE);
				setState(4941);
				engineName();
				setState(4942);
				((ShowEngineContext)_localctx).engineOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MUTEX || _la==STATUS) ) {
					((ShowEngineContext)_localctx).engineOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 9:
				_localctx = new ShowGlobalInfoContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(4944);
				match(SHOW);
				setState(4945);
				showGlobalInfoClause();
				}
				break;
			case 10:
				_localctx = new ShowErrorsContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(4946);
				match(SHOW);
				setState(4947);
				((ShowErrorsContext)_localctx).errorFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ERRORS || _la==WARNINGS) ) {
					((ShowErrorsContext)_localctx).errorFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				{
				setState(4948);
				match(LIMIT);
				setState(4952);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,712,_ctx) ) {
				case 1:
					{
					setState(4949);
					((ShowErrorsContext)_localctx).offset = decimalLiteral();
					setState(4950);
					match(COMMA);
					}
					break;
				}
				setState(4954);
				((ShowErrorsContext)_localctx).rowCount = decimalLiteral();
				}
				}
				break;
			case 11:
				_localctx = new ShowCountErrorsContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(4955);
				match(SHOW);
				setState(4956);
				match(COUNT);
				setState(4957);
				match(LR_BRACKET);
				setState(4958);
				match(STAR);
				setState(4959);
				match(RR_BRACKET);
				setState(4960);
				((ShowCountErrorsContext)_localctx).errorFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ERRORS || _la==WARNINGS) ) {
					((ShowCountErrorsContext)_localctx).errorFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 12:
				_localctx = new ShowSchemaFilterContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(4961);
				match(SHOW);
				setState(4962);
				showSchemaEntity();
				setState(4965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(4963);
					((ShowSchemaFilterContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowSchemaFilterContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4964);
					uid();
					}
				}

				setState(4968);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(4967);
					showFilter();
					}
				}

				}
				break;
			case 13:
				_localctx = new ShowRoutineContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(4970);
				match(SHOW);
				setState(4971);
				((ShowRoutineContext)_localctx).routine = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==PROCEDURE || _la==FUNCTION) ) {
					((ShowRoutineContext)_localctx).routine = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4972);
				match(CODE);
				setState(4973);
				fullId();
				}
				break;
			case 14:
				_localctx = new ShowGrantsContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(4974);
				match(SHOW);
				setState(4975);
				match(GRANTS);
				setState(4978);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(4976);
					match(FOR);
					setState(4977);
					userName();
					}
				}

				}
				break;
			case 15:
				_localctx = new ShowIndexesContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(4980);
				match(SHOW);
				setState(4981);
				((ShowIndexesContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEYS || _la==INDEXES) ) {
					((ShowIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4982);
				((ShowIndexesContext)_localctx).tableFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
					((ShowIndexesContext)_localctx).tableFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4983);
				tableName();
				setState(4986);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(4984);
					((ShowIndexesContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowIndexesContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4985);
					uid();
					}
				}

				setState(4990);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(4988);
					match(WHERE);
					setState(4989);
					expression(0);
					}
				}

				}
				break;
			case 16:
				_localctx = new ShowOpenTablesContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(4992);
				match(SHOW);
				setState(4993);
				match(OPEN);
				setState(4994);
				match(TABLES);
				setState(4997);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(4995);
					((ShowOpenTablesContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowOpenTablesContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4996);
					uid();
					}
				}

				setState(5000);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(4999);
					showFilter();
					}
				}

				}
				break;
			case 17:
				_localctx = new ShowProfileContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(5002);
				match(SHOW);
				setState(5003);
				match(PROFILE);
				setState(5004);
				showProfileType();
				setState(5009);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5005);
					match(COMMA);
					setState(5006);
					showProfileType();
					}
					}
					setState(5011);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5015);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(5012);
					match(FOR);
					setState(5013);
					match(QUERY);
					setState(5014);
					((ShowProfileContext)_localctx).queryCount = decimalLiteral();
					}
				}

				{
				setState(5017);
				match(LIMIT);
				setState(5021);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,722,_ctx) ) {
				case 1:
					{
					setState(5018);
					((ShowProfileContext)_localctx).offset = decimalLiteral();
					setState(5019);
					match(COMMA);
					}
					break;
				}
				setState(5023);
				((ShowProfileContext)_localctx).rowCount = decimalLiteral();
				}
				}
				break;
			case 18:
				_localctx = new ShowSlaveStatusContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(5025);
				match(SHOW);
				setState(5026);
				match(SLAVE);
				setState(5027);
				match(STATUS);
				setState(5031);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(5028);
					match(FOR);
					setState(5029);
					match(CHANNEL);
					setState(5030);
					match(STRING_LITERAL);
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VariableClauseContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL_ID() { return getToken(MySqlParser.GLOBAL_ID, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public List<TerminalNode> AT_SIGN() { return getTokens(MySqlParser.AT_SIGN); }
		public TerminalNode AT_SIGN(int i) {
			return getToken(MySqlParser.AT_SIGN, i);
		}
		public VariableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_variableClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterVariableClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitVariableClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitVariableClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VariableClauseContext variableClause() throws RecognitionException {
		VariableClauseContext _localctx = new VariableClauseContext(_ctx, getState());
		enterRule(_localctx, 442, RULE_variableClause);
		int _la;
		try {
			setState(5045);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(5035);
				match(LOCAL_ID);
				}
				break;
			case GLOBAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(5036);
				match(GLOBAL_ID);
				}
				break;
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case AT_SIGN:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(5042);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
				case 1:
					{
					setState(5039);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AT_SIGN) {
						{
						setState(5037);
						match(AT_SIGN);
						setState(5038);
						match(AT_SIGN);
						}
					}

					setState(5041);
					_la = _input.LA(1);
					if ( !(_la==GLOBAL || _la==LOCAL || _la==SESSION) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5044);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCommonEntityContext extends ParserRuleContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode COLLATION() { return getToken(MySqlParser.COLLATION, 0); }
		public TerminalNode DATABASES() { return getToken(MySqlParser.DATABASES, 0); }
		public TerminalNode SCHEMAS() { return getToken(MySqlParser.SCHEMAS, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public TerminalNode VARIABLES() { return getToken(MySqlParser.VARIABLES, 0); }
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public ShowCommonEntityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCommonEntity; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCommonEntity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCommonEntity(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowCommonEntity(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCommonEntityContext showCommonEntity() throws RecognitionException {
		ShowCommonEntityContext _localctx = new ShowCommonEntityContext(_ctx, getState());
		enterRule(_localctx, 444, RULE_showCommonEntity);
		int _la;
		try {
			setState(5060);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHARACTER:
				enterOuterAlt(_localctx, 1);
				{
				setState(5047);
				match(CHARACTER);
				setState(5048);
				match(SET);
				}
				break;
			case COLLATION:
				enterOuterAlt(_localctx, 2);
				{
				setState(5049);
				match(COLLATION);
				}
				break;
			case DATABASES:
				enterOuterAlt(_localctx, 3);
				{
				setState(5050);
				match(DATABASES);
				}
				break;
			case SCHEMAS:
				enterOuterAlt(_localctx, 4);
				{
				setState(5051);
				match(SCHEMAS);
				}
				break;
			case FUNCTION:
				enterOuterAlt(_localctx, 5);
				{
				setState(5052);
				match(FUNCTION);
				setState(5053);
				match(STATUS);
				}
				break;
			case PROCEDURE:
				enterOuterAlt(_localctx, 6);
				{
				setState(5054);
				match(PROCEDURE);
				setState(5055);
				match(STATUS);
				}
				break;
			case GLOBAL:
			case SESSION:
			case STATUS:
			case VARIABLES:
				enterOuterAlt(_localctx, 7);
				{
				setState(5057);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==GLOBAL || _la==SESSION) {
					{
					setState(5056);
					_la = _input.LA(1);
					if ( !(_la==GLOBAL || _la==SESSION) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5059);
				_la = _input.LA(1);
				if ( !(_la==STATUS || _la==VARIABLES) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowFilterContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ShowFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showFilter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowFilter(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowFilter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowFilterContext showFilter() throws RecognitionException {
		ShowFilterContext _localctx = new ShowFilterContext(_ctx, getState());
		enterRule(_localctx, 446, RULE_showFilter);
		try {
			setState(5066);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LIKE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5062);
				match(LIKE);
				setState(5063);
				match(STRING_LITERAL);
				}
				break;
			case WHERE:
				enterOuterAlt(_localctx, 2);
				{
				setState(5064);
				match(WHERE);
				setState(5065);
				expression(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowGlobalInfoClauseContext extends ParserRuleContext {
		public TerminalNode ENGINES() { return getToken(MySqlParser.ENGINES, 0); }
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode PLUGINS() { return getToken(MySqlParser.PLUGINS, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySqlParser.PROCESSLIST, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode PROFILES() { return getToken(MySqlParser.PROFILES, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode AUTHORS() { return getToken(MySqlParser.AUTHORS, 0); }
		public TerminalNode CONTRIBUTORS() { return getToken(MySqlParser.CONTRIBUTORS, 0); }
		public ShowGlobalInfoClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showGlobalInfoClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGlobalInfoClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGlobalInfoClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowGlobalInfoClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowGlobalInfoClauseContext showGlobalInfoClause() throws RecognitionException {
		ShowGlobalInfoClauseContext _localctx = new ShowGlobalInfoClauseContext(_ctx, getState());
		enterRule(_localctx, 448, RULE_showGlobalInfoClause);
		int _la;
		try {
			setState(5085);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENGINES:
			case STORAGE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5069);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORAGE) {
					{
					setState(5068);
					match(STORAGE);
					}
				}

				setState(5071);
				match(ENGINES);
				}
				break;
			case MASTER:
				enterOuterAlt(_localctx, 2);
				{
				setState(5072);
				match(MASTER);
				setState(5073);
				match(STATUS);
				}
				break;
			case PLUGINS:
				enterOuterAlt(_localctx, 3);
				{
				setState(5074);
				match(PLUGINS);
				}
				break;
			case PRIVILEGES:
				enterOuterAlt(_localctx, 4);
				{
				setState(5075);
				match(PRIVILEGES);
				}
				break;
			case FULL:
			case PROCESSLIST:
				enterOuterAlt(_localctx, 5);
				{
				setState(5077);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(5076);
					match(FULL);
					}
				}

				setState(5079);
				match(PROCESSLIST);
				}
				break;
			case PROFILES:
				enterOuterAlt(_localctx, 6);
				{
				setState(5080);
				match(PROFILES);
				}
				break;
			case SLAVE:
				enterOuterAlt(_localctx, 7);
				{
				setState(5081);
				match(SLAVE);
				setState(5082);
				match(HOSTS);
				}
				break;
			case AUTHORS:
				enterOuterAlt(_localctx, 8);
				{
				setState(5083);
				match(AUTHORS);
				}
				break;
			case CONTRIBUTORS:
				enterOuterAlt(_localctx, 9);
				{
				setState(5084);
				match(CONTRIBUTORS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowSchemaEntityContext extends ParserRuleContext {
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySqlParser.TRIGGERS, 0); }
		public ShowSchemaEntityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showSchemaEntity; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSchemaEntity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSchemaEntity(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowSchemaEntity(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowSchemaEntityContext showSchemaEntity() throws RecognitionException {
		ShowSchemaEntityContext _localctx = new ShowSchemaEntityContext(_ctx, getState());
		enterRule(_localctx, 450, RULE_showSchemaEntity);
		int _la;
		try {
			setState(5095);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EVENTS:
				enterOuterAlt(_localctx, 1);
				{
				setState(5087);
				match(EVENTS);
				}
				break;
			case TABLE:
				enterOuterAlt(_localctx, 2);
				{
				setState(5088);
				match(TABLE);
				setState(5089);
				match(STATUS);
				}
				break;
			case FULL:
			case TABLES:
				enterOuterAlt(_localctx, 3);
				{
				setState(5091);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(5090);
					match(FULL);
					}
				}

				setState(5093);
				match(TABLES);
				}
				break;
			case TRIGGERS:
				enterOuterAlt(_localctx, 4);
				{
				setState(5094);
				match(TRIGGERS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProfileTypeContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode BLOCK() { return getToken(MySqlParser.BLOCK, 0); }
		public TerminalNode IO() { return getToken(MySqlParser.IO, 0); }
		public TerminalNode CONTEXT() { return getToken(MySqlParser.CONTEXT, 0); }
		public TerminalNode SWITCHES() { return getToken(MySqlParser.SWITCHES, 0); }
		public TerminalNode CPU() { return getToken(MySqlParser.CPU, 0); }
		public TerminalNode IPC() { return getToken(MySqlParser.IPC, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode PAGE() { return getToken(MySqlParser.PAGE, 0); }
		public TerminalNode FAULTS() { return getToken(MySqlParser.FAULTS, 0); }
		public TerminalNode SOURCE() { return getToken(MySqlParser.SOURCE, 0); }
		public TerminalNode SWAPS() { return getToken(MySqlParser.SWAPS, 0); }
		public ShowProfileTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProfileType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowProfileType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowProfileType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShowProfileType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProfileTypeContext showProfileType() throws RecognitionException {
		ShowProfileTypeContext _localctx = new ShowProfileTypeContext(_ctx, getState());
		enterRule(_localctx, 452, RULE_showProfileType);
		try {
			setState(5109);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(5097);
				match(ALL);
				}
				break;
			case BLOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(5098);
				match(BLOCK);
				setState(5099);
				match(IO);
				}
				break;
			case CONTEXT:
				enterOuterAlt(_localctx, 3);
				{
				setState(5100);
				match(CONTEXT);
				setState(5101);
				match(SWITCHES);
				}
				break;
			case CPU:
				enterOuterAlt(_localctx, 4);
				{
				setState(5102);
				match(CPU);
				}
				break;
			case IPC:
				enterOuterAlt(_localctx, 5);
				{
				setState(5103);
				match(IPC);
				}
				break;
			case MEMORY:
				enterOuterAlt(_localctx, 6);
				{
				setState(5104);
				match(MEMORY);
				}
				break;
			case PAGE:
				enterOuterAlt(_localctx, 7);
				{
				setState(5105);
				match(PAGE);
				setState(5106);
				match(FAULTS);
				}
				break;
			case SOURCE:
				enterOuterAlt(_localctx, 8);
				{
				setState(5107);
				match(SOURCE);
				}
				break;
			case SWAPS:
				enterOuterAlt(_localctx, 9);
				{
				setState(5108);
				match(SWAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BinlogStatementContext extends ParserRuleContext {
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public BinlogStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_binlogStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinlogStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinlogStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBinlogStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BinlogStatementContext binlogStatement() throws RecognitionException {
		BinlogStatementContext _localctx = new BinlogStatementContext(_ctx, getState());
		enterRule(_localctx, 454, RULE_binlogStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5111);
			match(BINLOG);
			setState(5112);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CacheIndexStatementContext extends ParserRuleContext {
		public UidContext schema;
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public List<TableIndexesContext> tableIndexes() {
			return getRuleContexts(TableIndexesContext.class);
		}
		public TableIndexesContext tableIndexes(int i) {
			return getRuleContext(TableIndexesContext.class,i);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public CacheIndexStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cacheIndexStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCacheIndexStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCacheIndexStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCacheIndexStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CacheIndexStatementContext cacheIndexStatement() throws RecognitionException {
		CacheIndexStatementContext _localctx = new CacheIndexStatementContext(_ctx, getState());
		enterRule(_localctx, 456, RULE_cacheIndexStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5114);
			match(CACHE);
			setState(5115);
			match(INDEX);
			setState(5116);
			tableIndexes();
			setState(5121);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5117);
				match(COMMA);
				setState(5118);
				tableIndexes();
				}
				}
				setState(5123);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5131);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(5124);
				match(PARTITION);
				setState(5125);
				match(LR_BRACKET);
				setState(5128);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(5126);
					uidList();
					}
					break;
				case ALL:
					{
					setState(5127);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5130);
				match(RR_BRACKET);
				}
			}

			setState(5133);
			match(IN);
			setState(5134);
			((CacheIndexStatementContext)_localctx).schema = uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushStatementContext extends ParserRuleContext {
		public Token flushFormat;
		public TerminalNode FLUSH() { return getToken(MySqlParser.FLUSH, 0); }
		public List<FlushOptionContext> flushOption() {
			return getRuleContexts(FlushOptionContext.class);
		}
		public FlushOptionContext flushOption(int i) {
			return getRuleContext(FlushOptionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public FlushStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFlushStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFlushStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFlushStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlushStatementContext flushStatement() throws RecognitionException {
		FlushStatementContext _localctx = new FlushStatementContext(_ctx, getState());
		enterRule(_localctx, 458, RULE_flushStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5136);
			match(FLUSH);
			setState(5138);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(5137);
				((FlushStatementContext)_localctx).flushFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((FlushStatementContext)_localctx).flushFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5140);
			flushOption();
			setState(5145);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5141);
				match(COMMA);
				setState(5142);
				flushOption();
				}
				}
				setState(5147);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KillStatementContext extends ParserRuleContext {
		public Token connectionFormat;
		public TerminalNode KILL() { return getToken(MySqlParser.KILL, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public KillStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_killStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterKillStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitKillStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitKillStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KillStatementContext killStatement() throws RecognitionException {
		KillStatementContext _localctx = new KillStatementContext(_ctx, getState());
		enterRule(_localctx, 460, RULE_killStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5148);
			match(KILL);
			setState(5150);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONNECTION || _la==QUERY) {
				{
				setState(5149);
				((KillStatementContext)_localctx).connectionFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CONNECTION || _la==QUERY) ) {
					((KillStatementContext)_localctx).connectionFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5153); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(5152);
				decimalLiteral();
				}
				}
				setState(5155); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( ((((_la - 1027)) & ~0x3f) == 0 && ((1L << (_la - 1027)) & ((1L << (ZERO_DECIMAL - 1027)) | (1L << (ONE_DECIMAL - 1027)) | (1L << (TWO_DECIMAL - 1027)) | (1L << (DECIMAL_LITERAL - 1027)))) != 0) );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadIndexIntoCacheContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public List<LoadedTableIndexesContext> loadedTableIndexes() {
			return getRuleContexts(LoadedTableIndexesContext.class);
		}
		public LoadedTableIndexesContext loadedTableIndexes(int i) {
			return getRuleContext(LoadedTableIndexesContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadIndexIntoCacheContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadIndexIntoCache; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadIndexIntoCache(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadIndexIntoCache(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLoadIndexIntoCache(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadIndexIntoCacheContext loadIndexIntoCache() throws RecognitionException {
		LoadIndexIntoCacheContext _localctx = new LoadIndexIntoCacheContext(_ctx, getState());
		enterRule(_localctx, 462, RULE_loadIndexIntoCache);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5157);
			match(LOAD);
			setState(5158);
			match(INDEX);
			setState(5159);
			match(INTO);
			setState(5160);
			match(CACHE);
			setState(5161);
			loadedTableIndexes();
			setState(5166);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5162);
				match(COMMA);
				setState(5163);
				loadedTableIndexes();
				}
				}
				setState(5168);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetStatementContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public ResetStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitResetStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetStatementContext resetStatement() throws RecognitionException {
		ResetStatementContext _localctx = new ResetStatementContext(_ctx, getState());
		enterRule(_localctx, 464, RULE_resetStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5169);
			match(RESET);
			setState(5170);
			match(QUERY);
			setState(5171);
			match(CACHE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShutdownStatementContext extends ParserRuleContext {
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public ShutdownStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_shutdownStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShutdownStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShutdownStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitShutdownStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShutdownStatementContext shutdownStatement() throws RecognitionException {
		ShutdownStatementContext _localctx = new ShutdownStatementContext(_ctx, getState());
		enterRule(_localctx, 466, RULE_shutdownStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5173);
			match(SHUTDOWN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableIndexesContext extends ParserRuleContext {
		public Token indexFormat;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TableIndexesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableIndexes; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableIndexes(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableIndexes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableIndexesContext tableIndexes() throws RecognitionException {
		TableIndexesContext _localctx = new TableIndexesContext(_ctx, getState());
		enterRule(_localctx, 468, RULE_tableIndexes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5175);
			tableName();
			setState(5183);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INDEX || _la==KEY || _la==LR_BRACKET) {
				{
				setState(5177);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(5176);
					((TableIndexesContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((TableIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5179);
				match(LR_BRACKET);
				setState(5180);
				uidList();
				setState(5181);
				match(RR_BRACKET);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushOptionContext extends ParserRuleContext {
		public FlushOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushOption; }
	 
		public FlushOptionContext() { }
		public void copyFrom(FlushOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableFlushOptionContext extends FlushOptionContext {
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public FlushTableOptionContext flushTableOption() {
			return getRuleContext(FlushTableOptionContext.class,0);
		}
		public TableFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableFlushOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableFlushOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ChannelFlushOptionContext extends FlushOptionContext {
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChannelFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChannelFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChannelFlushOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitChannelFlushOption(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SimpleFlushOptionContext extends FlushOptionContext {
		public TerminalNode DES_KEY_FILE() { return getToken(MySqlParser.DES_KEY_FILE, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode OPTIMIZER_COSTS() { return getToken(MySqlParser.OPTIMIZER_COSTS, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySqlParser.USER_RESOURCES, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode ERROR() { return getToken(MySqlParser.ERROR, 0); }
		public TerminalNode GENERAL() { return getToken(MySqlParser.GENERAL, 0); }
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode SLOW() { return getToken(MySqlParser.SLOW, 0); }
		public SimpleFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleFlushOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleFlushOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlushOptionContext flushOption() throws RecognitionException {
		FlushOptionContext _localctx = new FlushOptionContext(_ctx, getState());
		enterRule(_localctx, 470, RULE_flushOption);
		int _la;
		try {
			setState(5215);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,752,_ctx) ) {
			case 1:
				_localctx = new SimpleFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5203);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DES_KEY_FILE:
					{
					setState(5185);
					match(DES_KEY_FILE);
					}
					break;
				case HOSTS:
					{
					setState(5186);
					match(HOSTS);
					}
					break;
				case BINARY:
				case ENGINE:
				case ERROR:
				case GENERAL:
				case LOGS:
				case RELAY:
				case SLOW:
					{
					setState(5188);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==BINARY || ((((_la - 342)) & ~0x3f) == 0 && ((1L << (_la - 342)) & ((1L << (ENGINE - 342)) | (1L << (ERROR - 342)) | (1L << (GENERAL - 342)))) != 0) || _la==RELAY || _la==SLOW) {
						{
						setState(5187);
						_la = _input.LA(1);
						if ( !(_la==BINARY || ((((_la - 342)) & ~0x3f) == 0 && ((1L << (_la - 342)) & ((1L << (ENGINE - 342)) | (1L << (ERROR - 342)) | (1L << (GENERAL - 342)))) != 0) || _la==RELAY || _la==SLOW) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(5190);
					match(LOGS);
					}
					break;
				case OPTIMIZER_COSTS:
					{
					setState(5191);
					match(OPTIMIZER_COSTS);
					}
					break;
				case PRIVILEGES:
					{
					setState(5192);
					match(PRIVILEGES);
					}
					break;
				case QUERY:
					{
					setState(5193);
					match(QUERY);
					setState(5194);
					match(CACHE);
					}
					break;
				case STATUS:
					{
					setState(5195);
					match(STATUS);
					}
					break;
				case USER_RESOURCES:
					{
					setState(5196);
					match(USER_RESOURCES);
					}
					break;
				case TABLES:
					{
					setState(5197);
					match(TABLES);
					setState(5201);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==WITH) {
						{
						setState(5198);
						match(WITH);
						setState(5199);
						match(READ);
						setState(5200);
						match(LOCK);
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				_localctx = new ChannelFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5205);
				match(RELAY);
				setState(5206);
				match(LOGS);
				setState(5208);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(5207);
					channelOption();
					}
				}

				}
				break;
			case 3:
				_localctx = new TableFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5210);
				match(TABLES);
				setState(5211);
				tables();
				setState(5213);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR || _la==WITH) {
					{
					setState(5212);
					flushTableOption();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushTableOptionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode EXPORT() { return getToken(MySqlParser.EXPORT, 0); }
		public FlushTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushTableOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFlushTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFlushTableOption(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFlushTableOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlushTableOptionContext flushTableOption() throws RecognitionException {
		FlushTableOptionContext _localctx = new FlushTableOptionContext(_ctx, getState());
		enterRule(_localctx, 472, RULE_flushTableOption);
		try {
			setState(5222);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				enterOuterAlt(_localctx, 1);
				{
				setState(5217);
				match(WITH);
				setState(5218);
				match(READ);
				setState(5219);
				match(LOCK);
				}
				break;
			case FOR:
				enterOuterAlt(_localctx, 2);
				{
				setState(5220);
				match(FOR);
				setState(5221);
				match(EXPORT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadedTableIndexesContext extends ParserRuleContext {
		public UidListContext partitionList;
		public Token indexFormat;
		public UidListContext indexList;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode LEAVES() { return getToken(MySqlParser.LEAVES, 0); }
		public List<UidListContext> uidList() {
			return getRuleContexts(UidListContext.class);
		}
		public UidListContext uidList(int i) {
			return getRuleContext(UidListContext.class,i);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public LoadedTableIndexesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadedTableIndexes; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadedTableIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadedTableIndexes(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLoadedTableIndexes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadedTableIndexesContext loadedTableIndexes() throws RecognitionException {
		LoadedTableIndexesContext _localctx = new LoadedTableIndexesContext(_ctx, getState());
		enterRule(_localctx, 474, RULE_loadedTableIndexes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5224);
			tableName();
			setState(5232);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(5225);
				match(PARTITION);
				setState(5226);
				match(LR_BRACKET);
				setState(5229);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
					{
					setState(5227);
					((LoadedTableIndexesContext)_localctx).partitionList = uidList();
					}
					break;
				case ALL:
					{
					setState(5228);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5231);
				match(RR_BRACKET);
				}
			}

			setState(5241);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,757,_ctx) ) {
			case 1:
				{
				setState(5235);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(5234);
					((LoadedTableIndexesContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((LoadedTableIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5237);
				match(LR_BRACKET);
				setState(5238);
				((LoadedTableIndexesContext)_localctx).indexList = uidList();
				setState(5239);
				match(RR_BRACKET);
				}
				break;
			}
			setState(5245);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(5243);
				match(IGNORE);
				setState(5244);
				match(LEAVES);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleDescribeStatementContext extends ParserRuleContext {
		public Token command;
		public UidContext column;
		public Token pattern;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode EXPLAIN() { return getToken(MySqlParser.EXPLAIN, 0); }
		public TerminalNode DESCRIBE() { return getToken(MySqlParser.DESCRIBE, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public SimpleDescribeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleDescribeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleDescribeStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleDescribeStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleDescribeStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleDescribeStatementContext simpleDescribeStatement() throws RecognitionException {
		SimpleDescribeStatementContext _localctx = new SimpleDescribeStatementContext(_ctx, getState());
		enterRule(_localctx, 476, RULE_simpleDescribeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5247);
			((SimpleDescribeStatementContext)_localctx).command = _input.LT(1);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DESC) | (1L << DESCRIBE) | (1L << EXPLAIN))) != 0)) ) {
				((SimpleDescribeStatementContext)_localctx).command = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5248);
			tableName();
			setState(5251);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,759,_ctx) ) {
			case 1:
				{
				setState(5249);
				((SimpleDescribeStatementContext)_localctx).column = uid();
				}
				break;
			case 2:
				{
				setState(5250);
				((SimpleDescribeStatementContext)_localctx).pattern = match(STRING_LITERAL);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullDescribeStatementContext extends ParserRuleContext {
		public Token command;
		public Token formatType;
		public Token formatValue;
		public DescribeObjectClauseContext describeObjectClause() {
			return getRuleContext(DescribeObjectClauseContext.class,0);
		}
		public TerminalNode EXPLAIN() { return getToken(MySqlParser.EXPLAIN, 0); }
		public TerminalNode DESCRIBE() { return getToken(MySqlParser.DESCRIBE, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode FORMAT() { return getToken(MySqlParser.FORMAT, 0); }
		public TerminalNode TRADITIONAL() { return getToken(MySqlParser.TRADITIONAL, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public FullDescribeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullDescribeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullDescribeStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullDescribeStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFullDescribeStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FullDescribeStatementContext fullDescribeStatement() throws RecognitionException {
		FullDescribeStatementContext _localctx = new FullDescribeStatementContext(_ctx, getState());
		enterRule(_localctx, 478, RULE_fullDescribeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5253);
			((FullDescribeStatementContext)_localctx).command = _input.LT(1);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DESC) | (1L << DESCRIBE) | (1L << EXPLAIN))) != 0)) ) {
				((FullDescribeStatementContext)_localctx).command = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5257);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED || _la==PARTITIONS || _la==FORMAT) {
				{
				setState(5254);
				((FullDescribeStatementContext)_localctx).formatType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==EXTENDED || _la==PARTITIONS || _la==FORMAT) ) {
					((FullDescribeStatementContext)_localctx).formatType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5255);
				match(EQUAL_SYMBOL);
				setState(5256);
				((FullDescribeStatementContext)_localctx).formatValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JSON || _la==TRADITIONAL) ) {
					((FullDescribeStatementContext)_localctx).formatValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5259);
			describeObjectClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HelpStatementContext extends ParserRuleContext {
		public TerminalNode HELP() { return getToken(MySqlParser.HELP, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public HelpStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_helpStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHelpStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHelpStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHelpStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HelpStatementContext helpStatement() throws RecognitionException {
		HelpStatementContext _localctx = new HelpStatementContext(_ctx, getState());
		enterRule(_localctx, 480, RULE_helpStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5261);
			match(HELP);
			setState(5262);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UseStatementContext extends ParserRuleContext {
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public UseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_useStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUseStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UseStatementContext useStatement() throws RecognitionException {
		UseStatementContext _localctx = new UseStatementContext(_ctx, getState());
		enterRule(_localctx, 482, RULE_useStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5264);
			match(USE);
			setState(5265);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalStatementContext extends ParserRuleContext {
		public TerminalNode SIGNAL() { return getToken(MySqlParser.SIGNAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<SignalConditionInformationContext> signalConditionInformation() {
			return getRuleContexts(SignalConditionInformationContext.class);
		}
		public SignalConditionInformationContext signalConditionInformation(int i) {
			return getRuleContext(SignalConditionInformationContext.class,i);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public SignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSignalStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSignalStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSignalStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignalStatementContext signalStatement() throws RecognitionException {
		SignalStatementContext _localctx = new SignalStatementContext(_ctx, getState());
		enterRule(_localctx, 484, RULE_signalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5267);
			match(SIGNAL);
			setState(5275);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQLSTATE:
				{
				{
				setState(5268);
				match(SQLSTATE);
				setState(5270);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(5269);
					match(VALUE);
					}
				}

				setState(5272);
				stringLiteral();
				}
				}
				break;
			case ID:
				{
				setState(5273);
				match(ID);
				}
				break;
			case REVERSE_QUOTE_ID:
				{
				setState(5274);
				match(REVERSE_QUOTE_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5286);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,764,_ctx) ) {
			case 1:
				{
				setState(5277);
				match(SET);
				setState(5278);
				signalConditionInformation();
				setState(5283);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5279);
					match(COMMA);
					setState(5280);
					signalConditionInformation();
					}
					}
					setState(5285);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResignalStatementContext extends ParserRuleContext {
		public TerminalNode RESIGNAL() { return getToken(MySqlParser.RESIGNAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List<SignalConditionInformationContext> signalConditionInformation() {
			return getRuleContexts(SignalConditionInformationContext.class);
		}
		public SignalConditionInformationContext signalConditionInformation(int i) {
			return getRuleContext(SignalConditionInformationContext.class,i);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public ResignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resignalStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResignalStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResignalStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitResignalStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResignalStatementContext resignalStatement() throws RecognitionException {
		ResignalStatementContext _localctx = new ResignalStatementContext(_ctx, getState());
		enterRule(_localctx, 486, RULE_resignalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5288);
			match(RESIGNAL);
			setState(5296);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQLSTATE:
				{
				{
				setState(5289);
				match(SQLSTATE);
				setState(5291);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(5290);
					match(VALUE);
					}
				}

				setState(5293);
				stringLiteral();
				}
				}
				break;
			case ID:
				{
				setState(5294);
				match(ID);
				}
				break;
			case REVERSE_QUOTE_ID:
				{
				setState(5295);
				match(REVERSE_QUOTE_ID);
				}
				break;
			case EOF:
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case UNLOCK:
			case UPDATE:
			case USE:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CHECKSUM:
			case COMMIT:
			case DEALLOCATE:
			case DO:
			case FLUSH:
			case HANDLER:
			case HELP:
			case INSTALL:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case START:
			case STOP:
			case TRUNCATE:
			case UNINSTALL:
			case XA:
			case EXECUTE:
			case SHUTDOWN:
			case MINUSMINUS:
			case LR_BRACKET:
			case SEMI:
				break;
			default:
				break;
			}
			setState(5307);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,768,_ctx) ) {
			case 1:
				{
				setState(5298);
				match(SET);
				setState(5299);
				signalConditionInformation();
				setState(5304);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5300);
					match(COMMA);
					setState(5301);
					signalConditionInformation();
					}
					}
					setState(5306);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalConditionInformationContext extends ParserRuleContext {
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode DECIMAL_LITERAL() { return getToken(MySqlParser.DECIMAL_LITERAL, 0); }
		public SignalConditionInformationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalConditionInformation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSignalConditionInformation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSignalConditionInformation(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSignalConditionInformation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignalConditionInformationContext signalConditionInformation() throws RecognitionException {
		SignalConditionInformationContext _localctx = new SignalConditionInformationContext(_ctx, getState());
		enterRule(_localctx, 488, RULE_signalConditionInformation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5309);
			_la = _input.LA(1);
			if ( !(((((_la - 297)) & ~0x3f) == 0 && ((1L << (_la - 297)) & ((1L << (CLASS_ORIGIN - 297)) | (1L << (COLUMN_NAME - 297)) | (1L << (CONSTRAINT_CATALOG - 297)) | (1L << (CONSTRAINT_SCHEMA - 297)) | (1L << (CONSTRAINT_NAME - 297)) | (1L << (CURSOR_NAME - 297)))) != 0) || _la==MESSAGE_TEXT || _la==MYSQL_ERRNO || _la==SUBCLASS_ORIGIN || _la==TABLE_NAME || _la==CATALOG_NAME || _la==SCHEMA_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5310);
			match(EQUAL_SYMBOL);
			setState(5313);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case START_NATIONAL_STRING_LITERAL:
			case STRING_LITERAL:
			case STRING_CHARSET_NAME:
				{
				setState(5311);
				stringLiteral();
				}
				break;
			case DECIMAL_LITERAL:
				{
				setState(5312);
				match(DECIMAL_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DiagnosticsStatementContext extends ParserRuleContext {
		public TerminalNode GET() { return getToken(MySqlParser.GET, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySqlParser.DIAGNOSTICS, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode STACKED() { return getToken(MySqlParser.STACKED, 0); }
		public List<VariableClauseContext> variableClause() {
			return getRuleContexts(VariableClauseContext.class);
		}
		public VariableClauseContext variableClause(int i) {
			return getRuleContext(VariableClauseContext.class,i);
		}
		public List<TerminalNode> EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode CONDITION() { return getToken(MySqlParser.CONDITION, 0); }
		public List<DiagnosticsConditionInformationNameContext> diagnosticsConditionInformationName() {
			return getRuleContexts(DiagnosticsConditionInformationNameContext.class);
		}
		public DiagnosticsConditionInformationNameContext diagnosticsConditionInformationName(int i) {
			return getRuleContext(DiagnosticsConditionInformationNameContext.class,i);
		}
		public List<TerminalNode> NUMBER() { return getTokens(MySqlParser.NUMBER); }
		public TerminalNode NUMBER(int i) {
			return getToken(MySqlParser.NUMBER, i);
		}
		public List<TerminalNode> ROW_COUNT() { return getTokens(MySqlParser.ROW_COUNT); }
		public TerminalNode ROW_COUNT(int i) {
			return getToken(MySqlParser.ROW_COUNT, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DiagnosticsStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_diagnosticsStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDiagnosticsStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDiagnosticsStatement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDiagnosticsStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DiagnosticsStatementContext diagnosticsStatement() throws RecognitionException {
		DiagnosticsStatementContext _localctx = new DiagnosticsStatementContext(_ctx, getState());
		enterRule(_localctx, 490, RULE_diagnosticsStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5315);
			match(GET);
			setState(5317);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CURRENT || _la==STACKED) {
				{
				setState(5316);
				_la = _input.LA(1);
				if ( !(_la==CURRENT || _la==STACKED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5319);
			match(DIAGNOSTICS);
			setState(5351);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT:
			case DATABASE:
			case DIAGNOSTICS:
			case LEFT:
			case NUMBER:
			case RIGHT:
			case STACKED:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case TEXT:
			case ENUM:
			case SERIAL:
			case COUNT:
			case POSITION:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case AT_SIGN:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
			case REVERSE_QUOTE_ID:
			case LOCAL_ID:
			case GLOBAL_ID:
				{
				{
				setState(5320);
				variableClause();
				setState(5321);
				match(EQUAL_SYMBOL);
				setState(5322);
				_la = _input.LA(1);
				if ( !(_la==NUMBER || _la==ROW_COUNT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5330);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5323);
					match(COMMA);
					setState(5324);
					variableClause();
					setState(5325);
					match(EQUAL_SYMBOL);
					setState(5326);
					_la = _input.LA(1);
					if ( !(_la==NUMBER || _la==ROW_COUNT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					setState(5332);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			case CONDITION:
				{
				{
				setState(5333);
				match(CONDITION);
				setState(5336);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
					{
					setState(5334);
					decimalLiteral();
					}
					break;
				case CURRENT:
				case DATABASE:
				case DIAGNOSTICS:
				case LEFT:
				case NUMBER:
				case RIGHT:
				case STACKED:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case TEXT:
				case ENUM:
				case SERIAL:
				case COUNT:
				case POSITION:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case AT_SIGN:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case REVERSE_QUOTE_ID:
				case LOCAL_ID:
				case GLOBAL_ID:
					{
					setState(5335);
					variableClause();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5338);
				variableClause();
				setState(5339);
				match(EQUAL_SYMBOL);
				setState(5340);
				diagnosticsConditionInformationName();
				setState(5348);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5341);
					match(COMMA);
					setState(5342);
					variableClause();
					setState(5343);
					match(EQUAL_SYMBOL);
					setState(5344);
					diagnosticsConditionInformationName();
					}
					}
					setState(5350);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DiagnosticsConditionInformationNameContext extends ParserRuleContext {
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySqlParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public DiagnosticsConditionInformationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_diagnosticsConditionInformationName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDiagnosticsConditionInformationName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDiagnosticsConditionInformationName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDiagnosticsConditionInformationName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DiagnosticsConditionInformationNameContext diagnosticsConditionInformationName() throws RecognitionException {
		DiagnosticsConditionInformationNameContext _localctx = new DiagnosticsConditionInformationNameContext(_ctx, getState());
		enterRule(_localctx, 492, RULE_diagnosticsConditionInformationName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5353);
			_la = _input.LA(1);
			if ( !(((((_la - 297)) & ~0x3f) == 0 && ((1L << (_la - 297)) & ((1L << (CLASS_ORIGIN - 297)) | (1L << (COLUMN_NAME - 297)) | (1L << (CONSTRAINT_CATALOG - 297)) | (1L << (CONSTRAINT_SCHEMA - 297)) | (1L << (CONSTRAINT_NAME - 297)) | (1L << (CURSOR_NAME - 297)))) != 0) || _la==MESSAGE_TEXT || _la==MYSQL_ERRNO || ((((_la - 507)) & ~0x3f) == 0 && ((1L << (_la - 507)) & ((1L << (RETURNED_SQLSTATE - 507)) | (1L << (SUBCLASS_ORIGIN - 507)) | (1L << (TABLE_NAME - 507)))) != 0) || _la==CATALOG_NAME || _la==SCHEMA_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DescribeObjectClauseContext extends ParserRuleContext {
		public DescribeObjectClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_describeObjectClause; }
	 
		public DescribeObjectClauseContext() { }
		public void copyFrom(DescribeObjectClauseContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DescribeStatementsContext extends DescribeObjectClauseContext {
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public DeleteStatementContext deleteStatement() {
			return getRuleContext(DeleteStatementContext.class,0);
		}
		public InsertStatementContext insertStatement() {
			return getRuleContext(InsertStatementContext.class,0);
		}
		public ReplaceStatementContext replaceStatement() {
			return getRuleContext(ReplaceStatementContext.class,0);
		}
		public UpdateStatementContext updateStatement() {
			return getRuleContext(UpdateStatementContext.class,0);
		}
		public DescribeStatementsContext(DescribeObjectClauseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDescribeStatements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDescribeStatements(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDescribeStatements(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DescribeConnectionContext extends DescribeObjectClauseContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DescribeConnectionContext(DescribeObjectClauseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDescribeConnection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDescribeConnection(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDescribeConnection(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DescribeObjectClauseContext describeObjectClause() throws RecognitionException {
		DescribeObjectClauseContext _localctx = new DescribeObjectClauseContext(_ctx, getState());
		enterRule(_localctx, 494, RULE_describeObjectClause);
		try {
			setState(5365);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DELETE:
			case INSERT:
			case REPLACE:
			case SELECT:
			case UPDATE:
			case LR_BRACKET:
				_localctx = new DescribeStatementsContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5360);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SELECT:
				case LR_BRACKET:
					{
					setState(5355);
					selectStatement();
					}
					break;
				case DELETE:
					{
					setState(5356);
					deleteStatement();
					}
					break;
				case INSERT:
					{
					setState(5357);
					insertStatement();
					}
					break;
				case REPLACE:
					{
					setState(5358);
					replaceStatement();
					}
					break;
				case UPDATE:
					{
					setState(5359);
					updateStatement();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case FOR:
				_localctx = new DescribeConnectionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5362);
				match(FOR);
				setState(5363);
				match(CONNECTION);
				setState(5364);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullIdContext extends ParserRuleContext {
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode DOT_ID() { return getToken(MySqlParser.DOT_ID, 0); }
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public FullIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullId(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFullId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FullIdContext fullId() throws RecognitionException {
		FullIdContext _localctx = new FullIdContext(_ctx, getState());
		enterRule(_localctx, 496, RULE_fullId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5367);
			uid();
			setState(5371);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,777,_ctx) ) {
			case 1:
				{
				setState(5368);
				match(DOT_ID);
				}
				break;
			case 2:
				{
				setState(5369);
				match(DOT);
				setState(5370);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNameContext extends ParserRuleContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTableName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNameContext tableName() throws RecognitionException {
		TableNameContext _localctx = new TableNameContext(_ctx, getState());
		enterRule(_localctx, 498, RULE_tableName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5373);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullColumnNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List<DottedIdContext> dottedId() {
			return getRuleContexts(DottedIdContext.class);
		}
		public DottedIdContext dottedId(int i) {
			return getRuleContext(DottedIdContext.class,i);
		}
		public FullColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullColumnName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFullColumnName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FullColumnNameContext fullColumnName() throws RecognitionException {
		FullColumnNameContext _localctx = new FullColumnNameContext(_ctx, getState());
		enterRule(_localctx, 500, RULE_fullColumnName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5375);
			uid();
			setState(5380);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) {
			case 1:
				{
				setState(5376);
				dottedId();
				setState(5378);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,778,_ctx) ) {
				case 1:
					{
					setState(5377);
					dottedId();
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnNameContext extends ParserRuleContext {
		public Token sortType;
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public IndexColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexColumnName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexColumnName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexColumnName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexColumnNameContext indexColumnName() throws RecognitionException {
		IndexColumnNameContext _localctx = new IndexColumnNameContext(_ctx, getState());
		enterRule(_localctx, 502, RULE_indexColumnName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5384);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,780,_ctx) ) {
			case 1:
				{
				setState(5382);
				uid();
				}
				break;
			case 2:
				{
				setState(5383);
				match(STRING_LITERAL);
				}
				break;
			}
			setState(5390);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(5386);
				match(LR_BRACKET);
				setState(5387);
				decimalLiteral();
				setState(5388);
				match(RR_BRACKET);
				}
			}

			setState(5393);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(5392);
				((IndexColumnNameContext)_localctx).sortType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((IndexColumnNameContext)_localctx).sortType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserNameContext extends ParserRuleContext {
		public TerminalNode STRING_USER_NAME() { return getToken(MySqlParser.STRING_USER_NAME, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public UserNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserNameContext userName() throws RecognitionException {
		UserNameContext _localctx = new UserNameContext(_ctx, getState());
		enterRule(_localctx, 504, RULE_userName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5395);
			_la = _input.LA(1);
			if ( !(((((_la - 1037)) & ~0x3f) == 0 && ((1L << (_la - 1037)) & ((1L << (STRING_LITERAL - 1037)) | (1L << (ID - 1037)) | (1L << (STRING_USER_NAME - 1037)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MysqlVariableContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL_ID() { return getToken(MySqlParser.GLOBAL_ID, 0); }
		public MysqlVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mysqlVariable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMysqlVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMysqlVariable(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMysqlVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MysqlVariableContext mysqlVariable() throws RecognitionException {
		MysqlVariableContext _localctx = new MysqlVariableContext(_ctx, getState());
		enterRule(_localctx, 506, RULE_mysqlVariable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5397);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==GLOBAL_ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetNameContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharsetNameBaseContext charsetNameBase() {
			return getRuleContext(CharsetNameBaseContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode CHARSET_REVERSE_QOUTE_STRING() { return getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
		public CharsetNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharsetName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharsetName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCharsetName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharsetNameContext charsetName() throws RecognitionException {
		CharsetNameContext _localctx = new CharsetNameContext(_ctx, getState());
		enterRule(_localctx, 508, RULE_charsetName);
		try {
			setState(5403);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
				enterOuterAlt(_localctx, 1);
				{
				setState(5399);
				match(BINARY);
				}
				break;
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
				enterOuterAlt(_localctx, 2);
				{
				setState(5400);
				charsetNameBase();
				}
				break;
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(5401);
				match(STRING_LITERAL);
				}
				break;
			case CHARSET_REVERSE_QOUTE_STRING:
				enterOuterAlt(_localctx, 4);
				{
				setState(5402);
				match(CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollationNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public CollationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collationName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollationName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollationName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollationName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollationNameContext collationName() throws RecognitionException {
		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
		enterRule(_localctx, 510, RULE_collationName);
		try {
			setState(5407);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,784,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5405);
				uid();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5406);
				match(STRING_LITERAL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EngineNameContext extends ParserRuleContext {
		public TerminalNode ARCHIVE() { return getToken(MySqlParser.ARCHIVE, 0); }
		public TerminalNode BLACKHOLE() { return getToken(MySqlParser.BLACKHOLE, 0); }
		public TerminalNode CSV() { return getToken(MySqlParser.CSV, 0); }
		public TerminalNode FEDERATED() { return getToken(MySqlParser.FEDERATED, 0); }
		public TerminalNode INNODB() { return getToken(MySqlParser.INNODB, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode MRG_MYISAM() { return getToken(MySqlParser.MRG_MYISAM, 0); }
		public TerminalNode MYISAM() { return getToken(MySqlParser.MYISAM, 0); }
		public TerminalNode NDB() { return getToken(MySqlParser.NDB, 0); }
		public TerminalNode NDBCLUSTER() { return getToken(MySqlParser.NDBCLUSTER, 0); }
		public TerminalNode PERFORMANCE_SCHEMA() { return getToken(MySqlParser.PERFORMANCE_SCHEMA, 0); }
		public TerminalNode TOKUDB() { return getToken(MySqlParser.TOKUDB, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public EngineNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_engineName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEngineName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEngineName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitEngineName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EngineNameContext engineName() throws RecognitionException {
		EngineNameContext _localctx = new EngineNameContext(_ctx, getState());
		enterRule(_localctx, 512, RULE_engineName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5409);
			_la = _input.LA(1);
			if ( !(((((_la - 679)) & ~0x3f) == 0 && ((1L << (_la - 679)) & ((1L << (ARCHIVE - 679)) | (1L << (BLACKHOLE - 679)) | (1L << (CSV - 679)) | (1L << (FEDERATED - 679)) | (1L << (INNODB - 679)) | (1L << (MEMORY - 679)) | (1L << (MRG_MYISAM - 679)) | (1L << (MYISAM - 679)) | (1L << (NDB - 679)) | (1L << (NDBCLUSTER - 679)) | (1L << (PERFORMANCE_SCHEMA - 679)) | (1L << (TOKUDB - 679)))) != 0) || ((((_la - 1037)) & ~0x3f) == 0 && ((1L << (_la - 1037)) & ((1L << (STRING_LITERAL - 1037)) | (1L << (ID - 1037)) | (1L << (REVERSE_QUOTE_ID - 1037)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UuidSetContext extends ParserRuleContext {
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public List<TerminalNode> MINUS() { return getTokens(MySqlParser.MINUS); }
		public TerminalNode MINUS(int i) {
			return getToken(MySqlParser.MINUS, i);
		}
		public List<TerminalNode> COLON_SYMB() { return getTokens(MySqlParser.COLON_SYMB); }
		public TerminalNode COLON_SYMB(int i) {
			return getToken(MySqlParser.COLON_SYMB, i);
		}
		public UuidSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uuidSet; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUuidSet(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUuidSet(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUuidSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UuidSetContext uuidSet() throws RecognitionException {
		UuidSetContext _localctx = new UuidSetContext(_ctx, getState());
		enterRule(_localctx, 514, RULE_uuidSet);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5411);
			decimalLiteral();
			setState(5412);
			match(MINUS);
			setState(5413);
			decimalLiteral();
			setState(5414);
			match(MINUS);
			setState(5415);
			decimalLiteral();
			setState(5416);
			match(MINUS);
			setState(5417);
			decimalLiteral();
			setState(5418);
			match(MINUS);
			setState(5419);
			decimalLiteral();
			setState(5425); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(5420);
				match(COLON_SYMB);
				setState(5421);
				decimalLiteral();
				setState(5422);
				match(MINUS);
				setState(5423);
				decimalLiteral();
				}
				}
				setState(5427); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==COLON_SYMB );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XidContext extends ParserRuleContext {
		public XuidStringIdContext globalTableUid;
		public XuidStringIdContext qualifier;
		public DecimalLiteralContext idFormat;
		public List<XuidStringIdContext> xuidStringId() {
			return getRuleContexts(XuidStringIdContext.class);
		}
		public XuidStringIdContext xuidStringId(int i) {
			return getRuleContext(XuidStringIdContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public XidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xid; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXid(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXid(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XidContext xid() throws RecognitionException {
		XidContext _localctx = new XidContext(_ctx, getState());
		enterRule(_localctx, 516, RULE_xid);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5429);
			((XidContext)_localctx).globalTableUid = xuidStringId();
			setState(5436);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(5430);
				match(COMMA);
				setState(5431);
				((XidContext)_localctx).qualifier = xuidStringId();
				setState(5434);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(5432);
					match(COMMA);
					setState(5433);
					((XidContext)_localctx).idFormat = decimalLiteral();
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XuidStringIdContext extends ParserRuleContext {
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode BIT_STRING() { return getToken(MySqlParser.BIT_STRING, 0); }
		public List<TerminalNode> HEXADECIMAL_LITERAL() { return getTokens(MySqlParser.HEXADECIMAL_LITERAL); }
		public TerminalNode HEXADECIMAL_LITERAL(int i) {
			return getToken(MySqlParser.HEXADECIMAL_LITERAL, i);
		}
		public XuidStringIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xuidStringId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXuidStringId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXuidStringId(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitXuidStringId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XuidStringIdContext xuidStringId() throws RecognitionException {
		XuidStringIdContext _localctx = new XuidStringIdContext(_ctx, getState());
		enterRule(_localctx, 518, RULE_xuidStringId);
		int _la;
		try {
			setState(5445);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(5438);
				match(STRING_LITERAL);
				}
				break;
			case BIT_STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(5439);
				match(BIT_STRING);
				}
				break;
			case HEXADECIMAL_LITERAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(5441); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(5440);
					match(HEXADECIMAL_LITERAL);
					}
					}
					setState(5443); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==HEXADECIMAL_LITERAL );
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthPluginContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public AuthPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAuthPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAuthPlugin(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAuthPlugin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AuthPluginContext authPlugin() throws RecognitionException {
		AuthPluginContext _localctx = new AuthPluginContext(_ctx, getState());
		enterRule(_localctx, 520, RULE_authPlugin);
		try {
			setState(5449);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,790,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5447);
				uid();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5448);
				match(STRING_LITERAL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UidContext extends ParserRuleContext {
		public SimpleIdContext simpleId() {
			return getRuleContext(SimpleIdContext.class,0);
		}
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public TerminalNode CHARSET_REVERSE_QOUTE_STRING() { return getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
		public UidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uid; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUid(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUid(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UidContext uid() throws RecognitionException {
		UidContext _localctx = new UidContext(_ctx, getState());
		enterRule(_localctx, 522, RULE_uid);
		try {
			setState(5454);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,791,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5451);
				simpleId();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5452);
				match(REVERSE_QUOTE_ID);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5453);
				match(CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleIdContext extends ParserRuleContext {
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public CharsetNameBaseContext charsetNameBase() {
			return getRuleContext(CharsetNameBaseContext.class,0);
		}
		public TransactionLevelBaseContext transactionLevelBase() {
			return getRuleContext(TransactionLevelBaseContext.class,0);
		}
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public PrivilegesBaseContext privilegesBase() {
			return getRuleContext(PrivilegesBaseContext.class,0);
		}
		public IntervalTypeBaseContext intervalTypeBase() {
			return getRuleContext(IntervalTypeBaseContext.class,0);
		}
		public DataTypeBaseContext dataTypeBase() {
			return getRuleContext(DataTypeBaseContext.class,0);
		}
		public KeywordsCanBeIdContext keywordsCanBeId() {
			return getRuleContext(KeywordsCanBeIdContext.class,0);
		}
		public FunctionNameBaseContext functionNameBase() {
			return getRuleContext(FunctionNameBaseContext.class,0);
		}
		public SimpleIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleId(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleIdContext simpleId() throws RecognitionException {
		SimpleIdContext _localctx = new SimpleIdContext(_ctx, getState());
		enterRule(_localctx, 524, RULE_simpleId);
		try {
			setState(5465);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,792,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5456);
				match(ID);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5457);
				charsetNameBase();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5458);
				transactionLevelBase();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5459);
				engineName();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5460);
				privilegesBase();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5461);
				intervalTypeBase();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5462);
				dataTypeBase();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5463);
				keywordsCanBeId();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5464);
				functionNameBase();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DottedIdContext extends ParserRuleContext {
		public TerminalNode DOT_ID() { return getToken(MySqlParser.DOT_ID, 0); }
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DottedIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dottedId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDottedId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDottedId(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDottedId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DottedIdContext dottedId() throws RecognitionException {
		DottedIdContext _localctx = new DottedIdContext(_ctx, getState());
		enterRule(_localctx, 526, RULE_dottedId);
		try {
			setState(5470);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DOT_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(5467);
				match(DOT_ID);
				}
				break;
			case DOT:
				enterOuterAlt(_localctx, 2);
				{
				setState(5468);
				match(DOT);
				setState(5469);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DecimalLiteralContext extends ParserRuleContext {
		public TerminalNode DECIMAL_LITERAL() { return getToken(MySqlParser.DECIMAL_LITERAL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public DecimalLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_decimalLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDecimalLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDecimalLiteral(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDecimalLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DecimalLiteralContext decimalLiteral() throws RecognitionException {
		DecimalLiteralContext _localctx = new DecimalLiteralContext(_ctx, getState());
		enterRule(_localctx, 528, RULE_decimalLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5472);
			_la = _input.LA(1);
			if ( !(((((_la - 1027)) & ~0x3f) == 0 && ((1L << (_la - 1027)) & ((1L << (ZERO_DECIMAL - 1027)) | (1L << (ONE_DECIMAL - 1027)) | (1L << (TWO_DECIMAL - 1027)) | (1L << (DECIMAL_LITERAL - 1027)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FileSizeLiteralContext extends ParserRuleContext {
		public TerminalNode FILESIZE_LITERAL() { return getToken(MySqlParser.FILESIZE_LITERAL, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public FileSizeLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fileSizeLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFileSizeLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFileSizeLiteral(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFileSizeLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FileSizeLiteralContext fileSizeLiteral() throws RecognitionException {
		FileSizeLiteralContext _localctx = new FileSizeLiteralContext(_ctx, getState());
		enterRule(_localctx, 530, RULE_fileSizeLiteral);
		try {
			setState(5476);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILESIZE_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(5474);
				match(FILESIZE_LITERAL);
				}
				break;
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(5475);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringLiteralContext extends ParserRuleContext {
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode START_NATIONAL_STRING_LITERAL() { return getToken(MySqlParser.START_NATIONAL_STRING_LITERAL, 0); }
		public TerminalNode STRING_CHARSET_NAME() { return getToken(MySqlParser.STRING_CHARSET_NAME, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public StringLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringLiteral(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStringLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StringLiteralContext stringLiteral() throws RecognitionException {
		StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
		enterRule(_localctx, 532, RULE_stringLiteral);
		int _la;
		try {
			int _alt;
			setState(5501);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,801,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5483);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STRING_LITERAL:
				case STRING_CHARSET_NAME:
					{
					setState(5479);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==STRING_CHARSET_NAME) {
						{
						setState(5478);
						match(STRING_CHARSET_NAME);
						}
					}

					setState(5481);
					match(STRING_LITERAL);
					}
					break;
				case START_NATIONAL_STRING_LITERAL:
					{
					setState(5482);
					match(START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5486); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(5485);
						match(STRING_LITERAL);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5488); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,797,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5495);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STRING_LITERAL:
				case STRING_CHARSET_NAME:
					{
					setState(5491);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==STRING_CHARSET_NAME) {
						{
						setState(5490);
						match(STRING_CHARSET_NAME);
						}
					}

					setState(5493);
					match(STRING_LITERAL);
					}
					break;
				case START_NATIONAL_STRING_LITERAL:
					{
					setState(5494);
					match(START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5499);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,800,_ctx) ) {
				case 1:
					{
					setState(5497);
					match(COLLATE);
					setState(5498);
					collationName();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BooleanLiteralContext extends ParserRuleContext {
		public TerminalNode TRUE() { return getToken(MySqlParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySqlParser.FALSE, 0); }
		public BooleanLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_booleanLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBooleanLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBooleanLiteral(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBooleanLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BooleanLiteralContext booleanLiteral() throws RecognitionException {
		BooleanLiteralContext _localctx = new BooleanLiteralContext(_ctx, getState());
		enterRule(_localctx, 534, RULE_booleanLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5503);
			_la = _input.LA(1);
			if ( !(_la==FALSE || _la==TRUE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HexadecimalLiteralContext extends ParserRuleContext {
		public TerminalNode HEXADECIMAL_LITERAL() { return getToken(MySqlParser.HEXADECIMAL_LITERAL, 0); }
		public TerminalNode STRING_CHARSET_NAME() { return getToken(MySqlParser.STRING_CHARSET_NAME, 0); }
		public HexadecimalLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hexadecimalLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHexadecimalLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHexadecimalLiteral(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitHexadecimalLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HexadecimalLiteralContext hexadecimalLiteral() throws RecognitionException {
		HexadecimalLiteralContext _localctx = new HexadecimalLiteralContext(_ctx, getState());
		enterRule(_localctx, 536, RULE_hexadecimalLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5506);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==STRING_CHARSET_NAME) {
				{
				setState(5505);
				match(STRING_CHARSET_NAME);
				}
			}

			setState(5508);
			match(HEXADECIMAL_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NullNotnullContext extends ParserRuleContext {
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NULL_SPEC_LITERAL() { return getToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public NullNotnullContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nullNotnull; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNullNotnull(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNullNotnull(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNullNotnull(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NullNotnullContext nullNotnull() throws RecognitionException {
		NullNotnullContext _localctx = new NullNotnullContext(_ctx, getState());
		enterRule(_localctx, 538, RULE_nullNotnull);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5511);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(5510);
				match(NOT);
				}
			}

			setState(5513);
			_la = _input.LA(1);
			if ( !(_la==NULL_LITERAL || _la==NULL_SPEC_LITERAL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstantContext extends ParserRuleContext {
		public Token nullLiteral;
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public HexadecimalLiteralContext hexadecimalLiteral() {
			return getRuleContext(HexadecimalLiteralContext.class,0);
		}
		public BooleanLiteralContext booleanLiteral() {
			return getRuleContext(BooleanLiteralContext.class,0);
		}
		public TerminalNode REAL_LITERAL() { return getToken(MySqlParser.REAL_LITERAL, 0); }
		public TerminalNode BIT_STRING() { return getToken(MySqlParser.BIT_STRING, 0); }
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NULL_SPEC_LITERAL() { return getToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public ConstantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstant(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstant(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConstant(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstantContext constant() throws RecognitionException {
		ConstantContext _localctx = new ConstantContext(_ctx, getState());
		enterRule(_localctx, 540, RULE_constant);
		int _la;
		try {
			setState(5527);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,805,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5515);
				stringLiteral();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5516);
				decimalLiteral();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5517);
				match(MINUS);
				setState(5518);
				decimalLiteral();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5519);
				hexadecimalLiteral();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5520);
				booleanLiteral();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5521);
				match(REAL_LITERAL);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5522);
				match(BIT_STRING);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5524);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(5523);
					match(NOT);
					}
				}

				setState(5526);
				((ConstantContext)_localctx).nullLiteral = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NULL_LITERAL || _la==NULL_SPEC_LITERAL) ) {
					((ConstantContext)_localctx).nullLiteral = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeContext extends ParserRuleContext {
		public DataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataType; }
	 
		public DataTypeContext() { }
		public void copyFrom(DataTypeContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SpatialDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySqlParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode GEOMCOLLECTION() { return getToken(MySqlParser.GEOMCOLLECTION, 0); }
		public TerminalNode LINESTRING() { return getToken(MySqlParser.LINESTRING, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySqlParser.MULTILINESTRING, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySqlParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySqlParser.MULTIPOLYGON, 0); }
		public TerminalNode POINT() { return getToken(MySqlParser.POINT, 0); }
		public TerminalNode POLYGON() { return getToken(MySqlParser.POLYGON, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode GEOMETRY() { return getToken(MySqlParser.GEOMETRY, 0); }
		public SpatialDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpatialDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpatialDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSpatialDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CollectionDataTypeContext extends DataTypeContext {
		public Token typeName;
		public CollectionOptionsContext collectionOptions() {
			return getRuleContext(CollectionOptionsContext.class,0);
		}
		public TerminalNode ENUM() { return getToken(MySqlParser.ENUM, 0); }
		public List<TerminalNode> SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public CollectionDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollectionDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollectionDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollectionDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NationalVaryingStringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode NATIONAL() { return getToken(MySqlParser.NATIONAL, 0); }
		public TerminalNode VARYING() { return getToken(MySqlParser.VARYING, 0); }
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public NationalVaryingStringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNationalVaryingStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNationalVaryingStringDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNationalVaryingStringDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DimensionDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode TINYINT() { return getToken(MySqlParser.TINYINT, 0); }
		public TerminalNode SMALLINT() { return getToken(MySqlParser.SMALLINT, 0); }
		public TerminalNode MEDIUMINT() { return getToken(MySqlParser.MEDIUMINT, 0); }
		public TerminalNode INT() { return getToken(MySqlParser.INT, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public TerminalNode BIGINT() { return getToken(MySqlParser.BIGINT, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode ZEROFILL() { return getToken(MySqlParser.ZEROFILL, 0); }
		public TerminalNode SIGNED() { return getToken(MySqlParser.SIGNED, 0); }
		public TerminalNode UNSIGNED() { return getToken(MySqlParser.UNSIGNED, 0); }
		public TerminalNode REAL() { return getToken(MySqlParser.REAL, 0); }
		public LengthTwoDimensionContext lengthTwoDimension() {
			return getRuleContext(LengthTwoDimensionContext.class,0);
		}
		public TerminalNode DOUBLE() { return getToken(MySqlParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(MySqlParser.PRECISION, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public TerminalNode DEC() { return getToken(MySqlParser.DEC, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode NUMERIC() { return getToken(MySqlParser.NUMERIC, 0); }
		public TerminalNode FLOAT() { return getToken(MySqlParser.FLOAT, 0); }
		public LengthTwoOptionalDimensionContext lengthTwoOptionalDimension() {
			return getRuleContext(LengthTwoOptionalDimensionContext.class,0);
		}
		public TerminalNode BIT() { return getToken(MySqlParser.BIT, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode VARBINARY() { return getToken(MySqlParser.VARBINARY, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public DimensionDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDimensionDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDimensionDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDimensionDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public List<TerminalNode> CHARACTER() { return getTokens(MySqlParser.CHARACTER); }
		public TerminalNode CHARACTER(int i) {
			return getToken(MySqlParser.CHARACTER, i);
		}
		public TerminalNode VARCHAR() { return getToken(MySqlParser.VARCHAR, 0); }
		public TerminalNode TINYTEXT() { return getToken(MySqlParser.TINYTEXT, 0); }
		public TerminalNode TEXT() { return getToken(MySqlParser.TEXT, 0); }
		public TerminalNode MEDIUMTEXT() { return getToken(MySqlParser.MEDIUMTEXT, 0); }
		public TerminalNode LONGTEXT() { return getToken(MySqlParser.LONGTEXT, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public TerminalNode NVARCHAR() { return getToken(MySqlParser.NVARCHAR, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public StringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitStringDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NationalStringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode NATIONAL() { return getToken(MySqlParser.NATIONAL, 0); }
		public TerminalNode VARCHAR() { return getToken(MySqlParser.VARCHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public NationalStringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNationalStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNationalStringDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNationalStringDataType(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SimpleDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TINYBLOB() { return getToken(MySqlParser.TINYBLOB, 0); }
		public TerminalNode BLOB() { return getToken(MySqlParser.BLOB, 0); }
		public TerminalNode MEDIUMBLOB() { return getToken(MySqlParser.MEDIUMBLOB, 0); }
		public TerminalNode LONGBLOB() { return getToken(MySqlParser.LONGBLOB, 0); }
		public TerminalNode BOOL() { return getToken(MySqlParser.BOOL, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySqlParser.BOOLEAN, 0); }
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public SimpleDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleDataType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeContext dataType() throws RecognitionException {
		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
		enterRule(_localctx, 542, RULE_dataType);
		int _la;
		try {
			setState(5635);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,834,_ctx) ) {
			case 1:
				_localctx = new StringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5529);
				((StringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (CHAR - 204)) | (1L << (VARCHAR - 204)) | (1L << (NVARCHAR - 204)) | (1L << (TINYTEXT - 204)) | (1L << (TEXT - 204)) | (1L << (MEDIUMTEXT - 204)) | (1L << (LONGTEXT - 204)))) != 0) || _la==NCHAR) ) {
					((StringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5531);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,806,_ctx) ) {
				case 1:
					{
					setState(5530);
					lengthOneDimension();
					}
					break;
				}
				setState(5534);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(5533);
					match(BINARY);
					}
				}

				setState(5542);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,809,_ctx) ) {
				case 1:
					{
					setState(5539);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CHARACTER:
						{
						setState(5536);
						match(CHARACTER);
						setState(5537);
						match(SET);
						}
						break;
					case CHARSET:
						{
						setState(5538);
						match(CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5541);
					charsetName();
					}
					break;
				}
				setState(5546);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,810,_ctx) ) {
				case 1:
					{
					setState(5544);
					match(COLLATE);
					setState(5545);
					collationName();
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new NationalStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5548);
				match(NATIONAL);
				setState(5549);
				((NationalStringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || _la==VARCHAR) ) {
					((NationalStringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5551);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,811,_ctx) ) {
				case 1:
					{
					setState(5550);
					lengthOneDimension();
					}
					break;
				}
				setState(5554);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(5553);
					match(BINARY);
					}
				}

				}
				break;
			case 3:
				_localctx = new NationalStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5556);
				match(NCHAR);
				setState(5557);
				((NationalStringDataTypeContext)_localctx).typeName = match(VARCHAR);
				setState(5559);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,813,_ctx) ) {
				case 1:
					{
					setState(5558);
					lengthOneDimension();
					}
					break;
				}
				setState(5562);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(5561);
					match(BINARY);
					}
				}

				}
				break;
			case 4:
				_localctx = new NationalVaryingStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5564);
				match(NATIONAL);
				setState(5565);
				((NationalVaryingStringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || _la==CHAR) ) {
					((NationalVaryingStringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5566);
				match(VARYING);
				setState(5568);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,815,_ctx) ) {
				case 1:
					{
					setState(5567);
					lengthOneDimension();
					}
					break;
				}
				setState(5571);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(5570);
					match(BINARY);
					}
				}

				}
				break;
			case 5:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5573);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (TINYINT - 178)) | (1L << (SMALLINT - 178)) | (1L << (MEDIUMINT - 178)) | (1L << (INT - 178)) | (1L << (INTEGER - 178)) | (1L << (BIGINT - 178)))) != 0)) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5575);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,817,_ctx) ) {
				case 1:
					{
					setState(5574);
					lengthOneDimension();
					}
					break;
				}
				setState(5578);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,818,_ctx) ) {
				case 1:
					{
					setState(5577);
					_la = _input.LA(1);
					if ( !(_la==UNSIGNED || _la==SIGNED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5581);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ZEROFILL) {
					{
					setState(5580);
					match(ZEROFILL);
					}
				}

				}
				break;
			case 6:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(5583);
				((DimensionDataTypeContext)_localctx).typeName = match(REAL);
				setState(5585);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,820,_ctx) ) {
				case 1:
					{
					setState(5584);
					lengthTwoDimension();
					}
					break;
				}
				setState(5588);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,821,_ctx) ) {
				case 1:
					{
					setState(5587);
					_la = _input.LA(1);
					if ( !(_la==UNSIGNED || _la==SIGNED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5591);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ZEROFILL) {
					{
					setState(5590);
					match(ZEROFILL);
					}
				}

				}
				break;
			case 7:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(5593);
				((DimensionDataTypeContext)_localctx).typeName = match(DOUBLE);
				setState(5595);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRECISION) {
					{
					setState(5594);
					match(PRECISION);
					}
				}

				setState(5598);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,824,_ctx) ) {
				case 1:
					{
					setState(5597);
					lengthTwoDimension();
					}
					break;
				}
				setState(5601);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,825,_ctx) ) {
				case 1:
					{
					setState(5600);
					_la = _input.LA(1);
					if ( !(_la==UNSIGNED || _la==SIGNED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5604);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ZEROFILL) {
					{
					setState(5603);
					match(ZEROFILL);
					}
				}

				}
				break;
			case 8:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(5606);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (FLOAT - 193)) | (1L << (DECIMAL - 193)) | (1L << (DEC - 193)) | (1L << (NUMERIC - 193)))) != 0) || _la==FIXED) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5608);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,827,_ctx) ) {
				case 1:
					{
					setState(5607);
					lengthTwoOptionalDimension();
					}
					break;
				}
				setState(5611);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,828,_ctx) ) {
				case 1:
					{
					setState(5610);
					_la = _input.LA(1);
					if ( !(_la==UNSIGNED || _la==SIGNED) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5614);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ZEROFILL) {
					{
					setState(5613);
					match(ZEROFILL);
					}
				}

				}
				break;
			case 9:
				_localctx = new SimpleDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(5616);
				((SimpleDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TINYBLOB - 199)) | (1L << (BLOB - 199)) | (1L << (MEDIUMBLOB - 199)) | (1L << (LONGBLOB - 199)) | (1L << (SERIAL - 199)))) != 0) || _la==BOOL || _la==BOOLEAN) ) {
					((SimpleDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 10:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(5617);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 200)) & ~0x3f) == 0 && ((1L << (_la - 200)) & ((1L << (TIME - 200)) | (1L << (TIMESTAMP - 200)) | (1L << (DATETIME - 200)) | (1L << (YEAR - 200)) | (1L << (BINARY - 200)) | (1L << (VARBINARY - 200)))) != 0) || _la==BIT) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5619);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,830,_ctx) ) {
				case 1:
					{
					setState(5618);
					lengthOneDimension();
					}
					break;
				}
				}
				break;
			case 11:
				_localctx = new CollectionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(5621);
				((CollectionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==SET || _la==ENUM) ) {
					((CollectionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5622);
				collectionOptions();
				setState(5624);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BINARY) {
					{
					setState(5623);
					match(BINARY);
					}
				}

				setState(5632);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,833,_ctx) ) {
				case 1:
					{
					setState(5629);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CHARACTER:
						{
						setState(5626);
						match(CHARACTER);
						setState(5627);
						match(SET);
						}
						break;
					case CHARSET:
						{
						setState(5628);
						match(CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5631);
					charsetName();
					}
					break;
				}
				}
				break;
			case 12:
				_localctx = new SpatialDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(5634);
				((SpatialDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JSON || ((((_la - 695)) & ~0x3f) == 0 && ((1L << (_la - 695)) & ((1L << (GEOMETRYCOLLECTION - 695)) | (1L << (GEOMCOLLECTION - 695)) | (1L << (GEOMETRY - 695)) | (1L << (LINESTRING - 695)) | (1L << (MULTILINESTRING - 695)) | (1L << (MULTIPOINT - 695)) | (1L << (MULTIPOLYGON - 695)) | (1L << (POINT - 695)) | (1L << (POLYGON - 695)))) != 0)) ) {
					((SpatialDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollectionOptionsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CollectionOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collectionOptions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollectionOptions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollectionOptions(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollectionOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollectionOptionsContext collectionOptions() throws RecognitionException {
		CollectionOptionsContext _localctx = new CollectionOptionsContext(_ctx, getState());
		enterRule(_localctx, 544, RULE_collectionOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5637);
			match(LR_BRACKET);
			setState(5638);
			match(STRING_LITERAL);
			setState(5643);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5639);
				match(COMMA);
				setState(5640);
				match(STRING_LITERAL);
				}
				}
				setState(5645);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5646);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConvertedDataTypeContext extends ParserRuleContext {
		public Token typeName;
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public LengthTwoDimensionContext lengthTwoDimension() {
			return getRuleContext(LengthTwoDimensionContext.class,0);
		}
		public TerminalNode SIGNED() { return getToken(MySqlParser.SIGNED, 0); }
		public TerminalNode UNSIGNED() { return getToken(MySqlParser.UNSIGNED, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public ConvertedDataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_convertedDataType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConvertedDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConvertedDataType(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConvertedDataType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConvertedDataTypeContext convertedDataType() throws RecognitionException {
		ConvertedDataTypeContext _localctx = new ConvertedDataTypeContext(_ctx, getState());
		enterRule(_localctx, 546, RULE_convertedDataType);
		int _la;
		try {
			setState(5673);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
			case NCHAR:
				enterOuterAlt(_localctx, 1);
				{
				setState(5648);
				((ConvertedDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BINARY || _la==NCHAR) ) {
					((ConvertedDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5650);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(5649);
					lengthOneDimension();
					}
				}

				}
				break;
			case CHAR:
				enterOuterAlt(_localctx, 2);
				{
				setState(5652);
				((ConvertedDataTypeContext)_localctx).typeName = match(CHAR);
				setState(5654);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(5653);
					lengthOneDimension();
					}
				}

				setState(5662);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHARACTER || _la==CHARSET) {
					{
					setState(5659);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case CHARACTER:
						{
						setState(5656);
						match(CHARACTER);
						setState(5657);
						match(SET);
						}
						break;
					case CHARSET:
						{
						setState(5658);
						match(CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5661);
					charsetName();
					}
				}

				}
				break;
			case DATE:
			case TIME:
			case DATETIME:
			case JSON:
				enterOuterAlt(_localctx, 3);
				{
				setState(5664);
				((ConvertedDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (DATETIME - 199)))) != 0) || _la==JSON) ) {
					((ConvertedDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 4);
				{
				setState(5665);
				((ConvertedDataTypeContext)_localctx).typeName = match(DECIMAL);
				setState(5667);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(5666);
					lengthTwoDimension();
					}
				}

				}
				break;
			case UNSIGNED:
			case SIGNED:
				enterOuterAlt(_localctx, 5);
				{
				setState(5669);
				_la = _input.LA(1);
				if ( !(_la==UNSIGNED || _la==SIGNED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5671);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INTEGER) {
					{
					setState(5670);
					match(INTEGER);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthOneDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public LengthOneDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthOneDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthOneDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthOneDimension(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLengthOneDimension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LengthOneDimensionContext lengthOneDimension() throws RecognitionException {
		LengthOneDimensionContext _localctx = new LengthOneDimensionContext(_ctx, getState());
		enterRule(_localctx, 548, RULE_lengthOneDimension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5675);
			match(LR_BRACKET);
			setState(5676);
			decimalLiteral();
			setState(5677);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthTwoDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public LengthTwoDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthTwoDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthTwoDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthTwoDimension(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLengthTwoDimension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LengthTwoDimensionContext lengthTwoDimension() throws RecognitionException {
		LengthTwoDimensionContext _localctx = new LengthTwoDimensionContext(_ctx, getState());
		enterRule(_localctx, 550, RULE_lengthTwoDimension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5679);
			match(LR_BRACKET);
			setState(5680);
			decimalLiteral();
			setState(5681);
			match(COMMA);
			setState(5682);
			decimalLiteral();
			setState(5683);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthTwoOptionalDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public LengthTwoOptionalDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthTwoOptionalDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthTwoOptionalDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthTwoOptionalDimension(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLengthTwoOptionalDimension(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LengthTwoOptionalDimensionContext lengthTwoOptionalDimension() throws RecognitionException {
		LengthTwoOptionalDimensionContext _localctx = new LengthTwoOptionalDimensionContext(_ctx, getState());
		enterRule(_localctx, 552, RULE_lengthTwoOptionalDimension);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5685);
			match(LR_BRACKET);
			setState(5686);
			decimalLiteral();
			setState(5689);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(5687);
				match(COMMA);
				setState(5688);
				decimalLiteral();
				}
			}

			setState(5691);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UidListContext extends ParserRuleContext {
		public List<UidContext> uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public UidListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uidList; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUidList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUidList(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUidList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UidListContext uidList() throws RecognitionException {
		UidListContext _localctx = new UidListContext(_ctx, getState());
		enterRule(_localctx, 554, RULE_uidList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5693);
			uid();
			setState(5698);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,844,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(5694);
					match(COMMA);
					setState(5695);
					uid();
					}
					} 
				}
				setState(5700);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,844,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablesContext extends ParserRuleContext {
		public List<TableNameContext> tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TablesContext tables() throws RecognitionException {
		TablesContext _localctx = new TablesContext(_ctx, getState());
		enterRule(_localctx, 556, RULE_tables);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5701);
			tableName();
			setState(5706);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,845,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(5702);
					match(COMMA);
					setState(5703);
					tableName();
					}
					} 
				}
				setState(5708);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,845,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnNamesContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<IndexColumnNameContext> indexColumnName() {
			return getRuleContexts(IndexColumnNameContext.class);
		}
		public IndexColumnNameContext indexColumnName(int i) {
			return getRuleContext(IndexColumnNameContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public IndexColumnNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnNames; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexColumnNames(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexColumnNames(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIndexColumnNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexColumnNamesContext indexColumnNames() throws RecognitionException {
		IndexColumnNamesContext _localctx = new IndexColumnNamesContext(_ctx, getState());
		enterRule(_localctx, 558, RULE_indexColumnNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5709);
			match(LR_BRACKET);
			setState(5710);
			indexColumnName();
			setState(5715);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5711);
				match(COMMA);
				setState(5712);
				indexColumnName();
				}
				}
				setState(5717);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5718);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionsContext extends ParserRuleContext {
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ExpressionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressions(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionsContext expressions() throws RecognitionException {
		ExpressionsContext _localctx = new ExpressionsContext(_ctx, getState());
		enterRule(_localctx, 560, RULE_expressions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5720);
			expression(0);
			setState(5725);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5721);
				match(COMMA);
				setState(5722);
				expression(0);
				}
				}
				setState(5727);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionsForUpdateContext extends ParserRuleContext {
		public List<ExpressionForUpdateContext> expressionForUpdate() {
			return getRuleContexts(ExpressionForUpdateContext.class);
		}
		public ExpressionForUpdateContext expressionForUpdate(int i) {
			return getRuleContext(ExpressionForUpdateContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ExpressionsForUpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionsForUpdate; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionsForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionsForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressionsForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionsForUpdateContext expressionsForUpdate() throws RecognitionException {
		ExpressionsForUpdateContext _localctx = new ExpressionsForUpdateContext(_ctx, getState());
		enterRule(_localctx, 562, RULE_expressionsForUpdate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5728);
			expressionForUpdate(0);
			setState(5733);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5729);
				match(COMMA);
				setState(5730);
				expressionForUpdate(0);
				}
				}
				setState(5735);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionsWithDefaultsContext extends ParserRuleContext {
		public List<ExpressionOrDefaultContext> expressionOrDefault() {
			return getRuleContexts(ExpressionOrDefaultContext.class);
		}
		public ExpressionOrDefaultContext expressionOrDefault(int i) {
			return getRuleContext(ExpressionOrDefaultContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ExpressionsWithDefaultsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionsWithDefaults; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionsWithDefaults(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionsWithDefaults(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressionsWithDefaults(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionsWithDefaultsContext expressionsWithDefaults() throws RecognitionException {
		ExpressionsWithDefaultsContext _localctx = new ExpressionsWithDefaultsContext(_ctx, getState());
		enterRule(_localctx, 564, RULE_expressionsWithDefaults);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5736);
			expressionOrDefault();
			setState(5741);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5737);
				match(COMMA);
				setState(5738);
				expressionOrDefault();
				}
				}
				setState(5743);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstantsContext extends ParserRuleContext {
		public List<ConstantContext> constant() {
			return getRuleContexts(ConstantContext.class);
		}
		public ConstantContext constant(int i) {
			return getRuleContext(ConstantContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ConstantsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constants; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstants(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstants(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConstants(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstantsContext constants() throws RecognitionException {
		ConstantsContext _localctx = new ConstantsContext(_ctx, getState());
		enterRule(_localctx, 566, RULE_constants);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5744);
			constant();
			setState(5749);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5745);
				match(COMMA);
				setState(5746);
				constant();
				}
				}
				setState(5751);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleStringsContext extends ParserRuleContext {
		public List<TerminalNode> STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SimpleStringsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleStrings; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleStrings(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleStrings(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleStrings(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleStringsContext simpleStrings() throws RecognitionException {
		SimpleStringsContext _localctx = new SimpleStringsContext(_ctx, getState());
		enterRule(_localctx, 568, RULE_simpleStrings);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5752);
			match(STRING_LITERAL);
			setState(5757);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5753);
				match(COMMA);
				setState(5754);
				match(STRING_LITERAL);
				}
				}
				setState(5759);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserVariablesContext extends ParserRuleContext {
		public List<TerminalNode> LOCAL_ID() { return getTokens(MySqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(MySqlParser.LOCAL_ID, i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public UserVariablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userVariables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserVariables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserVariables(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUserVariables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserVariablesContext userVariables() throws RecognitionException {
		UserVariablesContext _localctx = new UserVariablesContext(_ctx, getState());
		enterRule(_localctx, 570, RULE_userVariables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5760);
			match(LOCAL_ID);
			setState(5765);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5761);
				match(COMMA);
				setState(5762);
				match(LOCAL_ID);
				}
				}
				setState(5767);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultValueContext extends ParserRuleContext {
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public UnaryOperatorContext unaryOperator() {
			return getRuleContext(UnaryOperatorContext.class,0);
		}
		public List<CurrentTimestampContext> currentTimestamp() {
			return getRuleContexts(CurrentTimestampContext.class);
		}
		public CurrentTimestampContext currentTimestamp(int i) {
			return getRuleContext(CurrentTimestampContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public DefaultValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultValue(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDefaultValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultValueContext defaultValue() throws RecognitionException {
		DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
		enterRule(_localctx, 572, RULE_defaultValue);
		try {
			setState(5779);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,855,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5768);
				match(NULL_LITERAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5770);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,853,_ctx) ) {
				case 1:
					{
					setState(5769);
					unaryOperator();
					}
					break;
				}
				setState(5772);
				constant();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5773);
				currentTimestamp();
				setState(5777);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,854,_ctx) ) {
				case 1:
					{
					setState(5774);
					match(ON);
					setState(5775);
					match(UPDATE);
					setState(5776);
					currentTimestamp();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CurrentTimestampContext extends ParserRuleContext {
		public TerminalNode NOW() { return getToken(MySqlParser.NOW, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySqlParser.LOCALTIMESTAMP, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public CurrentTimestampContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_currentTimestamp; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentTimestamp(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentTimestamp(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCurrentTimestamp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CurrentTimestampContext currentTimestamp() throws RecognitionException {
		CurrentTimestampContext _localctx = new CurrentTimestampContext(_ctx, getState());
		enterRule(_localctx, 574, RULE_currentTimestamp);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5795);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case LOCALTIMESTAMP:
				{
				setState(5781);
				_la = _input.LA(1);
				if ( !(((((_la - 253)) & ~0x3f) == 0 && ((1L << (_la - 253)) & ((1L << (CURRENT_TIMESTAMP - 253)) | (1L << (LOCALTIME - 253)) | (1L << (LOCALTIMESTAMP - 253)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5787);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,857,_ctx) ) {
				case 1:
					{
					setState(5782);
					match(LR_BRACKET);
					setState(5784);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 1027)) & ~0x3f) == 0 && ((1L << (_la - 1027)) & ((1L << (ZERO_DECIMAL - 1027)) | (1L << (ONE_DECIMAL - 1027)) | (1L << (TWO_DECIMAL - 1027)) | (1L << (DECIMAL_LITERAL - 1027)))) != 0)) {
						{
						setState(5783);
						decimalLiteral();
						}
					}

					setState(5786);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case NOW:
				{
				setState(5789);
				match(NOW);
				setState(5790);
				match(LR_BRACKET);
				setState(5792);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 1027)) & ~0x3f) == 0 && ((1L << (_la - 1027)) & ((1L << (ZERO_DECIMAL - 1027)) | (1L << (ONE_DECIMAL - 1027)) | (1L << (TWO_DECIMAL - 1027)) | (1L << (DECIMAL_LITERAL - 1027)))) != 0)) {
					{
					setState(5791);
					decimalLiteral();
					}
				}

				setState(5794);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionOrDefaultContext extends ParserRuleContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public ExpressionOrDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionOrDefault; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionOrDefault(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionOrDefault(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressionOrDefault(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionOrDefaultContext expressionOrDefault() throws RecognitionException {
		ExpressionOrDefaultContext _localctx = new ExpressionOrDefaultContext(_ctx, getState());
		enterRule(_localctx, 576, RULE_expressionOrDefault);
		try {
			setState(5799);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CASE:
			case CAST:
			case CONVERT:
			case CURRENT:
			case CURRENT_USER:
			case DATABASE:
			case DIAGNOSTICS:
			case EXISTS:
			case FALSE:
			case IF:
			case INSERT:
			case INTERVAL:
			case LEFT:
			case NOT:
			case NULL_LITERAL:
			case NUMBER:
			case REPLACE:
			case RIGHT:
			case STACKED:
			case TRUE:
			case VALUES:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case CHAR:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case GROUP_CONCAT:
			case MAX:
			case MIN:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case EXTRACT:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case OFFLINE:
			case OFFSET:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNS:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case TABLES:
			case ROUTINE:
			case EXECUTE:
			case FILE:
			case PROCESS:
			case RELOAD:
			case SHUTDOWN:
			case SUPER:
			case PRIVILEGES:
			case SESSION_VARIABLES_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case PLUS:
			case MINUS:
			case EXCLAMATION_SYMBOL:
			case BIT_NOT_OP:
			case LR_BRACKET:
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case CHARSET_REVERSE_QOUTE_STRING:
			case START_NATIONAL_STRING_LITERAL:
			case STRING_LITERAL:
			case DECIMAL_LITERAL:
			case HEXADECIMAL_LITERAL:
			case REAL_LITERAL:
			case NULL_SPEC_LITERAL:
			case BIT_STRING:
			case STRING_CHARSET_NAME:
			case ID:
			case REVERSE_QUOTE_ID:
			case LOCAL_ID:
			case GLOBAL_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(5797);
				expression(0);
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 2);
				{
				setState(5798);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public IfExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifExists; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfExists(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfExists(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIfExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfExistsContext ifExists() throws RecognitionException {
		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
		enterRule(_localctx, 578, RULE_ifExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5801);
			match(IF);
			setState(5802);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfNotExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public IfNotExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifNotExists; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfNotExists(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfNotExists(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIfNotExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfNotExistsContext ifNotExists() throws RecognitionException {
		IfNotExistsContext _localctx = new IfNotExistsContext(_ctx, getState());
		enterRule(_localctx, 580, RULE_ifNotExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5804);
			match(IF);
			setState(5805);
			match(NOT);
			setState(5806);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionCallContext extends ParserRuleContext {
		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionCall; }
	 
		public FunctionCallContext() { }
		public void copyFrom(FunctionCallContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SpecificFunctionCallContext extends FunctionCallContext {
		public SpecificFunctionContext specificFunction() {
			return getRuleContext(SpecificFunctionContext.class,0);
		}
		public SpecificFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpecificFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpecificFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSpecificFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PasswordFunctionCallContext extends FunctionCallContext {
		public PasswordFunctionClauseContext passwordFunctionClause() {
			return getRuleContext(PasswordFunctionClauseContext.class,0);
		}
		public PasswordFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPasswordFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class UdfFunctionCallContext extends FunctionCallContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public UdfFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUdfFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUdfFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUdfFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AggregateFunctionCallContext extends FunctionCallContext {
		public AggregateWindowedFunctionContext aggregateWindowedFunction() {
			return getRuleContext(AggregateWindowedFunctionContext.class,0);
		}
		public AggregateFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAggregateFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAggregateFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAggregateFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ScalarFunctionCallContext extends FunctionCallContext {
		public ScalarFunctionNameContext scalarFunctionName() {
			return getRuleContext(ScalarFunctionNameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public ScalarFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterScalarFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitScalarFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitScalarFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionCallContext functionCall() throws RecognitionException {
		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
		enterRule(_localctx, 582, RULE_functionCall);
		int _la;
		try {
			setState(5825);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,863,_ctx) ) {
			case 1:
				_localctx = new SpecificFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5808);
				specificFunction();
				}
				break;
			case 2:
				_localctx = new AggregateFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5809);
				aggregateWindowedFunction();
				}
				break;
			case 3:
				_localctx = new ScalarFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5810);
				scalarFunctionName();
				setState(5811);
				match(LR_BRACKET);
				setState(5813);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CAST) | (1L << CONVERT) | (1L << CURRENT) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DIAGNOSTICS) | (1L << EXISTS) | (1L << FALSE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (IF - 69)) | (1L << (INSERT - 69)) | (1L << (INTERVAL - 69)) | (1L << (LEFT - 69)) | (1L << (NOT - 69)) | (1L << (NULL_LITERAL - 69)) | (1L << (NUMBER - 69)) | (1L << (REPLACE - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (RIGHT - 133)) | (1L << (STACKED - 133)) | (1L << (TRUE - 133)) | (1L << (VALUES - 133)))) != 0) || ((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (DATETIME - 199)) | (1L << (YEAR - 199)) | (1L << (CHAR - 199)) | (1L << (BINARY - 199)) | (1L << (TEXT - 199)) | (1L << (ENUM - 199)) | (1L << (SERIAL - 199)) | (1L << (AVG - 199)) | (1L << (BIT_AND - 199)) | (1L << (BIT_OR - 199)) | (1L << (BIT_XOR - 199)) | (1L << (COUNT - 199)) | (1L << (GROUP_CONCAT - 199)) | (1L << (MAX - 199)) | (1L << (MIN - 199)) | (1L << (STD - 199)) | (1L << (STDDEV - 199)) | (1L << (STDDEV_POP - 199)) | (1L << (STDDEV_SAMP - 199)) | (1L << (SUM - 199)) | (1L << (VAR_POP - 199)) | (1L << (VAR_SAMP - 199)) | (1L << (VARIANCE - 199)) | (1L << (CURRENT_DATE - 199)) | (1L << (CURRENT_TIME - 199)) | (1L << (CURRENT_TIMESTAMP - 199)) | (1L << (LOCALTIME - 199)) | (1L << (CURDATE - 199)) | (1L << (CURTIME - 199)) | (1L << (DATE_ADD - 199)) | (1L << (DATE_SUB - 199)) | (1L << (EXTRACT - 199)) | (1L << (LOCALTIMESTAMP - 199)) | (1L << (NOW - 199)) | (1L << (POSITION - 199)))) != 0) || ((((_la - 263)) & ~0x3f) == 0 && ((1L << (_la - 263)) & ((1L << (SUBSTR - 263)) | (1L << (SUBSTRING - 263)) | (1L << (SYSDATE - 263)) | (1L << (TRIM - 263)) | (1L << (UTC_DATE - 263)) | (1L << (UTC_TIME - 263)) | (1L << (UTC_TIMESTAMP - 263)) | (1L << (ACCOUNT - 263)) | (1L << (ACTION - 263)) | (1L << (AFTER - 263)) | (1L << (AGGREGATE - 263)) | (1L << (ALGORITHM - 263)) | (1L << (ANY - 263)) | (1L << (AT - 263)) | (1L << (AUTHORS - 263)) | (1L << (AUTOCOMMIT - 263)) | (1L << (AUTOEXTEND_SIZE - 263)) | (1L << (AUTO_INCREMENT - 263)) | (1L << (AVG_ROW_LENGTH - 263)) | (1L << (BEGIN - 263)) | (1L << (BINLOG - 263)) | (1L << (BIT - 263)) | (1L << (BLOCK - 263)) | (1L << (BOOL - 263)) | (1L << (BOOLEAN - 263)) | (1L << (BTREE - 263)) | (1L << (CACHE - 263)) | (1L << (CASCADED - 263)) | (1L << (CHAIN - 263)) | (1L << (CHANGED - 263)) | (1L << (CHANNEL - 263)) | (1L << (CHECKSUM - 263)) | (1L << (PAGE_CHECKSUM - 263)) | (1L << (CIPHER - 263)) | (1L << (CLASS_ORIGIN - 263)) | (1L << (CLIENT - 263)) | (1L << (CLOSE - 263)) | (1L << (COALESCE - 263)) | (1L << (CODE - 263)) | (1L << (COLUMNS - 263)) | (1L << (COLUMN_FORMAT - 263)) | (1L << (COLUMN_NAME - 263)) | (1L << (COMMENT - 263)) | (1L << (COMMIT - 263)) | (1L << (COMPACT - 263)) | (1L << (COMPLETION - 263)) | (1L << (COMPRESSED - 263)) | (1L << (COMPRESSION - 263)) | (1L << (CONCURRENT - 263)) | (1L << (CONNECTION - 263)) | (1L << (CONSISTENT - 263)) | (1L << (CONSTRAINT_CATALOG - 263)) | (1L << (CONSTRAINT_SCHEMA - 263)) | (1L << (CONSTRAINT_NAME - 263)) | (1L << (CONTAINS - 263)) | (1L << (CONTEXT - 263)) | (1L << (CONTRIBUTORS - 263)) | (1L << (COPY - 263)) | (1L << (CPU - 263)) | (1L << (CURSOR_NAME - 263)) | (1L << (DATA - 263)) | (1L << (DATAFILE - 263)) | (1L << (DEALLOCATE - 263)) | (1L << (DEFAULT_AUTH - 263)))) != 0) || ((((_la - 327)) & ~0x3f) == 0 && ((1L << (_la - 327)) & ((1L << (DEFINER - 327)) | (1L << (DELAY_KEY_WRITE - 327)) | (1L << (DES_KEY_FILE - 327)) | (1L << (DIRECTORY - 327)) | (1L << (DISABLE - 327)) | (1L << (DISCARD - 327)) | (1L << (DISK - 327)) | (1L << (DO - 327)) | (1L << (DUMPFILE - 327)) | (1L << (DUPLICATE - 327)) | (1L << (DYNAMIC - 327)) | (1L << (ENABLE - 327)) | (1L << (ENCRYPTION - 327)) | (1L << (END - 327)) | (1L << (ENDS - 327)) | (1L << (ENGINE - 327)) | (1L << (ENGINES - 327)) | (1L << (ERROR - 327)) | (1L << (ERRORS - 327)) | (1L << (ESCAPE - 327)) | (1L << (EVEN - 327)) | (1L << (EVENT - 327)) | (1L << (EVENTS - 327)) | (1L << (EVERY - 327)) | (1L << (EXCHANGE - 327)) | (1L << (EXCLUSIVE - 327)) | (1L << (EXPIRE - 327)) | (1L << (EXPORT - 327)) | (1L << (EXTENDED - 327)) | (1L << (EXTENT_SIZE - 327)) | (1L << (FAST - 327)) | (1L << (FAULTS - 327)) | (1L << (FIELDS - 327)) | (1L << (FILE_BLOCK_SIZE - 327)) | (1L << (FILTER - 327)) | (1L << (FIRST - 327)) | (1L << (FIXED - 327)) | (1L << (FLUSH - 327)) | (1L << (FOLLOWS - 327)) | (1L << (FOUND - 327)) | (1L << (FULL - 327)) | (1L << (FUNCTION - 327)) | (1L << (GENERAL - 327)) | (1L << (GLOBAL - 327)) | (1L << (GRANTS - 327)) | (1L << (GROUP_REPLICATION - 327)) | (1L << (HANDLER - 327)) | (1L << (HASH - 327)) | (1L << (HELP - 327)) | (1L << (HOST - 327)) | (1L << (HOSTS - 327)) | (1L << (IDENTIFIED - 327)) | (1L << (IGNORE_SERVER_IDS - 327)) | (1L << (IMPORT - 327)) | (1L << (INDEXES - 327)) | (1L << (INITIAL_SIZE - 327)) | (1L << (INPLACE - 327)) | (1L << (INSERT_METHOD - 327)) | (1L << (INSTALL - 327)) | (1L << (INSTANCE - 327)) | (1L << (INVISIBLE - 327)) | (1L << (INVOKER - 327)) | (1L << (IO - 327)) | (1L << (IO_THREAD - 327)))) != 0) || ((((_la - 391)) & ~0x3f) == 0 && ((1L << (_la - 391)) & ((1L << (IPC - 391)) | (1L << (ISOLATION - 391)) | (1L << (ISSUER - 391)) | (1L << (JSON - 391)) | (1L << (KEY_BLOCK_SIZE - 391)) | (1L << (LANGUAGE - 391)) | (1L << (LAST - 391)) | (1L << (LEAVES - 391)) | (1L << (LESS - 391)) | (1L << (LEVEL - 391)) | (1L << (LIST - 391)) | (1L << (LOCAL - 391)) | (1L << (LOGFILE - 391)) | (1L << (LOGS - 391)) | (1L << (MASTER - 391)) | (1L << (MASTER_AUTO_POSITION - 391)) | (1L << (MASTER_CONNECT_RETRY - 391)) | (1L << (MASTER_DELAY - 391)) | (1L << (MASTER_HEARTBEAT_PERIOD - 391)) | (1L << (MASTER_HOST - 391)) | (1L << (MASTER_LOG_FILE - 391)) | (1L << (MASTER_LOG_POS - 391)) | (1L << (MASTER_PASSWORD - 391)) | (1L << (MASTER_PORT - 391)) | (1L << (MASTER_RETRY_COUNT - 391)) | (1L << (MASTER_SSL - 391)) | (1L << (MASTER_SSL_CA - 391)) | (1L << (MASTER_SSL_CAPATH - 391)) | (1L << (MASTER_SSL_CERT - 391)) | (1L << (MASTER_SSL_CIPHER - 391)) | (1L << (MASTER_SSL_CRL - 391)) | (1L << (MASTER_SSL_CRLPATH - 391)) | (1L << (MASTER_SSL_KEY - 391)) | (1L << (MASTER_TLS_VERSION - 391)) | (1L << (MASTER_USER - 391)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 391)) | (1L << (MAX_QUERIES_PER_HOUR - 391)) | (1L << (MAX_ROWS - 391)) | (1L << (MAX_SIZE - 391)) | (1L << (MAX_UPDATES_PER_HOUR - 391)) | (1L << (MAX_USER_CONNECTIONS - 391)) | (1L << (MEDIUM - 391)) | (1L << (MERGE - 391)) | (1L << (MESSAGE_TEXT - 391)) | (1L << (MID - 391)) | (1L << (MIGRATE - 391)) | (1L << (MIN_ROWS - 391)) | (1L << (MODE - 391)) | (1L << (MODIFY - 391)) | (1L << (MUTEX - 391)) | (1L << (MYSQL - 391)) | (1L << (MYSQL_ERRNO - 391)) | (1L << (NAME - 391)) | (1L << (NAMES - 391)) | (1L << (NCHAR - 391)) | (1L << (NEVER - 391)) | (1L << (NEXT - 391)) | (1L << (NO - 391)) | (1L << (NODEGROUP - 391)) | (1L << (NONE - 391)) | (1L << (OFFLINE - 391)) | (1L << (OFFSET - 391)))) != 0) || ((((_la - 455)) & ~0x3f) == 0 && ((1L << (_la - 455)) & ((1L << (OJ - 455)) | (1L << (OLD_PASSWORD - 455)) | (1L << (ONE - 455)) | (1L << (ONLINE - 455)) | (1L << (ONLY - 455)) | (1L << (OPEN - 455)) | (1L << (OPTIMIZER_COSTS - 455)) | (1L << (OPTIONS - 455)) | (1L << (OWNER - 455)) | (1L << (PACK_KEYS - 455)) | (1L << (PAGE - 455)) | (1L << (PARSER - 455)) | (1L << (PARTIAL - 455)) | (1L << (PARTITIONING - 455)) | (1L << (PARTITIONS - 455)) | (1L << (PASSWORD - 455)) | (1L << (PHASE - 455)) | (1L << (PLUGIN - 455)) | (1L << (PLUGIN_DIR - 455)) | (1L << (PLUGINS - 455)) | (1L << (PORT - 455)) | (1L << (PRECEDES - 455)) | (1L << (PREPARE - 455)) | (1L << (PRESERVE - 455)) | (1L << (PREV - 455)) | (1L << (PROCESSLIST - 455)) | (1L << (PROFILE - 455)) | (1L << (PROFILES - 455)) | (1L << (PROXY - 455)) | (1L << (QUERY - 455)) | (1L << (QUICK - 455)) | (1L << (REBUILD - 455)) | (1L << (RECOVER - 455)) | (1L << (REDO_BUFFER_SIZE - 455)) | (1L << (REDUNDANT - 455)) | (1L << (RELAY - 455)) | (1L << (RELAY_LOG_FILE - 455)) | (1L << (RELAY_LOG_POS - 455)) | (1L << (RELAYLOG - 455)) | (1L << (REMOVE - 455)) | (1L << (REORGANIZE - 455)) | (1L << (REPAIR - 455)) | (1L << (REPLICATE_DO_DB - 455)) | (1L << (REPLICATE_DO_TABLE - 455)) | (1L << (REPLICATE_IGNORE_DB - 455)) | (1L << (REPLICATE_IGNORE_TABLE - 455)) | (1L << (REPLICATE_REWRITE_DB - 455)) | (1L << (REPLICATE_WILD_DO_TABLE - 455)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 455)) | (1L << (REPLICATION - 455)) | (1L << (RESET - 455)) | (1L << (RESUME - 455)) | (1L << (RETURNED_SQLSTATE - 455)) | (1L << (RETURNS - 455)) | (1L << (ROLLBACK - 455)) | (1L << (ROLLUP - 455)) | (1L << (ROTATE - 455)) | (1L << (ROW - 455)) | (1L << (ROWS - 455)) | (1L << (ROW_FORMAT - 455)) | (1L << (SAVEPOINT - 455)) | (1L << (SCHEDULE - 455)) | (1L << (SECURITY - 455)))) != 0) || ((((_la - 519)) & ~0x3f) == 0 && ((1L << (_la - 519)) & ((1L << (SERVER - 519)) | (1L << (SESSION - 519)) | (1L << (SHARE - 519)) | (1L << (SHARED - 519)) | (1L << (SIGNED - 519)) | (1L << (SIMPLE - 519)) | (1L << (SLAVE - 519)) | (1L << (SLOW - 519)) | (1L << (SNAPSHOT - 519)) | (1L << (SOCKET - 519)) | (1L << (SOME - 519)) | (1L << (SONAME - 519)) | (1L << (SOUNDS - 519)) | (1L << (SOURCE - 519)) | (1L << (SQL_AFTER_GTIDS - 519)) | (1L << (SQL_AFTER_MTS_GAPS - 519)) | (1L << (SQL_BEFORE_GTIDS - 519)) | (1L << (SQL_BUFFER_RESULT - 519)) | (1L << (SQL_CACHE - 519)) | (1L << (SQL_NO_CACHE - 519)) | (1L << (SQL_THREAD - 519)) | (1L << (START - 519)) | (1L << (STARTS - 519)) | (1L << (STATS_AUTO_RECALC - 519)) | (1L << (STATS_PERSISTENT - 519)) | (1L << (STATS_SAMPLE_PAGES - 519)) | (1L << (STATUS - 519)) | (1L << (STOP - 519)) | (1L << (STORAGE - 519)) | (1L << (STRING - 519)) | (1L << (SUBCLASS_ORIGIN - 519)) | (1L << (SUBJECT - 519)) | (1L << (SUBPARTITION - 519)) | (1L << (SUBPARTITIONS - 519)) | (1L << (SUSPEND - 519)) | (1L << (SWAPS - 519)) | (1L << (SWITCHES - 519)) | (1L << (TABLE_NAME - 519)) | (1L << (TABLESPACE - 519)) | (1L << (TEMPORARY - 519)) | (1L << (TEMPTABLE - 519)) | (1L << (THAN - 519)) | (1L << (TRADITIONAL - 519)) | (1L << (TRANSACTION - 519)) | (1L << (TRIGGERS - 519)) | (1L << (TRUNCATE - 519)) | (1L << (UNDEFINED - 519)) | (1L << (UNDOFILE - 519)) | (1L << (UNDO_BUFFER_SIZE - 519)) | (1L << (UNINSTALL - 519)) | (1L << (UNKNOWN - 519)) | (1L << (UNTIL - 519)) | (1L << (UPGRADE - 519)) | (1L << (USER - 519)) | (1L << (USE_FRM - 519)) | (1L << (USER_RESOURCES - 519)) | (1L << (VALIDATION - 519)) | (1L << (VALUE - 519)) | (1L << (VARIABLES - 519)) | (1L << (VIEW - 519)) | (1L << (VISIBLE - 519)))) != 0) || ((((_la - 583)) & ~0x3f) == 0 && ((1L << (_la - 583)) & ((1L << (WAIT - 583)) | (1L << (WARNINGS - 583)) | (1L << (WITHOUT - 583)) | (1L << (WORK - 583)) | (1L << (WRAPPER - 583)) | (1L << (X509 - 583)) | (1L << (XA - 583)) | (1L << (XML - 583)) | (1L << (INTERNAL - 583)) | (1L << (QUARTER - 583)) | (1L << (MONTH - 583)) | (1L << (DAY - 583)) | (1L << (HOUR - 583)) | (1L << (MINUTE - 583)) | (1L << (WEEK - 583)) | (1L << (SECOND - 583)) | (1L << (MICROSECOND - 583)) | (1L << (TABLES - 583)) | (1L << (ROUTINE - 583)) | (1L << (EXECUTE - 583)) | (1L << (FILE - 583)) | (1L << (PROCESS - 583)) | (1L << (RELOAD - 583)) | (1L << (SHUTDOWN - 583)) | (1L << (SUPER - 583)) | (1L << (PRIVILEGES - 583)) | (1L << (SESSION_VARIABLES_ADMIN - 583)) | (1L << (ARMSCII8 - 583)) | (1L << (ASCII - 583)) | (1L << (BIG5 - 583)) | (1L << (CP1250 - 583)) | (1L << (CP1251 - 583)) | (1L << (CP1256 - 583)) | (1L << (CP1257 - 583)) | (1L << (CP850 - 583)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (CP852 - 647)) | (1L << (CP866 - 647)) | (1L << (CP932 - 647)) | (1L << (DEC8 - 647)) | (1L << (EUCJPMS - 647)) | (1L << (EUCKR - 647)) | (1L << (GB2312 - 647)) | (1L << (GBK - 647)) | (1L << (GEOSTD8 - 647)) | (1L << (GREEK - 647)) | (1L << (HEBREW - 647)) | (1L << (HP8 - 647)) | (1L << (KEYBCS2 - 647)) | (1L << (KOI8R - 647)) | (1L << (KOI8U - 647)) | (1L << (LATIN1 - 647)) | (1L << (LATIN2 - 647)) | (1L << (LATIN5 - 647)) | (1L << (LATIN7 - 647)) | (1L << (MACCE - 647)) | (1L << (MACROMAN - 647)) | (1L << (SJIS - 647)) | (1L << (SWE7 - 647)) | (1L << (TIS620 - 647)) | (1L << (UCS2 - 647)) | (1L << (UJIS - 647)) | (1L << (UTF16 - 647)) | (1L << (UTF16LE - 647)) | (1L << (UTF32 - 647)) | (1L << (UTF8 - 647)) | (1L << (UTF8MB3 - 647)) | (1L << (UTF8MB4 - 647)) | (1L << (ARCHIVE - 647)) | (1L << (BLACKHOLE - 647)) | (1L << (CSV - 647)) | (1L << (FEDERATED - 647)) | (1L << (INNODB - 647)) | (1L << (MEMORY - 647)) | (1L << (MRG_MYISAM - 647)) | (1L << (MYISAM - 647)) | (1L << (NDB - 647)) | (1L << (NDBCLUSTER - 647)) | (1L << (PERFORMANCE_SCHEMA - 647)) | (1L << (TOKUDB - 647)) | (1L << (REPEATABLE - 647)) | (1L << (COMMITTED - 647)) | (1L << (UNCOMMITTED - 647)) | (1L << (SERIALIZABLE - 647)) | (1L << (GEOMETRYCOLLECTION - 647)) | (1L << (LINESTRING - 647)) | (1L << (MULTILINESTRING - 647)) | (1L << (MULTIPOINT - 647)) | (1L << (MULTIPOLYGON - 647)) | (1L << (POINT - 647)) | (1L << (POLYGON - 647)) | (1L << (ABS - 647)) | (1L << (ACOS - 647)) | (1L << (ADDDATE - 647)) | (1L << (ADDTIME - 647)) | (1L << (AES_DECRYPT - 647)) | (1L << (AES_ENCRYPT - 647)) | (1L << (AREA - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (ASBINARY - 711)) | (1L << (ASIN - 711)) | (1L << (ASTEXT - 711)) | (1L << (ASWKB - 711)) | (1L << (ASWKT - 711)) | (1L << (ASYMMETRIC_DECRYPT - 711)) | (1L << (ASYMMETRIC_DERIVE - 711)) | (1L << (ASYMMETRIC_ENCRYPT - 711)) | (1L << (ASYMMETRIC_SIGN - 711)) | (1L << (ASYMMETRIC_VERIFY - 711)) | (1L << (ATAN - 711)) | (1L << (ATAN2 - 711)) | (1L << (BENCHMARK - 711)) | (1L << (BIN - 711)) | (1L << (BIT_COUNT - 711)) | (1L << (BIT_LENGTH - 711)) | (1L << (BUFFER - 711)) | (1L << (CATALOG_NAME - 711)) | (1L << (CEIL - 711)) | (1L << (CEILING - 711)) | (1L << (CENTROID - 711)) | (1L << (CHARACTER_LENGTH - 711)) | (1L << (CHARSET - 711)) | (1L << (CHAR_LENGTH - 711)) | (1L << (COERCIBILITY - 711)) | (1L << (COLLATION - 711)) | (1L << (COMPRESS - 711)) | (1L << (CONCAT - 711)) | (1L << (CONCAT_WS - 711)) | (1L << (CONNECTION_ID - 711)) | (1L << (CONV - 711)) | (1L << (CONVERT_TZ - 711)) | (1L << (COS - 711)) | (1L << (COT - 711)) | (1L << (CRC32 - 711)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 711)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 711)) | (1L << (CREATE_DH_PARAMETERS - 711)) | (1L << (CREATE_DIGEST - 711)) | (1L << (CROSSES - 711)) | (1L << (DATEDIFF - 711)) | (1L << (DATE_FORMAT - 711)) | (1L << (DAYNAME - 711)) | (1L << (DAYOFMONTH - 711)) | (1L << (DAYOFWEEK - 711)) | (1L << (DAYOFYEAR - 711)) | (1L << (DECODE - 711)) | (1L << (DEGREES - 711)) | (1L << (DES_DECRYPT - 711)) | (1L << (DES_ENCRYPT - 711)) | (1L << (DIMENSION - 711)) | (1L << (DISJOINT - 711)) | (1L << (ELT - 711)) | (1L << (ENCODE - 711)) | (1L << (ENCRYPT - 711)) | (1L << (ENDPOINT - 711)) | (1L << (ENVELOPE - 711)) | (1L << (EQUALS - 711)) | (1L << (EXP - 711)) | (1L << (EXPORT_SET - 711)) | (1L << (EXTERIORRING - 711)) | (1L << (EXTRACTVALUE - 711)) | (1L << (FIELD - 711)) | (1L << (FIND_IN_SET - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (FLOOR - 775)) | (1L << (FORMAT - 775)) | (1L << (FOUND_ROWS - 775)) | (1L << (FROM_BASE64 - 775)) | (1L << (FROM_DAYS - 775)) | (1L << (FROM_UNIXTIME - 775)) | (1L << (GEOMCOLLFROMTEXT - 775)) | (1L << (GEOMCOLLFROMWKB - 775)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 775)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 775)) | (1L << (GEOMETRYFROMTEXT - 775)) | (1L << (GEOMETRYFROMWKB - 775)) | (1L << (GEOMETRYN - 775)) | (1L << (GEOMETRYTYPE - 775)) | (1L << (GEOMFROMTEXT - 775)) | (1L << (GEOMFROMWKB - 775)) | (1L << (GET_FORMAT - 775)) | (1L << (GET_LOCK - 775)) | (1L << (GLENGTH - 775)) | (1L << (GREATEST - 775)) | (1L << (GTID_SUBSET - 775)) | (1L << (GTID_SUBTRACT - 775)) | (1L << (HEX - 775)) | (1L << (IFNULL - 775)) | (1L << (INET6_ATON - 775)) | (1L << (INET6_NTOA - 775)) | (1L << (INET_ATON - 775)) | (1L << (INET_NTOA - 775)) | (1L << (INSTR - 775)) | (1L << (INTERIORRINGN - 775)) | (1L << (INTERSECTS - 775)) | (1L << (ISCLOSED - 775)) | (1L << (ISEMPTY - 775)) | (1L << (ISNULL - 775)) | (1L << (ISSIMPLE - 775)) | (1L << (IS_FREE_LOCK - 775)) | (1L << (IS_IPV4 - 775)) | (1L << (IS_IPV4_COMPAT - 775)) | (1L << (IS_IPV4_MAPPED - 775)) | (1L << (IS_IPV6 - 775)) | (1L << (IS_USED_LOCK - 775)) | (1L << (LAST_INSERT_ID - 775)) | (1L << (LCASE - 775)) | (1L << (LEAST - 775)) | (1L << (LENGTH - 775)) | (1L << (LINEFROMTEXT - 775)) | (1L << (LINEFROMWKB - 775)) | (1L << (LINESTRINGFROMTEXT - 775)) | (1L << (LINESTRINGFROMWKB - 775)) | (1L << (LN - 775)) | (1L << (LOAD_FILE - 775)) | (1L << (LOCATE - 775)) | (1L << (LOG - 775)) | (1L << (LOG10 - 775)) | (1L << (LOG2 - 775)) | (1L << (LOWER - 775)) | (1L << (LPAD - 775)) | (1L << (LTRIM - 775)) | (1L << (MAKEDATE - 775)) | (1L << (MAKETIME - 775)) | (1L << (MAKE_SET - 775)) | (1L << (MASTER_POS_WAIT - 775)) | (1L << (MBRCONTAINS - 775)) | (1L << (MBRDISJOINT - 775)))) != 0) || ((((_la - 839)) & ~0x3f) == 0 && ((1L << (_la - 839)) & ((1L << (MBREQUAL - 839)) | (1L << (MBRINTERSECTS - 839)) | (1L << (MBROVERLAPS - 839)) | (1L << (MBRTOUCHES - 839)) | (1L << (MBRWITHIN - 839)) | (1L << (MD5 - 839)) | (1L << (MLINEFROMTEXT - 839)) | (1L << (MLINEFROMWKB - 839)) | (1L << (MONTHNAME - 839)) | (1L << (MPOINTFROMTEXT - 839)) | (1L << (MPOINTFROMWKB - 839)) | (1L << (MPOLYFROMTEXT - 839)) | (1L << (MPOLYFROMWKB - 839)) | (1L << (MULTILINESTRINGFROMTEXT - 839)) | (1L << (MULTILINESTRINGFROMWKB - 839)) | (1L << (MULTIPOINTFROMTEXT - 839)) | (1L << (MULTIPOINTFROMWKB - 839)) | (1L << (MULTIPOLYGONFROMTEXT - 839)) | (1L << (MULTIPOLYGONFROMWKB - 839)) | (1L << (NAME_CONST - 839)) | (1L << (NULLIF - 839)) | (1L << (NUMGEOMETRIES - 839)) | (1L << (NUMINTERIORRINGS - 839)) | (1L << (NUMPOINTS - 839)) | (1L << (OCT - 839)) | (1L << (OCTET_LENGTH - 839)) | (1L << (ORD - 839)) | (1L << (OVERLAPS - 839)) | (1L << (PERIOD_ADD - 839)) | (1L << (PERIOD_DIFF - 839)) | (1L << (PI - 839)) | (1L << (POINTFROMTEXT - 839)) | (1L << (POINTFROMWKB - 839)) | (1L << (POINTN - 839)) | (1L << (POLYFROMTEXT - 839)) | (1L << (POLYFROMWKB - 839)) | (1L << (POLYGONFROMTEXT - 839)) | (1L << (POLYGONFROMWKB - 839)) | (1L << (POW - 839)) | (1L << (POWER - 839)) | (1L << (QUOTE - 839)) | (1L << (RADIANS - 839)) | (1L << (RAND - 839)) | (1L << (RANDOM_BYTES - 839)) | (1L << (RELEASE_LOCK - 839)) | (1L << (REVERSE - 839)) | (1L << (ROUND - 839)) | (1L << (ROW_COUNT - 839)) | (1L << (RPAD - 839)) | (1L << (RTRIM - 839)) | (1L << (SEC_TO_TIME - 839)) | (1L << (SESSION_USER - 839)) | (1L << (SHA - 839)) | (1L << (SHA1 - 839)) | (1L << (SHA2 - 839)) | (1L << (SCHEMA_NAME - 839)) | (1L << (SIGN - 839)) | (1L << (SIN - 839)) | (1L << (SLEEP - 839)) | (1L << (SOUNDEX - 839)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 839)) | (1L << (SQRT - 839)) | (1L << (SRID - 839)) | (1L << (STARTPOINT - 839)))) != 0) || ((((_la - 903)) & ~0x3f) == 0 && ((1L << (_la - 903)) & ((1L << (STRCMP - 903)) | (1L << (STR_TO_DATE - 903)) | (1L << (ST_AREA - 903)) | (1L << (ST_ASBINARY - 903)) | (1L << (ST_ASTEXT - 903)) | (1L << (ST_ASWKB - 903)) | (1L << (ST_ASWKT - 903)) | (1L << (ST_BUFFER - 903)) | (1L << (ST_CENTROID - 903)) | (1L << (ST_CONTAINS - 903)) | (1L << (ST_CROSSES - 903)) | (1L << (ST_DIFFERENCE - 903)) | (1L << (ST_DIMENSION - 903)) | (1L << (ST_DISJOINT - 903)) | (1L << (ST_DISTANCE - 903)) | (1L << (ST_ENDPOINT - 903)) | (1L << (ST_ENVELOPE - 903)) | (1L << (ST_EQUALS - 903)) | (1L << (ST_EXTERIORRING - 903)) | (1L << (ST_GEOMCOLLFROMTEXT - 903)) | (1L << (ST_GEOMCOLLFROMTXT - 903)) | (1L << (ST_GEOMCOLLFROMWKB - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 903)) | (1L << (ST_GEOMETRYFROMTEXT - 903)) | (1L << (ST_GEOMETRYFROMWKB - 903)) | (1L << (ST_GEOMETRYN - 903)) | (1L << (ST_GEOMETRYTYPE - 903)) | (1L << (ST_GEOMFROMTEXT - 903)) | (1L << (ST_GEOMFROMWKB - 903)) | (1L << (ST_INTERIORRINGN - 903)) | (1L << (ST_INTERSECTION - 903)) | (1L << (ST_INTERSECTS - 903)) | (1L << (ST_ISCLOSED - 903)) | (1L << (ST_ISEMPTY - 903)) | (1L << (ST_ISSIMPLE - 903)) | (1L << (ST_LINEFROMTEXT - 903)) | (1L << (ST_LINEFROMWKB - 903)) | (1L << (ST_LINESTRINGFROMTEXT - 903)) | (1L << (ST_LINESTRINGFROMWKB - 903)) | (1L << (ST_NUMGEOMETRIES - 903)) | (1L << (ST_NUMINTERIORRING - 903)) | (1L << (ST_NUMINTERIORRINGS - 903)) | (1L << (ST_NUMPOINTS - 903)) | (1L << (ST_OVERLAPS - 903)) | (1L << (ST_POINTFROMTEXT - 903)) | (1L << (ST_POINTFROMWKB - 903)) | (1L << (ST_POINTN - 903)) | (1L << (ST_POLYFROMTEXT - 903)) | (1L << (ST_POLYFROMWKB - 903)) | (1L << (ST_POLYGONFROMTEXT - 903)) | (1L << (ST_POLYGONFROMWKB - 903)) | (1L << (ST_SRID - 903)) | (1L << (ST_STARTPOINT - 903)) | (1L << (ST_SYMDIFFERENCE - 903)) | (1L << (ST_TOUCHES - 903)) | (1L << (ST_UNION - 903)) | (1L << (ST_WITHIN - 903)) | (1L << (ST_X - 903)) | (1L << (ST_Y - 903)) | (1L << (SUBDATE - 903)) | (1L << (SUBSTRING_INDEX - 903)) | (1L << (SUBTIME - 903)) | (1L << (SYSTEM_USER - 903)))) != 0) || ((((_la - 967)) & ~0x3f) == 0 && ((1L << (_la - 967)) & ((1L << (TAN - 967)) | (1L << (TIMEDIFF - 967)) | (1L << (TIMESTAMPADD - 967)) | (1L << (TIMESTAMPDIFF - 967)) | (1L << (TIME_FORMAT - 967)) | (1L << (TIME_TO_SEC - 967)) | (1L << (TOUCHES - 967)) | (1L << (TO_BASE64 - 967)) | (1L << (TO_DAYS - 967)) | (1L << (TO_SECONDS - 967)) | (1L << (UCASE - 967)) | (1L << (UNCOMPRESS - 967)) | (1L << (UNCOMPRESSED_LENGTH - 967)) | (1L << (UNHEX - 967)) | (1L << (UNIX_TIMESTAMP - 967)) | (1L << (UPDATEXML - 967)) | (1L << (UPPER - 967)) | (1L << (UUID - 967)) | (1L << (UUID_SHORT - 967)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 967)) | (1L << (VERSION - 967)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 967)) | (1L << (WEEKDAY - 967)) | (1L << (WEEKOFYEAR - 967)) | (1L << (WEIGHT_STRING - 967)) | (1L << (WITHIN - 967)) | (1L << (YEARWEEK - 967)) | (1L << (Y_FUNCTION - 967)) | (1L << (X_FUNCTION - 967)) | (1L << (PLUS - 967)) | (1L << (MINUS - 967)) | (1L << (EXCLAMATION_SYMBOL - 967)) | (1L << (BIT_NOT_OP - 967)) | (1L << (LR_BRACKET - 967)) | (1L << (ZERO_DECIMAL - 967)) | (1L << (ONE_DECIMAL - 967)) | (1L << (TWO_DECIMAL - 967)))) != 0) || ((((_la - 1034)) & ~0x3f) == 0 && ((1L << (_la - 1034)) & ((1L << (CHARSET_REVERSE_QOUTE_STRING - 1034)) | (1L << (START_NATIONAL_STRING_LITERAL - 1034)) | (1L << (STRING_LITERAL - 1034)) | (1L << (DECIMAL_LITERAL - 1034)) | (1L << (HEXADECIMAL_LITERAL - 1034)) | (1L << (REAL_LITERAL - 1034)) | (1L << (NULL_SPEC_LITERAL - 1034)) | (1L << (BIT_STRING - 1034)) | (1L << (STRING_CHARSET_NAME - 1034)) | (1L << (ID - 1034)) | (1L << (REVERSE_QUOTE_ID - 1034)) | (1L << (LOCAL_ID - 1034)) | (1L << (GLOBAL_ID - 1034)))) != 0)) {
					{
					setState(5812);
					functionArgs();
					}
				}

				setState(5815);
				match(RR_BRACKET);
				}
				break;
			case 4:
				_localctx = new UdfFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5817);
				fullId();
				setState(5818);
				match(LR_BRACKET);
				setState(5820);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CASE) | (1L << CAST) | (1L << CONVERT) | (1L << CURRENT) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DIAGNOSTICS) | (1L << EXISTS) | (1L << FALSE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (IF - 69)) | (1L << (INSERT - 69)) | (1L << (INTERVAL - 69)) | (1L << (LEFT - 69)) | (1L << (NOT - 69)) | (1L << (NULL_LITERAL - 69)) | (1L << (NUMBER - 69)) | (1L << (REPLACE - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (RIGHT - 133)) | (1L << (STACKED - 133)) | (1L << (TRUE - 133)) | (1L << (VALUES - 133)))) != 0) || ((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (DATETIME - 199)) | (1L << (YEAR - 199)) | (1L << (CHAR - 199)) | (1L << (BINARY - 199)) | (1L << (TEXT - 199)) | (1L << (ENUM - 199)) | (1L << (SERIAL - 199)) | (1L << (AVG - 199)) | (1L << (BIT_AND - 199)) | (1L << (BIT_OR - 199)) | (1L << (BIT_XOR - 199)) | (1L << (COUNT - 199)) | (1L << (GROUP_CONCAT - 199)) | (1L << (MAX - 199)) | (1L << (MIN - 199)) | (1L << (STD - 199)) | (1L << (STDDEV - 199)) | (1L << (STDDEV_POP - 199)) | (1L << (STDDEV_SAMP - 199)) | (1L << (SUM - 199)) | (1L << (VAR_POP - 199)) | (1L << (VAR_SAMP - 199)) | (1L << (VARIANCE - 199)) | (1L << (CURRENT_DATE - 199)) | (1L << (CURRENT_TIME - 199)) | (1L << (CURRENT_TIMESTAMP - 199)) | (1L << (LOCALTIME - 199)) | (1L << (CURDATE - 199)) | (1L << (CURTIME - 199)) | (1L << (DATE_ADD - 199)) | (1L << (DATE_SUB - 199)) | (1L << (EXTRACT - 199)) | (1L << (LOCALTIMESTAMP - 199)) | (1L << (NOW - 199)) | (1L << (POSITION - 199)))) != 0) || ((((_la - 263)) & ~0x3f) == 0 && ((1L << (_la - 263)) & ((1L << (SUBSTR - 263)) | (1L << (SUBSTRING - 263)) | (1L << (SYSDATE - 263)) | (1L << (TRIM - 263)) | (1L << (UTC_DATE - 263)) | (1L << (UTC_TIME - 263)) | (1L << (UTC_TIMESTAMP - 263)) | (1L << (ACCOUNT - 263)) | (1L << (ACTION - 263)) | (1L << (AFTER - 263)) | (1L << (AGGREGATE - 263)) | (1L << (ALGORITHM - 263)) | (1L << (ANY - 263)) | (1L << (AT - 263)) | (1L << (AUTHORS - 263)) | (1L << (AUTOCOMMIT - 263)) | (1L << (AUTOEXTEND_SIZE - 263)) | (1L << (AUTO_INCREMENT - 263)) | (1L << (AVG_ROW_LENGTH - 263)) | (1L << (BEGIN - 263)) | (1L << (BINLOG - 263)) | (1L << (BIT - 263)) | (1L << (BLOCK - 263)) | (1L << (BOOL - 263)) | (1L << (BOOLEAN - 263)) | (1L << (BTREE - 263)) | (1L << (CACHE - 263)) | (1L << (CASCADED - 263)) | (1L << (CHAIN - 263)) | (1L << (CHANGED - 263)) | (1L << (CHANNEL - 263)) | (1L << (CHECKSUM - 263)) | (1L << (PAGE_CHECKSUM - 263)) | (1L << (CIPHER - 263)) | (1L << (CLASS_ORIGIN - 263)) | (1L << (CLIENT - 263)) | (1L << (CLOSE - 263)) | (1L << (COALESCE - 263)) | (1L << (CODE - 263)) | (1L << (COLUMNS - 263)) | (1L << (COLUMN_FORMAT - 263)) | (1L << (COLUMN_NAME - 263)) | (1L << (COMMENT - 263)) | (1L << (COMMIT - 263)) | (1L << (COMPACT - 263)) | (1L << (COMPLETION - 263)) | (1L << (COMPRESSED - 263)) | (1L << (COMPRESSION - 263)) | (1L << (CONCURRENT - 263)) | (1L << (CONNECTION - 263)) | (1L << (CONSISTENT - 263)) | (1L << (CONSTRAINT_CATALOG - 263)) | (1L << (CONSTRAINT_SCHEMA - 263)) | (1L << (CONSTRAINT_NAME - 263)) | (1L << (CONTAINS - 263)) | (1L << (CONTEXT - 263)) | (1L << (CONTRIBUTORS - 263)) | (1L << (COPY - 263)) | (1L << (CPU - 263)) | (1L << (CURSOR_NAME - 263)) | (1L << (DATA - 263)) | (1L << (DATAFILE - 263)) | (1L << (DEALLOCATE - 263)) | (1L << (DEFAULT_AUTH - 263)))) != 0) || ((((_la - 327)) & ~0x3f) == 0 && ((1L << (_la - 327)) & ((1L << (DEFINER - 327)) | (1L << (DELAY_KEY_WRITE - 327)) | (1L << (DES_KEY_FILE - 327)) | (1L << (DIRECTORY - 327)) | (1L << (DISABLE - 327)) | (1L << (DISCARD - 327)) | (1L << (DISK - 327)) | (1L << (DO - 327)) | (1L << (DUMPFILE - 327)) | (1L << (DUPLICATE - 327)) | (1L << (DYNAMIC - 327)) | (1L << (ENABLE - 327)) | (1L << (ENCRYPTION - 327)) | (1L << (END - 327)) | (1L << (ENDS - 327)) | (1L << (ENGINE - 327)) | (1L << (ENGINES - 327)) | (1L << (ERROR - 327)) | (1L << (ERRORS - 327)) | (1L << (ESCAPE - 327)) | (1L << (EVEN - 327)) | (1L << (EVENT - 327)) | (1L << (EVENTS - 327)) | (1L << (EVERY - 327)) | (1L << (EXCHANGE - 327)) | (1L << (EXCLUSIVE - 327)) | (1L << (EXPIRE - 327)) | (1L << (EXPORT - 327)) | (1L << (EXTENDED - 327)) | (1L << (EXTENT_SIZE - 327)) | (1L << (FAST - 327)) | (1L << (FAULTS - 327)) | (1L << (FIELDS - 327)) | (1L << (FILE_BLOCK_SIZE - 327)) | (1L << (FILTER - 327)) | (1L << (FIRST - 327)) | (1L << (FIXED - 327)) | (1L << (FLUSH - 327)) | (1L << (FOLLOWS - 327)) | (1L << (FOUND - 327)) | (1L << (FULL - 327)) | (1L << (FUNCTION - 327)) | (1L << (GENERAL - 327)) | (1L << (GLOBAL - 327)) | (1L << (GRANTS - 327)) | (1L << (GROUP_REPLICATION - 327)) | (1L << (HANDLER - 327)) | (1L << (HASH - 327)) | (1L << (HELP - 327)) | (1L << (HOST - 327)) | (1L << (HOSTS - 327)) | (1L << (IDENTIFIED - 327)) | (1L << (IGNORE_SERVER_IDS - 327)) | (1L << (IMPORT - 327)) | (1L << (INDEXES - 327)) | (1L << (INITIAL_SIZE - 327)) | (1L << (INPLACE - 327)) | (1L << (INSERT_METHOD - 327)) | (1L << (INSTALL - 327)) | (1L << (INSTANCE - 327)) | (1L << (INVISIBLE - 327)) | (1L << (INVOKER - 327)) | (1L << (IO - 327)) | (1L << (IO_THREAD - 327)))) != 0) || ((((_la - 391)) & ~0x3f) == 0 && ((1L << (_la - 391)) & ((1L << (IPC - 391)) | (1L << (ISOLATION - 391)) | (1L << (ISSUER - 391)) | (1L << (JSON - 391)) | (1L << (KEY_BLOCK_SIZE - 391)) | (1L << (LANGUAGE - 391)) | (1L << (LAST - 391)) | (1L << (LEAVES - 391)) | (1L << (LESS - 391)) | (1L << (LEVEL - 391)) | (1L << (LIST - 391)) | (1L << (LOCAL - 391)) | (1L << (LOGFILE - 391)) | (1L << (LOGS - 391)) | (1L << (MASTER - 391)) | (1L << (MASTER_AUTO_POSITION - 391)) | (1L << (MASTER_CONNECT_RETRY - 391)) | (1L << (MASTER_DELAY - 391)) | (1L << (MASTER_HEARTBEAT_PERIOD - 391)) | (1L << (MASTER_HOST - 391)) | (1L << (MASTER_LOG_FILE - 391)) | (1L << (MASTER_LOG_POS - 391)) | (1L << (MASTER_PASSWORD - 391)) | (1L << (MASTER_PORT - 391)) | (1L << (MASTER_RETRY_COUNT - 391)) | (1L << (MASTER_SSL - 391)) | (1L << (MASTER_SSL_CA - 391)) | (1L << (MASTER_SSL_CAPATH - 391)) | (1L << (MASTER_SSL_CERT - 391)) | (1L << (MASTER_SSL_CIPHER - 391)) | (1L << (MASTER_SSL_CRL - 391)) | (1L << (MASTER_SSL_CRLPATH - 391)) | (1L << (MASTER_SSL_KEY - 391)) | (1L << (MASTER_TLS_VERSION - 391)) | (1L << (MASTER_USER - 391)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 391)) | (1L << (MAX_QUERIES_PER_HOUR - 391)) | (1L << (MAX_ROWS - 391)) | (1L << (MAX_SIZE - 391)) | (1L << (MAX_UPDATES_PER_HOUR - 391)) | (1L << (MAX_USER_CONNECTIONS - 391)) | (1L << (MEDIUM - 391)) | (1L << (MERGE - 391)) | (1L << (MESSAGE_TEXT - 391)) | (1L << (MID - 391)) | (1L << (MIGRATE - 391)) | (1L << (MIN_ROWS - 391)) | (1L << (MODE - 391)) | (1L << (MODIFY - 391)) | (1L << (MUTEX - 391)) | (1L << (MYSQL - 391)) | (1L << (MYSQL_ERRNO - 391)) | (1L << (NAME - 391)) | (1L << (NAMES - 391)) | (1L << (NCHAR - 391)) | (1L << (NEVER - 391)) | (1L << (NEXT - 391)) | (1L << (NO - 391)) | (1L << (NODEGROUP - 391)) | (1L << (NONE - 391)) | (1L << (OFFLINE - 391)) | (1L << (OFFSET - 391)))) != 0) || ((((_la - 455)) & ~0x3f) == 0 && ((1L << (_la - 455)) & ((1L << (OJ - 455)) | (1L << (OLD_PASSWORD - 455)) | (1L << (ONE - 455)) | (1L << (ONLINE - 455)) | (1L << (ONLY - 455)) | (1L << (OPEN - 455)) | (1L << (OPTIMIZER_COSTS - 455)) | (1L << (OPTIONS - 455)) | (1L << (OWNER - 455)) | (1L << (PACK_KEYS - 455)) | (1L << (PAGE - 455)) | (1L << (PARSER - 455)) | (1L << (PARTIAL - 455)) | (1L << (PARTITIONING - 455)) | (1L << (PARTITIONS - 455)) | (1L << (PASSWORD - 455)) | (1L << (PHASE - 455)) | (1L << (PLUGIN - 455)) | (1L << (PLUGIN_DIR - 455)) | (1L << (PLUGINS - 455)) | (1L << (PORT - 455)) | (1L << (PRECEDES - 455)) | (1L << (PREPARE - 455)) | (1L << (PRESERVE - 455)) | (1L << (PREV - 455)) | (1L << (PROCESSLIST - 455)) | (1L << (PROFILE - 455)) | (1L << (PROFILES - 455)) | (1L << (PROXY - 455)) | (1L << (QUERY - 455)) | (1L << (QUICK - 455)) | (1L << (REBUILD - 455)) | (1L << (RECOVER - 455)) | (1L << (REDO_BUFFER_SIZE - 455)) | (1L << (REDUNDANT - 455)) | (1L << (RELAY - 455)) | (1L << (RELAY_LOG_FILE - 455)) | (1L << (RELAY_LOG_POS - 455)) | (1L << (RELAYLOG - 455)) | (1L << (REMOVE - 455)) | (1L << (REORGANIZE - 455)) | (1L << (REPAIR - 455)) | (1L << (REPLICATE_DO_DB - 455)) | (1L << (REPLICATE_DO_TABLE - 455)) | (1L << (REPLICATE_IGNORE_DB - 455)) | (1L << (REPLICATE_IGNORE_TABLE - 455)) | (1L << (REPLICATE_REWRITE_DB - 455)) | (1L << (REPLICATE_WILD_DO_TABLE - 455)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 455)) | (1L << (REPLICATION - 455)) | (1L << (RESET - 455)) | (1L << (RESUME - 455)) | (1L << (RETURNED_SQLSTATE - 455)) | (1L << (RETURNS - 455)) | (1L << (ROLLBACK - 455)) | (1L << (ROLLUP - 455)) | (1L << (ROTATE - 455)) | (1L << (ROW - 455)) | (1L << (ROWS - 455)) | (1L << (ROW_FORMAT - 455)) | (1L << (SAVEPOINT - 455)) | (1L << (SCHEDULE - 455)) | (1L << (SECURITY - 455)))) != 0) || ((((_la - 519)) & ~0x3f) == 0 && ((1L << (_la - 519)) & ((1L << (SERVER - 519)) | (1L << (SESSION - 519)) | (1L << (SHARE - 519)) | (1L << (SHARED - 519)) | (1L << (SIGNED - 519)) | (1L << (SIMPLE - 519)) | (1L << (SLAVE - 519)) | (1L << (SLOW - 519)) | (1L << (SNAPSHOT - 519)) | (1L << (SOCKET - 519)) | (1L << (SOME - 519)) | (1L << (SONAME - 519)) | (1L << (SOUNDS - 519)) | (1L << (SOURCE - 519)) | (1L << (SQL_AFTER_GTIDS - 519)) | (1L << (SQL_AFTER_MTS_GAPS - 519)) | (1L << (SQL_BEFORE_GTIDS - 519)) | (1L << (SQL_BUFFER_RESULT - 519)) | (1L << (SQL_CACHE - 519)) | (1L << (SQL_NO_CACHE - 519)) | (1L << (SQL_THREAD - 519)) | (1L << (START - 519)) | (1L << (STARTS - 519)) | (1L << (STATS_AUTO_RECALC - 519)) | (1L << (STATS_PERSISTENT - 519)) | (1L << (STATS_SAMPLE_PAGES - 519)) | (1L << (STATUS - 519)) | (1L << (STOP - 519)) | (1L << (STORAGE - 519)) | (1L << (STRING - 519)) | (1L << (SUBCLASS_ORIGIN - 519)) | (1L << (SUBJECT - 519)) | (1L << (SUBPARTITION - 519)) | (1L << (SUBPARTITIONS - 519)) | (1L << (SUSPEND - 519)) | (1L << (SWAPS - 519)) | (1L << (SWITCHES - 519)) | (1L << (TABLE_NAME - 519)) | (1L << (TABLESPACE - 519)) | (1L << (TEMPORARY - 519)) | (1L << (TEMPTABLE - 519)) | (1L << (THAN - 519)) | (1L << (TRADITIONAL - 519)) | (1L << (TRANSACTION - 519)) | (1L << (TRIGGERS - 519)) | (1L << (TRUNCATE - 519)) | (1L << (UNDEFINED - 519)) | (1L << (UNDOFILE - 519)) | (1L << (UNDO_BUFFER_SIZE - 519)) | (1L << (UNINSTALL - 519)) | (1L << (UNKNOWN - 519)) | (1L << (UNTIL - 519)) | (1L << (UPGRADE - 519)) | (1L << (USER - 519)) | (1L << (USE_FRM - 519)) | (1L << (USER_RESOURCES - 519)) | (1L << (VALIDATION - 519)) | (1L << (VALUE - 519)) | (1L << (VARIABLES - 519)) | (1L << (VIEW - 519)) | (1L << (VISIBLE - 519)))) != 0) || ((((_la - 583)) & ~0x3f) == 0 && ((1L << (_la - 583)) & ((1L << (WAIT - 583)) | (1L << (WARNINGS - 583)) | (1L << (WITHOUT - 583)) | (1L << (WORK - 583)) | (1L << (WRAPPER - 583)) | (1L << (X509 - 583)) | (1L << (XA - 583)) | (1L << (XML - 583)) | (1L << (INTERNAL - 583)) | (1L << (QUARTER - 583)) | (1L << (MONTH - 583)) | (1L << (DAY - 583)) | (1L << (HOUR - 583)) | (1L << (MINUTE - 583)) | (1L << (WEEK - 583)) | (1L << (SECOND - 583)) | (1L << (MICROSECOND - 583)) | (1L << (TABLES - 583)) | (1L << (ROUTINE - 583)) | (1L << (EXECUTE - 583)) | (1L << (FILE - 583)) | (1L << (PROCESS - 583)) | (1L << (RELOAD - 583)) | (1L << (SHUTDOWN - 583)) | (1L << (SUPER - 583)) | (1L << (PRIVILEGES - 583)) | (1L << (SESSION_VARIABLES_ADMIN - 583)) | (1L << (ARMSCII8 - 583)) | (1L << (ASCII - 583)) | (1L << (BIG5 - 583)) | (1L << (CP1250 - 583)) | (1L << (CP1251 - 583)) | (1L << (CP1256 - 583)) | (1L << (CP1257 - 583)) | (1L << (CP850 - 583)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (CP852 - 647)) | (1L << (CP866 - 647)) | (1L << (CP932 - 647)) | (1L << (DEC8 - 647)) | (1L << (EUCJPMS - 647)) | (1L << (EUCKR - 647)) | (1L << (GB2312 - 647)) | (1L << (GBK - 647)) | (1L << (GEOSTD8 - 647)) | (1L << (GREEK - 647)) | (1L << (HEBREW - 647)) | (1L << (HP8 - 647)) | (1L << (KEYBCS2 - 647)) | (1L << (KOI8R - 647)) | (1L << (KOI8U - 647)) | (1L << (LATIN1 - 647)) | (1L << (LATIN2 - 647)) | (1L << (LATIN5 - 647)) | (1L << (LATIN7 - 647)) | (1L << (MACCE - 647)) | (1L << (MACROMAN - 647)) | (1L << (SJIS - 647)) | (1L << (SWE7 - 647)) | (1L << (TIS620 - 647)) | (1L << (UCS2 - 647)) | (1L << (UJIS - 647)) | (1L << (UTF16 - 647)) | (1L << (UTF16LE - 647)) | (1L << (UTF32 - 647)) | (1L << (UTF8 - 647)) | (1L << (UTF8MB3 - 647)) | (1L << (UTF8MB4 - 647)) | (1L << (ARCHIVE - 647)) | (1L << (BLACKHOLE - 647)) | (1L << (CSV - 647)) | (1L << (FEDERATED - 647)) | (1L << (INNODB - 647)) | (1L << (MEMORY - 647)) | (1L << (MRG_MYISAM - 647)) | (1L << (MYISAM - 647)) | (1L << (NDB - 647)) | (1L << (NDBCLUSTER - 647)) | (1L << (PERFORMANCE_SCHEMA - 647)) | (1L << (TOKUDB - 647)) | (1L << (REPEATABLE - 647)) | (1L << (COMMITTED - 647)) | (1L << (UNCOMMITTED - 647)) | (1L << (SERIALIZABLE - 647)) | (1L << (GEOMETRYCOLLECTION - 647)) | (1L << (LINESTRING - 647)) | (1L << (MULTILINESTRING - 647)) | (1L << (MULTIPOINT - 647)) | (1L << (MULTIPOLYGON - 647)) | (1L << (POINT - 647)) | (1L << (POLYGON - 647)) | (1L << (ABS - 647)) | (1L << (ACOS - 647)) | (1L << (ADDDATE - 647)) | (1L << (ADDTIME - 647)) | (1L << (AES_DECRYPT - 647)) | (1L << (AES_ENCRYPT - 647)) | (1L << (AREA - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (ASBINARY - 711)) | (1L << (ASIN - 711)) | (1L << (ASTEXT - 711)) | (1L << (ASWKB - 711)) | (1L << (ASWKT - 711)) | (1L << (ASYMMETRIC_DECRYPT - 711)) | (1L << (ASYMMETRIC_DERIVE - 711)) | (1L << (ASYMMETRIC_ENCRYPT - 711)) | (1L << (ASYMMETRIC_SIGN - 711)) | (1L << (ASYMMETRIC_VERIFY - 711)) | (1L << (ATAN - 711)) | (1L << (ATAN2 - 711)) | (1L << (BENCHMARK - 711)) | (1L << (BIN - 711)) | (1L << (BIT_COUNT - 711)) | (1L << (BIT_LENGTH - 711)) | (1L << (BUFFER - 711)) | (1L << (CATALOG_NAME - 711)) | (1L << (CEIL - 711)) | (1L << (CEILING - 711)) | (1L << (CENTROID - 711)) | (1L << (CHARACTER_LENGTH - 711)) | (1L << (CHARSET - 711)) | (1L << (CHAR_LENGTH - 711)) | (1L << (COERCIBILITY - 711)) | (1L << (COLLATION - 711)) | (1L << (COMPRESS - 711)) | (1L << (CONCAT - 711)) | (1L << (CONCAT_WS - 711)) | (1L << (CONNECTION_ID - 711)) | (1L << (CONV - 711)) | (1L << (CONVERT_TZ - 711)) | (1L << (COS - 711)) | (1L << (COT - 711)) | (1L << (CRC32 - 711)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 711)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 711)) | (1L << (CREATE_DH_PARAMETERS - 711)) | (1L << (CREATE_DIGEST - 711)) | (1L << (CROSSES - 711)) | (1L << (DATEDIFF - 711)) | (1L << (DATE_FORMAT - 711)) | (1L << (DAYNAME - 711)) | (1L << (DAYOFMONTH - 711)) | (1L << (DAYOFWEEK - 711)) | (1L << (DAYOFYEAR - 711)) | (1L << (DECODE - 711)) | (1L << (DEGREES - 711)) | (1L << (DES_DECRYPT - 711)) | (1L << (DES_ENCRYPT - 711)) | (1L << (DIMENSION - 711)) | (1L << (DISJOINT - 711)) | (1L << (ELT - 711)) | (1L << (ENCODE - 711)) | (1L << (ENCRYPT - 711)) | (1L << (ENDPOINT - 711)) | (1L << (ENVELOPE - 711)) | (1L << (EQUALS - 711)) | (1L << (EXP - 711)) | (1L << (EXPORT_SET - 711)) | (1L << (EXTERIORRING - 711)) | (1L << (EXTRACTVALUE - 711)) | (1L << (FIELD - 711)) | (1L << (FIND_IN_SET - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (FLOOR - 775)) | (1L << (FORMAT - 775)) | (1L << (FOUND_ROWS - 775)) | (1L << (FROM_BASE64 - 775)) | (1L << (FROM_DAYS - 775)) | (1L << (FROM_UNIXTIME - 775)) | (1L << (GEOMCOLLFROMTEXT - 775)) | (1L << (GEOMCOLLFROMWKB - 775)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 775)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 775)) | (1L << (GEOMETRYFROMTEXT - 775)) | (1L << (GEOMETRYFROMWKB - 775)) | (1L << (GEOMETRYN - 775)) | (1L << (GEOMETRYTYPE - 775)) | (1L << (GEOMFROMTEXT - 775)) | (1L << (GEOMFROMWKB - 775)) | (1L << (GET_FORMAT - 775)) | (1L << (GET_LOCK - 775)) | (1L << (GLENGTH - 775)) | (1L << (GREATEST - 775)) | (1L << (GTID_SUBSET - 775)) | (1L << (GTID_SUBTRACT - 775)) | (1L << (HEX - 775)) | (1L << (IFNULL - 775)) | (1L << (INET6_ATON - 775)) | (1L << (INET6_NTOA - 775)) | (1L << (INET_ATON - 775)) | (1L << (INET_NTOA - 775)) | (1L << (INSTR - 775)) | (1L << (INTERIORRINGN - 775)) | (1L << (INTERSECTS - 775)) | (1L << (ISCLOSED - 775)) | (1L << (ISEMPTY - 775)) | (1L << (ISNULL - 775)) | (1L << (ISSIMPLE - 775)) | (1L << (IS_FREE_LOCK - 775)) | (1L << (IS_IPV4 - 775)) | (1L << (IS_IPV4_COMPAT - 775)) | (1L << (IS_IPV4_MAPPED - 775)) | (1L << (IS_IPV6 - 775)) | (1L << (IS_USED_LOCK - 775)) | (1L << (LAST_INSERT_ID - 775)) | (1L << (LCASE - 775)) | (1L << (LEAST - 775)) | (1L << (LENGTH - 775)) | (1L << (LINEFROMTEXT - 775)) | (1L << (LINEFROMWKB - 775)) | (1L << (LINESTRINGFROMTEXT - 775)) | (1L << (LINESTRINGFROMWKB - 775)) | (1L << (LN - 775)) | (1L << (LOAD_FILE - 775)) | (1L << (LOCATE - 775)) | (1L << (LOG - 775)) | (1L << (LOG10 - 775)) | (1L << (LOG2 - 775)) | (1L << (LOWER - 775)) | (1L << (LPAD - 775)) | (1L << (LTRIM - 775)) | (1L << (MAKEDATE - 775)) | (1L << (MAKETIME - 775)) | (1L << (MAKE_SET - 775)) | (1L << (MASTER_POS_WAIT - 775)) | (1L << (MBRCONTAINS - 775)) | (1L << (MBRDISJOINT - 775)))) != 0) || ((((_la - 839)) & ~0x3f) == 0 && ((1L << (_la - 839)) & ((1L << (MBREQUAL - 839)) | (1L << (MBRINTERSECTS - 839)) | (1L << (MBROVERLAPS - 839)) | (1L << (MBRTOUCHES - 839)) | (1L << (MBRWITHIN - 839)) | (1L << (MD5 - 839)) | (1L << (MLINEFROMTEXT - 839)) | (1L << (MLINEFROMWKB - 839)) | (1L << (MONTHNAME - 839)) | (1L << (MPOINTFROMTEXT - 839)) | (1L << (MPOINTFROMWKB - 839)) | (1L << (MPOLYFROMTEXT - 839)) | (1L << (MPOLYFROMWKB - 839)) | (1L << (MULTILINESTRINGFROMTEXT - 839)) | (1L << (MULTILINESTRINGFROMWKB - 839)) | (1L << (MULTIPOINTFROMTEXT - 839)) | (1L << (MULTIPOINTFROMWKB - 839)) | (1L << (MULTIPOLYGONFROMTEXT - 839)) | (1L << (MULTIPOLYGONFROMWKB - 839)) | (1L << (NAME_CONST - 839)) | (1L << (NULLIF - 839)) | (1L << (NUMGEOMETRIES - 839)) | (1L << (NUMINTERIORRINGS - 839)) | (1L << (NUMPOINTS - 839)) | (1L << (OCT - 839)) | (1L << (OCTET_LENGTH - 839)) | (1L << (ORD - 839)) | (1L << (OVERLAPS - 839)) | (1L << (PERIOD_ADD - 839)) | (1L << (PERIOD_DIFF - 839)) | (1L << (PI - 839)) | (1L << (POINTFROMTEXT - 839)) | (1L << (POINTFROMWKB - 839)) | (1L << (POINTN - 839)) | (1L << (POLYFROMTEXT - 839)) | (1L << (POLYFROMWKB - 839)) | (1L << (POLYGONFROMTEXT - 839)) | (1L << (POLYGONFROMWKB - 839)) | (1L << (POW - 839)) | (1L << (POWER - 839)) | (1L << (QUOTE - 839)) | (1L << (RADIANS - 839)) | (1L << (RAND - 839)) | (1L << (RANDOM_BYTES - 839)) | (1L << (RELEASE_LOCK - 839)) | (1L << (REVERSE - 839)) | (1L << (ROUND - 839)) | (1L << (ROW_COUNT - 839)) | (1L << (RPAD - 839)) | (1L << (RTRIM - 839)) | (1L << (SEC_TO_TIME - 839)) | (1L << (SESSION_USER - 839)) | (1L << (SHA - 839)) | (1L << (SHA1 - 839)) | (1L << (SHA2 - 839)) | (1L << (SCHEMA_NAME - 839)) | (1L << (SIGN - 839)) | (1L << (SIN - 839)) | (1L << (SLEEP - 839)) | (1L << (SOUNDEX - 839)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 839)) | (1L << (SQRT - 839)) | (1L << (SRID - 839)) | (1L << (STARTPOINT - 839)))) != 0) || ((((_la - 903)) & ~0x3f) == 0 && ((1L << (_la - 903)) & ((1L << (STRCMP - 903)) | (1L << (STR_TO_DATE - 903)) | (1L << (ST_AREA - 903)) | (1L << (ST_ASBINARY - 903)) | (1L << (ST_ASTEXT - 903)) | (1L << (ST_ASWKB - 903)) | (1L << (ST_ASWKT - 903)) | (1L << (ST_BUFFER - 903)) | (1L << (ST_CENTROID - 903)) | (1L << (ST_CONTAINS - 903)) | (1L << (ST_CROSSES - 903)) | (1L << (ST_DIFFERENCE - 903)) | (1L << (ST_DIMENSION - 903)) | (1L << (ST_DISJOINT - 903)) | (1L << (ST_DISTANCE - 903)) | (1L << (ST_ENDPOINT - 903)) | (1L << (ST_ENVELOPE - 903)) | (1L << (ST_EQUALS - 903)) | (1L << (ST_EXTERIORRING - 903)) | (1L << (ST_GEOMCOLLFROMTEXT - 903)) | (1L << (ST_GEOMCOLLFROMTXT - 903)) | (1L << (ST_GEOMCOLLFROMWKB - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 903)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 903)) | (1L << (ST_GEOMETRYFROMTEXT - 903)) | (1L << (ST_GEOMETRYFROMWKB - 903)) | (1L << (ST_GEOMETRYN - 903)) | (1L << (ST_GEOMETRYTYPE - 903)) | (1L << (ST_GEOMFROMTEXT - 903)) | (1L << (ST_GEOMFROMWKB - 903)) | (1L << (ST_INTERIORRINGN - 903)) | (1L << (ST_INTERSECTION - 903)) | (1L << (ST_INTERSECTS - 903)) | (1L << (ST_ISCLOSED - 903)) | (1L << (ST_ISEMPTY - 903)) | (1L << (ST_ISSIMPLE - 903)) | (1L << (ST_LINEFROMTEXT - 903)) | (1L << (ST_LINEFROMWKB - 903)) | (1L << (ST_LINESTRINGFROMTEXT - 903)) | (1L << (ST_LINESTRINGFROMWKB - 903)) | (1L << (ST_NUMGEOMETRIES - 903)) | (1L << (ST_NUMINTERIORRING - 903)) | (1L << (ST_NUMINTERIORRINGS - 903)) | (1L << (ST_NUMPOINTS - 903)) | (1L << (ST_OVERLAPS - 903)) | (1L << (ST_POINTFROMTEXT - 903)) | (1L << (ST_POINTFROMWKB - 903)) | (1L << (ST_POINTN - 903)) | (1L << (ST_POLYFROMTEXT - 903)) | (1L << (ST_POLYFROMWKB - 903)) | (1L << (ST_POLYGONFROMTEXT - 903)) | (1L << (ST_POLYGONFROMWKB - 903)) | (1L << (ST_SRID - 903)) | (1L << (ST_STARTPOINT - 903)) | (1L << (ST_SYMDIFFERENCE - 903)) | (1L << (ST_TOUCHES - 903)) | (1L << (ST_UNION - 903)) | (1L << (ST_WITHIN - 903)) | (1L << (ST_X - 903)) | (1L << (ST_Y - 903)) | (1L << (SUBDATE - 903)) | (1L << (SUBSTRING_INDEX - 903)) | (1L << (SUBTIME - 903)) | (1L << (SYSTEM_USER - 903)))) != 0) || ((((_la - 967)) & ~0x3f) == 0 && ((1L << (_la - 967)) & ((1L << (TAN - 967)) | (1L << (TIMEDIFF - 967)) | (1L << (TIMESTAMPADD - 967)) | (1L << (TIMESTAMPDIFF - 967)) | (1L << (TIME_FORMAT - 967)) | (1L << (TIME_TO_SEC - 967)) | (1L << (TOUCHES - 967)) | (1L << (TO_BASE64 - 967)) | (1L << (TO_DAYS - 967)) | (1L << (TO_SECONDS - 967)) | (1L << (UCASE - 967)) | (1L << (UNCOMPRESS - 967)) | (1L << (UNCOMPRESSED_LENGTH - 967)) | (1L << (UNHEX - 967)) | (1L << (UNIX_TIMESTAMP - 967)) | (1L << (UPDATEXML - 967)) | (1L << (UPPER - 967)) | (1L << (UUID - 967)) | (1L << (UUID_SHORT - 967)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 967)) | (1L << (VERSION - 967)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 967)) | (1L << (WEEKDAY - 967)) | (1L << (WEEKOFYEAR - 967)) | (1L << (WEIGHT_STRING - 967)) | (1L << (WITHIN - 967)) | (1L << (YEARWEEK - 967)) | (1L << (Y_FUNCTION - 967)) | (1L << (X_FUNCTION - 967)) | (1L << (PLUS - 967)) | (1L << (MINUS - 967)) | (1L << (EXCLAMATION_SYMBOL - 967)) | (1L << (BIT_NOT_OP - 967)) | (1L << (LR_BRACKET - 967)) | (1L << (ZERO_DECIMAL - 967)) | (1L << (ONE_DECIMAL - 967)) | (1L << (TWO_DECIMAL - 967)))) != 0) || ((((_la - 1034)) & ~0x3f) == 0 && ((1L << (_la - 1034)) & ((1L << (CHARSET_REVERSE_QOUTE_STRING - 1034)) | (1L << (START_NATIONAL_STRING_LITERAL - 1034)) | (1L << (STRING_LITERAL - 1034)) | (1L << (DECIMAL_LITERAL - 1034)) | (1L << (HEXADECIMAL_LITERAL - 1034)) | (1L << (REAL_LITERAL - 1034)) | (1L << (NULL_SPEC_LITERAL - 1034)) | (1L << (BIT_STRING - 1034)) | (1L << (STRING_CHARSET_NAME - 1034)) | (1L << (ID - 1034)) | (1L << (REVERSE_QUOTE_ID - 1034)) | (1L << (LOCAL_ID - 1034)) | (1L << (GLOBAL_ID - 1034)))) != 0)) {
					{
					setState(5819);
					functionArgs();
					}
				}

				setState(5822);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new PasswordFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5824);
				passwordFunctionClause();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SpecificFunctionContext extends ParserRuleContext {
		public SpecificFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_specificFunction; }
	 
		public SpecificFunctionContext() { }
		public void copyFrom(SpecificFunctionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PositionFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext positionString;
		public ExpressionContext positionExpression;
		public StringLiteralContext inString;
		public ExpressionContext inExpression;
		public TerminalNode POSITION() { return getToken(MySqlParser.POSITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<StringLiteralContext> stringLiteral() {
			return getRuleContexts(StringLiteralContext.class);
		}
		public StringLiteralContext stringLiteral(int i) {
			return getRuleContext(StringLiteralContext.class,i);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public PositionFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPositionFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPositionFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPositionFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class TrimFunctionCallContext extends SpecificFunctionContext {
		public Token positioinForm;
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public StringLiteralContext fromString;
		public ExpressionContext fromExpression;
		public TerminalNode TRIM() { return getToken(MySqlParser.TRIM, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode BOTH() { return getToken(MySqlParser.BOTH, 0); }
		public TerminalNode LEADING() { return getToken(MySqlParser.LEADING, 0); }
		public TerminalNode TRAILING() { return getToken(MySqlParser.TRAILING, 0); }
		public List<StringLiteralContext> stringLiteral() {
			return getRuleContexts(StringLiteralContext.class);
		}
		public StringLiteralContext stringLiteral(int i) {
			return getRuleContext(StringLiteralContext.class,i);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TrimFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTrimFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTrimFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTrimFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SimpleFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode CURRENT_DATE() { return getToken(MySqlParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySqlParser.CURRENT_TIME, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURRENT_USER() { return getToken(MySqlParser.CURRENT_USER, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public SimpleFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSimpleFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CharFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CharFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCharFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class WeightFunctionCallContext extends SpecificFunctionContext {
		public Token stringFormat;
		public TerminalNode WEIGHT_STRING() { return getToken(MySqlParser.WEIGHT_STRING, 0); }
		public List<TerminalNode> LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List<TerminalNode> RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public LevelsInWeightStringContext levelsInWeightString() {
			return getRuleContext(LevelsInWeightStringContext.class,0);
		}
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public WeightFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWeightFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWeightFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitWeightFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GetFormatFunctionCallContext extends SpecificFunctionContext {
		public Token datetimeFormat;
		public TerminalNode GET_FORMAT() { return getToken(MySqlParser.GET_FORMAT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public GetFormatFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGetFormatFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGetFormatFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitGetFormatFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CaseFunctionCallContext extends SpecificFunctionContext {
		public FunctionArgContext elseArg;
		public TerminalNode CASE() { return getToken(MySqlParser.CASE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List<CaseFuncAlternativeContext> caseFuncAlternative() {
			return getRuleContexts(CaseFuncAlternativeContext.class);
		}
		public CaseFuncAlternativeContext caseFuncAlternative(int i) {
			return getRuleContext(CaseFuncAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public CaseFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCaseFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ExtractFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public TerminalNode EXTRACT() { return getToken(MySqlParser.EXTRACT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ExtractFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExtractFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExtractFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExtractFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DataTypeFunctionCallContext extends SpecificFunctionContext {
		public Token separator;
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ConvertedDataTypeContext convertedDataType() {
			return getRuleContext(ConvertedDataTypeContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode CAST() { return getToken(MySqlParser.CAST, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public DataTypeFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDataTypeFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDataTypeFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDataTypeFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ValuesFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ValuesFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterValuesFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitValuesFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitValuesFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubstrFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public DecimalLiteralContext fromDecimal;
		public ExpressionContext fromExpression;
		public DecimalLiteralContext forDecimal;
		public ExpressionContext forExpression;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode SUBSTR() { return getToken(MySqlParser.SUBSTR, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySqlParser.SUBSTRING, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public SubstrFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubstrFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubstrFunctionCall(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubstrFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SpecificFunctionContext specificFunction() throws RecognitionException {
		SpecificFunctionContext _localctx = new SpecificFunctionContext(_ctx, getState());
		enterRule(_localctx, 584, RULE_specificFunction);
		int _la;
		try {
			setState(5984);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,883,_ctx) ) {
			case 1:
				_localctx = new SimpleFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5827);
				_la = _input.LA(1);
				if ( !(_la==CURRENT_USER || ((((_la - 251)) & ~0x3f) == 0 && ((1L << (_la - 251)) & ((1L << (CURRENT_DATE - 251)) | (1L << (CURRENT_TIME - 251)) | (1L << (CURRENT_TIMESTAMP - 251)) | (1L << (LOCALTIME - 251)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 2:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5828);
				match(CONVERT);
				setState(5829);
				match(LR_BRACKET);
				setState(5830);
				expression(0);
				setState(5831);
				((DataTypeFunctionCallContext)_localctx).separator = match(COMMA);
				setState(5832);
				convertedDataType();
				setState(5833);
				match(RR_BRACKET);
				}
				break;
			case 3:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5835);
				match(CONVERT);
				setState(5836);
				match(LR_BRACKET);
				setState(5837);
				expression(0);
				setState(5838);
				match(USING);
				setState(5839);
				charsetName();
				setState(5840);
				match(RR_BRACKET);
				}
				break;
			case 4:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5842);
				match(CAST);
				setState(5843);
				match(LR_BRACKET);
				setState(5844);
				expression(0);
				setState(5845);
				match(AS);
				setState(5846);
				convertedDataType();
				setState(5847);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new ValuesFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5849);
				match(VALUES);
				setState(5850);
				match(LR_BRACKET);
				setState(5851);
				fullColumnName();
				setState(5852);
				match(RR_BRACKET);
				}
				break;
			case 6:
				_localctx = new CaseFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(5854);
				match(CASE);
				setState(5855);
				expression(0);
				setState(5857); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(5856);
					caseFuncAlternative();
					}
					}
					setState(5859); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(5863);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(5861);
					match(ELSE);
					setState(5862);
					((CaseFunctionCallContext)_localctx).elseArg = functionArg();
					}
				}

				setState(5865);
				match(END);
				}
				break;
			case 7:
				_localctx = new CaseFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(5867);
				match(CASE);
				setState(5869); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(5868);
					caseFuncAlternative();
					}
					}
					setState(5871); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(5875);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(5873);
					match(ELSE);
					setState(5874);
					((CaseFunctionCallContext)_localctx).elseArg = functionArg();
					}
				}

				setState(5877);
				match(END);
				}
				break;
			case 8:
				_localctx = new CharFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(5879);
				match(CHAR);
				setState(5880);
				match(LR_BRACKET);
				setState(5881);
				functionArgs();
				setState(5884);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(5882);
					match(USING);
					setState(5883);
					charsetName();
					}
				}

				setState(5886);
				match(RR_BRACKET);
				}
				break;
			case 9:
				_localctx = new PositionFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(5888);
				match(POSITION);
				setState(5889);
				match(LR_BRACKET);
				setState(5892);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,869,_ctx) ) {
				case 1:
					{
					setState(5890);
					((PositionFunctionCallContext)_localctx).positionString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5891);
					((PositionFunctionCallContext)_localctx).positionExpression = expression(0);
					}
					break;
				}
				setState(5894);
				match(IN);
				setState(5897);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,870,_ctx) ) {
				case 1:
					{
					setState(5895);
					((PositionFunctionCallContext)_localctx).inString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5896);
					((PositionFunctionCallContext)_localctx).inExpression = expression(0);
					}
					break;
				}
				setState(5899);
				match(RR_BRACKET);
				}
				break;
			case 10:
				_localctx = new SubstrFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(5901);
				_la = _input.LA(1);
				if ( !(_la==SUBSTR || _la==SUBSTRING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5902);
				match(LR_BRACKET);
				setState(5905);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,871,_ctx) ) {
				case 1:
					{
					setState(5903);
					((SubstrFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5904);
					((SubstrFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(5907);
				match(FROM);
				setState(5910);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,872,_ctx) ) {
				case 1:
					{
					setState(5908);
					((SubstrFunctionCallContext)_localctx).fromDecimal = decimalLiteral();
					}
					break;
				case 2:
					{
					setState(5909);
					((SubstrFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(5917);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(5912);
					match(FOR);
					setState(5915);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,873,_ctx) ) {
					case 1:
						{
						setState(5913);
						((SubstrFunctionCallContext)_localctx).forDecimal = decimalLiteral();
						}
						break;
					case 2:
						{
						setState(5914);
						((SubstrFunctionCallContext)_localctx).forExpression = expression(0);
						}
						break;
					}
					}
				}

				setState(5919);
				match(RR_BRACKET);
				}
				break;
			case 11:
				_localctx = new TrimFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(5921);
				match(TRIM);
				setState(5922);
				match(LR_BRACKET);
				setState(5923);
				((TrimFunctionCallContext)_localctx).positioinForm = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) {
					((TrimFunctionCallContext)_localctx).positioinForm = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5926);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,875,_ctx) ) {
				case 1:
					{
					setState(5924);
					((TrimFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5925);
					((TrimFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(5928);
				match(FROM);
				setState(5931);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,876,_ctx) ) {
				case 1:
					{
					setState(5929);
					((TrimFunctionCallContext)_localctx).fromString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5930);
					((TrimFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(5933);
				match(RR_BRACKET);
				}
				break;
			case 12:
				_localctx = new TrimFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(5935);
				match(TRIM);
				setState(5936);
				match(LR_BRACKET);
				setState(5939);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,877,_ctx) ) {
				case 1:
					{
					setState(5937);
					((TrimFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5938);
					((TrimFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(5941);
				match(FROM);
				setState(5944);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,878,_ctx) ) {
				case 1:
					{
					setState(5942);
					((TrimFunctionCallContext)_localctx).fromString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5943);
					((TrimFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(5946);
				match(RR_BRACKET);
				}
				break;
			case 13:
				_localctx = new WeightFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(5948);
				match(WEIGHT_STRING);
				setState(5949);
				match(LR_BRACKET);
				setState(5952);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,879,_ctx) ) {
				case 1:
					{
					setState(5950);
					stringLiteral();
					}
					break;
				case 2:
					{
					setState(5951);
					expression(0);
					}
					break;
				}
				setState(5960);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(5954);
					match(AS);
					setState(5955);
					((WeightFunctionCallContext)_localctx).stringFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==CHAR || _la==BINARY) ) {
						((WeightFunctionCallContext)_localctx).stringFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5956);
					match(LR_BRACKET);
					setState(5957);
					decimalLiteral();
					setState(5958);
					match(RR_BRACKET);
					}
				}

				setState(5963);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LEVEL) {
					{
					setState(5962);
					levelsInWeightString();
					}
				}

				setState(5965);
				match(RR_BRACKET);
				}
				break;
			case 14:
				_localctx = new ExtractFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(5967);
				match(EXTRACT);
				setState(5968);
				match(LR_BRACKET);
				setState(5969);
				intervalType();
				setState(5970);
				match(FROM);
				setState(5973);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,882,_ctx) ) {
				case 1:
					{
					setState(5971);
					((ExtractFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(5972);
					((ExtractFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(5975);
				match(RR_BRACKET);
				}
				break;
			case 15:
				_localctx = new GetFormatFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(5977);
				match(GET_FORMAT);
				setState(5978);
				match(LR_BRACKET);
				setState(5979);
				((GetFormatFunctionCallContext)_localctx).datetimeFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (DATETIME - 199)))) != 0)) ) {
					((GetFormatFunctionCallContext)_localctx).datetimeFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5980);
				match(COMMA);
				setState(5981);
				stringLiteral();
				setState(5982);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseFuncAlternativeContext extends ParserRuleContext {
		public FunctionArgContext condition;
		public FunctionArgContext consequent;
		public TerminalNode WHEN() { return getToken(MySqlParser.WHEN, 0); }
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public List<FunctionArgContext> functionArg() {
			return getRuleContexts(FunctionArgContext.class);
		}
		public FunctionArgContext functionArg(int i) {
			return getRuleContext(FunctionArgContext.class,i);
		}
		public CaseFuncAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseFuncAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseFuncAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseFuncAlternative(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCaseFuncAlternative(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseFuncAlternativeContext caseFuncAlternative() throws RecognitionException {
		CaseFuncAlternativeContext _localctx = new CaseFuncAlternativeContext(_ctx, getState());
		enterRule(_localctx, 586, RULE_caseFuncAlternative);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5986);
			match(WHEN);
			setState(5987);
			((CaseFuncAlternativeContext)_localctx).condition = functionArg();
			setState(5988);
			match(THEN);
			setState(5989);
			((CaseFuncAlternativeContext)_localctx).consequent = functionArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelsInWeightStringContext extends ParserRuleContext {
		public LevelsInWeightStringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelsInWeightString; }
	 
		public LevelsInWeightStringContext() { }
		public void copyFrom(LevelsInWeightStringContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class LevelWeightRangeContext extends LevelsInWeightStringContext {
		public DecimalLiteralContext firstLevel;
		public DecimalLiteralContext lastLevel;
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public List<DecimalLiteralContext> decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public LevelWeightRangeContext(LevelsInWeightStringContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelWeightRange(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelWeightRange(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLevelWeightRange(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class LevelWeightListContext extends LevelsInWeightStringContext {
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public List<LevelInWeightListElementContext> levelInWeightListElement() {
			return getRuleContexts(LevelInWeightListElementContext.class);
		}
		public LevelInWeightListElementContext levelInWeightListElement(int i) {
			return getRuleContext(LevelInWeightListElementContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LevelWeightListContext(LevelsInWeightStringContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelWeightList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelWeightList(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLevelWeightList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LevelsInWeightStringContext levelsInWeightString() throws RecognitionException {
		LevelsInWeightStringContext _localctx = new LevelsInWeightStringContext(_ctx, getState());
		enterRule(_localctx, 588, RULE_levelsInWeightString);
		int _la;
		try {
			setState(6005);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,885,_ctx) ) {
			case 1:
				_localctx = new LevelWeightListContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5991);
				match(LEVEL);
				setState(5992);
				levelInWeightListElement();
				setState(5997);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5993);
					match(COMMA);
					setState(5994);
					levelInWeightListElement();
					}
					}
					setState(5999);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new LevelWeightRangeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6000);
				match(LEVEL);
				setState(6001);
				((LevelWeightRangeContext)_localctx).firstLevel = decimalLiteral();
				setState(6002);
				match(MINUS);
				setState(6003);
				((LevelWeightRangeContext)_localctx).lastLevel = decimalLiteral();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelInWeightListElementContext extends ParserRuleContext {
		public Token orderType;
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public TerminalNode REVERSE() { return getToken(MySqlParser.REVERSE, 0); }
		public LevelInWeightListElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelInWeightListElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelInWeightListElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelInWeightListElement(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLevelInWeightListElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LevelInWeightListElementContext levelInWeightListElement() throws RecognitionException {
		LevelInWeightListElementContext _localctx = new LevelInWeightListElementContext(_ctx, getState());
		enterRule(_localctx, 590, RULE_levelInWeightListElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6007);
			decimalLiteral();
			setState(6009);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC || _la==REVERSE) {
				{
				setState(6008);
				((LevelInWeightListElementContext)_localctx).orderType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC || _la==REVERSE) ) {
					((LevelInWeightListElementContext)_localctx).orderType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregateWindowedFunctionContext extends ParserRuleContext {
		public Token aggregator;
		public Token starArg;
		public Token separator;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode AVG() { return getToken(MySqlParser.AVG, 0); }
		public TerminalNode MAX() { return getToken(MySqlParser.MAX, 0); }
		public TerminalNode MIN() { return getToken(MySqlParser.MIN, 0); }
		public TerminalNode SUM() { return getToken(MySqlParser.SUM, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public TerminalNode BIT_AND() { return getToken(MySqlParser.BIT_AND, 0); }
		public TerminalNode BIT_OR() { return getToken(MySqlParser.BIT_OR, 0); }
		public TerminalNode BIT_XOR() { return getToken(MySqlParser.BIT_XOR, 0); }
		public TerminalNode STD() { return getToken(MySqlParser.STD, 0); }
		public TerminalNode STDDEV() { return getToken(MySqlParser.STDDEV, 0); }
		public TerminalNode STDDEV_POP() { return getToken(MySqlParser.STDDEV_POP, 0); }
		public TerminalNode STDDEV_SAMP() { return getToken(MySqlParser.STDDEV_SAMP, 0); }
		public TerminalNode VAR_POP() { return getToken(MySqlParser.VAR_POP, 0); }
		public TerminalNode VAR_SAMP() { return getToken(MySqlParser.VAR_SAMP, 0); }
		public TerminalNode VARIANCE() { return getToken(MySqlParser.VARIANCE, 0); }
		public TerminalNode GROUP_CONCAT() { return getToken(MySqlParser.GROUP_CONCAT, 0); }
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List<OrderByExpressionContext> orderByExpression() {
			return getRuleContexts(OrderByExpressionContext.class);
		}
		public OrderByExpressionContext orderByExpression(int i) {
			return getRuleContext(OrderByExpressionContext.class,i);
		}
		public TerminalNode SEPARATOR() { return getToken(MySqlParser.SEPARATOR, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AggregateWindowedFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregateWindowedFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAggregateWindowedFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAggregateWindowedFunction(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitAggregateWindowedFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregateWindowedFunctionContext aggregateWindowedFunction() throws RecognitionException {
		AggregateWindowedFunctionContext _localctx = new AggregateWindowedFunctionContext(_ctx, getState());
		enterRule(_localctx, 592, RULE_aggregateWindowedFunction);
		int _la;
		try {
			setState(6067);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,895,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6011);
				_la = _input.LA(1);
				if ( !(((((_la - 235)) & ~0x3f) == 0 && ((1L << (_la - 235)) & ((1L << (AVG - 235)) | (1L << (MAX - 235)) | (1L << (MIN - 235)) | (1L << (SUM - 235)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6012);
				match(LR_BRACKET);
				setState(6014);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALL || _la==DISTINCT) {
					{
					setState(6013);
					((AggregateWindowedFunctionContext)_localctx).aggregator = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ALL || _la==DISTINCT) ) {
						((AggregateWindowedFunctionContext)_localctx).aggregator = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(6016);
				functionArg();
				setState(6017);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6019);
				match(COUNT);
				setState(6020);
				match(LR_BRACKET);
				setState(6026);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STAR:
					{
					setState(6021);
					((AggregateWindowedFunctionContext)_localctx).starArg = match(STAR);
					}
					break;
				case ALL:
				case CASE:
				case CAST:
				case CONVERT:
				case CURRENT:
				case CURRENT_USER:
				case DATABASE:
				case DIAGNOSTICS:
				case EXISTS:
				case FALSE:
				case IF:
				case INSERT:
				case INTERVAL:
				case LEFT:
				case NOT:
				case NULL_LITERAL:
				case NUMBER:
				case REPLACE:
				case RIGHT:
				case STACKED:
				case TRUE:
				case VALUES:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case CHAR:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case GROUP_CONCAT:
				case MAX:
				case MIN:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case EXTRACT:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case OFFLINE:
				case OFFSET:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNS:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case TABLES:
				case ROUTINE:
				case EXECUTE:
				case FILE:
				case PROCESS:
				case RELOAD:
				case SHUTDOWN:
				case SUPER:
				case PRIVILEGES:
				case SESSION_VARIABLES_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case TAN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case PLUS:
				case MINUS:
				case EXCLAMATION_SYMBOL:
				case BIT_NOT_OP:
				case LR_BRACKET:
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case CHARSET_REVERSE_QOUTE_STRING:
				case START_NATIONAL_STRING_LITERAL:
				case STRING_LITERAL:
				case DECIMAL_LITERAL:
				case HEXADECIMAL_LITERAL:
				case REAL_LITERAL:
				case NULL_SPEC_LITERAL:
				case BIT_STRING:
				case STRING_CHARSET_NAME:
				case ID:
				case REVERSE_QUOTE_ID:
				case LOCAL_ID:
				case GLOBAL_ID:
					{
					setState(6023);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALL) {
						{
						setState(6022);
						((AggregateWindowedFunctionContext)_localctx).aggregator = match(ALL);
						}
					}

					setState(6025);
					functionArg();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6028);
				match(RR_BRACKET);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6029);
				match(COUNT);
				setState(6030);
				match(LR_BRACKET);
				setState(6031);
				((AggregateWindowedFunctionContext)_localctx).aggregator = match(DISTINCT);
				setState(6032);
				functionArgs();
				setState(6033);
				match(RR_BRACKET);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6035);
				_la = _input.LA(1);
				if ( !(((((_la - 236)) & ~0x3f) == 0 && ((1L << (_la - 236)) & ((1L << (BIT_AND - 236)) | (1L << (BIT_OR - 236)) | (1L << (BIT_XOR - 236)) | (1L << (STD - 236)) | (1L << (STDDEV - 236)) | (1L << (STDDEV_POP - 236)) | (1L << (STDDEV_SAMP - 236)) | (1L << (VAR_POP - 236)) | (1L << (VAR_SAMP - 236)) | (1L << (VARIANCE - 236)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6036);
				match(LR_BRACKET);
				setState(6038);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALL) {
					{
					setState(6037);
					((AggregateWindowedFunctionContext)_localctx).aggregator = match(ALL);
					}
				}

				setState(6040);
				functionArg();
				setState(6041);
				match(RR_BRACKET);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6043);
				match(GROUP_CONCAT);
				setState(6044);
				match(LR_BRACKET);
				setState(6046);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DISTINCT) {
					{
					setState(6045);
					((AggregateWindowedFunctionContext)_localctx).aggregator = match(DISTINCT);
					}
				}

				setState(6048);
				functionArgs();
				setState(6059);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(6049);
					match(ORDER);
					setState(6050);
					match(BY);
					setState(6051);
					orderByExpression();
					setState(6056);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(6052);
						match(COMMA);
						setState(6053);
						orderByExpression();
						}
						}
						setState(6058);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(6063);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SEPARATOR) {
					{
					setState(6061);
					match(SEPARATOR);
					setState(6062);
					((AggregateWindowedFunctionContext)_localctx).separator = match(STRING_LITERAL);
					}
				}

				setState(6065);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ScalarFunctionNameContext extends ParserRuleContext {
		public FunctionNameBaseContext functionNameBase() {
			return getRuleContext(FunctionNameBaseContext.class,0);
		}
		public TerminalNode ASCII() { return getToken(MySqlParser.ASCII, 0); }
		public TerminalNode CURDATE() { return getToken(MySqlParser.CURDATE, 0); }
		public TerminalNode CURRENT_DATE() { return getToken(MySqlParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySqlParser.CURRENT_TIME, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURTIME() { return getToken(MySqlParser.CURTIME, 0); }
		public TerminalNode DATE_ADD() { return getToken(MySqlParser.DATE_ADD, 0); }
		public TerminalNode DATE_SUB() { return getToken(MySqlParser.DATE_SUB, 0); }
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySqlParser.LOCALTIMESTAMP, 0); }
		public TerminalNode MID() { return getToken(MySqlParser.MID, 0); }
		public TerminalNode NOW() { return getToken(MySqlParser.NOW, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode SUBSTR() { return getToken(MySqlParser.SUBSTR, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySqlParser.SUBSTRING, 0); }
		public TerminalNode SYSDATE() { return getToken(MySqlParser.SYSDATE, 0); }
		public TerminalNode TRIM() { return getToken(MySqlParser.TRIM, 0); }
		public TerminalNode UTC_DATE() { return getToken(MySqlParser.UTC_DATE, 0); }
		public TerminalNode UTC_TIME() { return getToken(MySqlParser.UTC_TIME, 0); }
		public TerminalNode UTC_TIMESTAMP() { return getToken(MySqlParser.UTC_TIMESTAMP, 0); }
		public ScalarFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scalarFunctionName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterScalarFunctionName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitScalarFunctionName(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitScalarFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ScalarFunctionNameContext scalarFunctionName() throws RecognitionException {
		ScalarFunctionNameContext _localctx = new ScalarFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 594, RULE_scalarFunctionName);
		try {
			setState(6092);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DATABASE:
			case LEFT:
			case RIGHT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case COUNT:
			case POSITION:
			case INVISIBLE:
			case VISIBLE:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case SESSION_VARIABLES_ADMIN:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(6069);
				functionNameBase();
				}
				break;
			case ASCII:
				enterOuterAlt(_localctx, 2);
				{
				setState(6070);
				match(ASCII);
				}
				break;
			case CURDATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(6071);
				match(CURDATE);
				}
				break;
			case CURRENT_DATE:
				enterOuterAlt(_localctx, 4);
				{
				setState(6072);
				match(CURRENT_DATE);
				}
				break;
			case CURRENT_TIME:
				enterOuterAlt(_localctx, 5);
				{
				setState(6073);
				match(CURRENT_TIME);
				}
				break;
			case CURRENT_TIMESTAMP:
				enterOuterAlt(_localctx, 6);
				{
				setState(6074);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case CURTIME:
				enterOuterAlt(_localctx, 7);
				{
				setState(6075);
				match(CURTIME);
				}
				break;
			case DATE_ADD:
				enterOuterAlt(_localctx, 8);
				{
				setState(6076);
				match(DATE_ADD);
				}
				break;
			case DATE_SUB:
				enterOuterAlt(_localctx, 9);
				{
				setState(6077);
				match(DATE_SUB);
				}
				break;
			case IF:
				enterOuterAlt(_localctx, 10);
				{
				setState(6078);
				match(IF);
				}
				break;
			case INSERT:
				enterOuterAlt(_localctx, 11);
				{
				setState(6079);
				match(INSERT);
				}
				break;
			case LOCALTIME:
				enterOuterAlt(_localctx, 12);
				{
				setState(6080);
				match(LOCALTIME);
				}
				break;
			case LOCALTIMESTAMP:
				enterOuterAlt(_localctx, 13);
				{
				setState(6081);
				match(LOCALTIMESTAMP);
				}
				break;
			case MID:
				enterOuterAlt(_localctx, 14);
				{
				setState(6082);
				match(MID);
				}
				break;
			case NOW:
				enterOuterAlt(_localctx, 15);
				{
				setState(6083);
				match(NOW);
				}
				break;
			case REPLACE:
				enterOuterAlt(_localctx, 16);
				{
				setState(6084);
				match(REPLACE);
				}
				break;
			case SUBSTR:
				enterOuterAlt(_localctx, 17);
				{
				setState(6085);
				match(SUBSTR);
				}
				break;
			case SUBSTRING:
				enterOuterAlt(_localctx, 18);
				{
				setState(6086);
				match(SUBSTRING);
				}
				break;
			case SYSDATE:
				enterOuterAlt(_localctx, 19);
				{
				setState(6087);
				match(SYSDATE);
				}
				break;
			case TRIM:
				enterOuterAlt(_localctx, 20);
				{
				setState(6088);
				match(TRIM);
				}
				break;
			case UTC_DATE:
				enterOuterAlt(_localctx, 21);
				{
				setState(6089);
				match(UTC_DATE);
				}
				break;
			case UTC_TIME:
				enterOuterAlt(_localctx, 22);
				{
				setState(6090);
				match(UTC_TIME);
				}
				break;
			case UTC_TIMESTAMP:
				enterOuterAlt(_localctx, 23);
				{
				setState(6091);
				match(UTC_TIMESTAMP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PasswordFunctionClauseContext extends ParserRuleContext {
		public Token functionName;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(MySqlParser.OLD_PASSWORD, 0); }
		public PasswordFunctionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_passwordFunctionClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordFunctionClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordFunctionClause(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPasswordFunctionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PasswordFunctionClauseContext passwordFunctionClause() throws RecognitionException {
		PasswordFunctionClauseContext _localctx = new PasswordFunctionClauseContext(_ctx, getState());
		enterRule(_localctx, 596, RULE_passwordFunctionClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6094);
			((PasswordFunctionClauseContext)_localctx).functionName = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==OLD_PASSWORD || _la==PASSWORD) ) {
				((PasswordFunctionClauseContext)_localctx).functionName = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6095);
			match(LR_BRACKET);
			setState(6096);
			functionArg();
			setState(6097);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionArgsContext extends ParserRuleContext {
		public List<ConstantContext> constant() {
			return getRuleContexts(ConstantContext.class);
		}
		public ConstantContext constant(int i) {
			return getRuleContext(ConstantContext.class,i);
		}
		public List<FullColumnNameContext> fullColumnName() {
			return getRuleContexts(FullColumnNameContext.class);
		}
		public FullColumnNameContext fullColumnName(int i) {
			return getRuleContext(FullColumnNameContext.class,i);
		}
		public List<FunctionCallContext> functionCall() {
			return getRuleContexts(FunctionCallContext.class);
		}
		public FunctionCallContext functionCall(int i) {
			return getRuleContext(FunctionCallContext.class,i);
		}
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public FunctionArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionArgs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionArgs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionArgs(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionArgs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionArgsContext functionArgs() throws RecognitionException {
		FunctionArgsContext _localctx = new FunctionArgsContext(_ctx, getState());
		enterRule(_localctx, 598, RULE_functionArgs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6103);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,897,_ctx) ) {
			case 1:
				{
				setState(6099);
				constant();
				}
				break;
			case 2:
				{
				setState(6100);
				fullColumnName();
				}
				break;
			case 3:
				{
				setState(6101);
				functionCall();
				}
				break;
			case 4:
				{
				setState(6102);
				expression(0);
				}
				break;
			}
			setState(6114);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6105);
				match(COMMA);
				setState(6110);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,898,_ctx) ) {
				case 1:
					{
					setState(6106);
					constant();
					}
					break;
				case 2:
					{
					setState(6107);
					fullColumnName();
					}
					break;
				case 3:
					{
					setState(6108);
					functionCall();
					}
					break;
				case 4:
					{
					setState(6109);
					expression(0);
					}
					break;
				}
				}
				}
				setState(6116);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionArgContext extends ParserRuleContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public FunctionArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionArg; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionArg(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionArg(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionArg(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionArgContext functionArg() throws RecognitionException {
		FunctionArgContext _localctx = new FunctionArgContext(_ctx, getState());
		enterRule(_localctx, 600, RULE_functionArg);
		try {
			setState(6121);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,900,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6117);
				constant();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6118);
				fullColumnName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6119);
				functionCall();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6120);
				expression(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionContext extends ParserRuleContext {
		public ExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression; }
	 
		public ExpressionContext() { }
		public void copyFrom(ExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class IsExpressionContext extends ExpressionContext {
		public Token testValue;
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public TerminalNode TRUE() { return getToken(MySqlParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySqlParser.FALSE, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySqlParser.UNKNOWN, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public IsExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIsExpression(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NotExpressionContext extends ExpressionContext {
		public Token notOperator;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public NotExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNotExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNotExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNotExpression(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class LogicalExpressionContext extends ExpressionContext {
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public LogicalOperatorContext logicalOperator() {
			return getRuleContext(LogicalOperatorContext.class,0);
		}
		public LogicalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLogicalExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLogicalExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLogicalExpression(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PredicateExpressionContext extends ExpressionContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public PredicateExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPredicateExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPredicateExpression(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPredicateExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionContext expression() throws RecognitionException {
		return expression(0);
	}

	private ExpressionContext expression(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
		ExpressionContext _prevctx = _localctx;
		int _startState = 602;
		enterRecursionRule(_localctx, 602, RULE_expression, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6134);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,902,_ctx) ) {
			case 1:
				{
				_localctx = new NotExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(6124);
				((NotExpressionContext)_localctx).notOperator = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NOT || _la==EXCLAMATION_SYMBOL) ) {
					((NotExpressionContext)_localctx).notOperator = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6125);
				expression(4);
				}
				break;
			case 2:
				{
				_localctx = new IsExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6126);
				predicate(0);
				setState(6127);
				match(IS);
				setState(6129);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(6128);
					match(NOT);
					}
				}

				setState(6131);
				((IsExpressionContext)_localctx).testValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FALSE || _la==TRUE || _la==UNKNOWN) ) {
					((IsExpressionContext)_localctx).testValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 3:
				{
				_localctx = new PredicateExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6133);
				predicate(0);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(6142);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,903,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState));
					pushNewRecursionContext(_localctx, _startState, RULE_expression);
					setState(6136);
					if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
					setState(6137);
					logicalOperator();
					setState(6138);
					expression(4);
					}
					} 
				}
				setState(6144);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,903,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class PredicateContext extends ParserRuleContext {
		public PredicateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicate; }
	 
		public PredicateContext() { }
		public void copyFrom(PredicateContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SoundsLikePredicateContext extends PredicateContext {
		public List<PredicateContext> predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode SOUNDS() { return getToken(MySqlParser.SOUNDS, 0); }
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public SoundsLikePredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSoundsLikePredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSoundsLikePredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSoundsLikePredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ExpressionAtomPredicateContext extends PredicateContext {
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode VAR_ASSIGN() { return getToken(MySqlParser.VAR_ASSIGN, 0); }
		public ExpressionAtomPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionAtomPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionAtomPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressionAtomPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class InPredicateContext extends PredicateContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public InPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubqueryComparasionPredicateContext extends PredicateContext {
		public Token quantifier;
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode ANY() { return getToken(MySqlParser.ANY, 0); }
		public TerminalNode SOME() { return getToken(MySqlParser.SOME, 0); }
		public SubqueryComparasionPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryComparasionPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryComparasionPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubqueryComparasionPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BetweenPredicateContext extends PredicateContext {
		public List<PredicateContext> predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode BETWEEN() { return getToken(MySqlParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public BetweenPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBetweenPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBetweenPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBetweenPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BinaryComparasionPredicateContext extends PredicateContext {
		public PredicateContext left;
		public PredicateContext right;
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public List<PredicateContext> predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public BinaryComparasionPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryComparasionPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryComparasionPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBinaryComparasionPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IsNullPredicateContext extends PredicateContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public NullNotnullContext nullNotnull() {
			return getRuleContext(NullNotnullContext.class,0);
		}
		public IsNullPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsNullPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsNullPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIsNullPredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class LikePredicateContext extends PredicateContext {
		public List<PredicateContext> predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ESCAPE() { return getToken(MySqlParser.ESCAPE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public LikePredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLikePredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLikePredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLikePredicate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RegexpPredicateContext extends PredicateContext {
		public Token regex;
		public List<PredicateContext> predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode REGEXP() { return getToken(MySqlParser.REGEXP, 0); }
		public TerminalNode RLIKE() { return getToken(MySqlParser.RLIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public RegexpPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRegexpPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRegexpPredicate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRegexpPredicate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PredicateContext predicate() throws RecognitionException {
		return predicate(0);
	}

	private PredicateContext predicate(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		PredicateContext _localctx = new PredicateContext(_ctx, _parentState);
		PredicateContext _prevctx = _localctx;
		int _startState = 604;
		enterRecursionRule(_localctx, 604, RULE_predicate, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			_localctx = new ExpressionAtomPredicateContext(_localctx);
			_ctx = _localctx;
			_prevctx = _localctx;

			setState(6148);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,904,_ctx) ) {
			case 1:
				{
				setState(6146);
				match(LOCAL_ID);
				setState(6147);
				match(VAR_ASSIGN);
				}
				break;
			}
			setState(6150);
			expressionAtom(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(6209);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,912,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(6207);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,911,_ctx) ) {
					case 1:
						{
						_localctx = new BinaryComparasionPredicateContext(new PredicateContext(_parentctx, _parentState));
						((BinaryComparasionPredicateContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6152);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(6153);
						comparisonOperator();
						setState(6154);
						((BinaryComparasionPredicateContext)_localctx).right = predicate(8);
						}
						break;
					case 2:
						{
						_localctx = new BetweenPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6156);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(6158);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6157);
							match(NOT);
							}
						}

						setState(6160);
						match(BETWEEN);
						setState(6161);
						predicate(0);
						setState(6162);
						match(AND);
						setState(6163);
						predicate(6);
						}
						break;
					case 3:
						{
						_localctx = new SoundsLikePredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6165);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(6166);
						match(SOUNDS);
						setState(6167);
						match(LIKE);
						setState(6168);
						predicate(5);
						}
						break;
					case 4:
						{
						_localctx = new RegexpPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6169);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(6171);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6170);
							match(NOT);
							}
						}

						setState(6173);
						((RegexpPredicateContext)_localctx).regex = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==REGEXP || _la==RLIKE) ) {
							((RegexpPredicateContext)_localctx).regex = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(6174);
						predicate(3);
						}
						break;
					case 5:
						{
						_localctx = new InPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6175);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(6177);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6176);
							match(NOT);
							}
						}

						setState(6179);
						match(IN);
						setState(6180);
						match(LR_BRACKET);
						setState(6183);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,908,_ctx) ) {
						case 1:
							{
							setState(6181);
							selectStatement();
							}
							break;
						case 2:
							{
							setState(6182);
							expressions();
							}
							break;
						}
						setState(6185);
						match(RR_BRACKET);
						}
						break;
					case 6:
						{
						_localctx = new IsNullPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6187);
						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
						setState(6188);
						match(IS);
						setState(6189);
						nullNotnull();
						}
						break;
					case 7:
						{
						_localctx = new SubqueryComparasionPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6190);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(6191);
						comparisonOperator();
						setState(6192);
						((SubqueryComparasionPredicateContext)_localctx).quantifier = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==ANY || _la==SOME) ) {
							((SubqueryComparasionPredicateContext)_localctx).quantifier = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(6193);
						match(LR_BRACKET);
						setState(6194);
						selectStatement();
						setState(6195);
						match(RR_BRACKET);
						}
						break;
					case 8:
						{
						_localctx = new LikePredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(6197);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(6199);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6198);
							match(NOT);
							}
						}

						setState(6201);
						match(LIKE);
						setState(6202);
						predicate(0);
						setState(6205);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,910,_ctx) ) {
						case 1:
							{
							setState(6203);
							match(ESCAPE);
							setState(6204);
							match(STRING_LITERAL);
							}
							break;
						}
						}
						break;
					}
					} 
				}
				setState(6211);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,912,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ExpressionForUpdateContext extends ParserRuleContext {
		public ExpressionForUpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionForUpdate; }
	 
		public ExpressionForUpdateContext() { }
		public void copyFrom(ExpressionForUpdateContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class LogicalExpressionForUpdateContext extends ExpressionForUpdateContext {
		public List<ExpressionForUpdateContext> expressionForUpdate() {
			return getRuleContexts(ExpressionForUpdateContext.class);
		}
		public ExpressionForUpdateContext expressionForUpdate(int i) {
			return getRuleContext(ExpressionForUpdateContext.class,i);
		}
		public LogicalOperatorContext logicalOperator() {
			return getRuleContext(LogicalOperatorContext.class,0);
		}
		public LogicalExpressionForUpdateContext(ExpressionForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLogicalExpressionForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLogicalExpressionForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLogicalExpressionForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class PredicateExpressionForUpdateContext extends ExpressionForUpdateContext {
		public PredicateForUpdateContext predicateForUpdate() {
			return getRuleContext(PredicateForUpdateContext.class,0);
		}
		public PredicateExpressionForUpdateContext(ExpressionForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPredicateExpressionForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPredicateExpressionForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPredicateExpressionForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IsExpressionForUpdateContext extends ExpressionForUpdateContext {
		public Token testValue;
		public ExpressionForUpdateContext expressionForUpdate() {
			return getRuleContext(ExpressionForUpdateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public TerminalNode TRUE() { return getToken(MySqlParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySqlParser.FALSE, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySqlParser.UNKNOWN, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public IsExpressionForUpdateContext(ExpressionForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsExpressionForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsExpressionForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIsExpressionForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NotExpressionForUpdateContext extends ExpressionForUpdateContext {
		public Token notOperator;
		public ExpressionForUpdateContext expressionForUpdate() {
			return getRuleContext(ExpressionForUpdateContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public NotExpressionForUpdateContext(ExpressionForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNotExpressionForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNotExpressionForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNotExpressionForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionForUpdateContext expressionForUpdate() throws RecognitionException {
		return expressionForUpdate(0);
	}

	private ExpressionForUpdateContext expressionForUpdate(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionForUpdateContext _localctx = new ExpressionForUpdateContext(_ctx, _parentState);
		ExpressionForUpdateContext _prevctx = _localctx;
		int _startState = 606;
		enterRecursionRule(_localctx, 606, RULE_expressionForUpdate, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6216);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,913,_ctx) ) {
			case 1:
				{
				_localctx = new NotExpressionForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(6213);
				((NotExpressionForUpdateContext)_localctx).notOperator = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NOT || _la==EXCLAMATION_SYMBOL) ) {
					((NotExpressionForUpdateContext)_localctx).notOperator = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6214);
				expressionForUpdate(4);
				}
				break;
			case 2:
				{
				_localctx = new PredicateExpressionForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6215);
				predicateForUpdate(0);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(6230);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,916,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(6228);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,915,_ctx) ) {
					case 1:
						{
						_localctx = new LogicalExpressionForUpdateContext(new ExpressionForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_expressionForUpdate);
						setState(6218);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(6219);
						logicalOperator();
						setState(6220);
						expressionForUpdate(4);
						}
						break;
					case 2:
						{
						_localctx = new IsExpressionForUpdateContext(new ExpressionForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_expressionForUpdate);
						setState(6222);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(6223);
						match(IS);
						setState(6225);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6224);
							match(NOT);
							}
						}

						setState(6227);
						((IsExpressionForUpdateContext)_localctx).testValue = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==FALSE || _la==TRUE || _la==UNKNOWN) ) {
							((IsExpressionForUpdateContext)_localctx).testValue = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					}
					} 
				}
				setState(6232);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,916,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class PredicateForUpdateContext extends ParserRuleContext {
		public PredicateForUpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicateForUpdate; }
	 
		public PredicateForUpdateContext() { }
		public void copyFrom(PredicateForUpdateContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class BinaryComparasionPredicateForUpdateContext extends PredicateForUpdateContext {
		public PredicateForUpdateContext left;
		public PredicateForUpdateContext right;
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public List<PredicateForUpdateContext> predicateForUpdate() {
			return getRuleContexts(PredicateForUpdateContext.class);
		}
		public PredicateForUpdateContext predicateForUpdate(int i) {
			return getRuleContext(PredicateForUpdateContext.class,i);
		}
		public BinaryComparasionPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryComparasionPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryComparasionPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBinaryComparasionPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class LikePredicateForUpdateContext extends PredicateForUpdateContext {
		public List<PredicateForUpdateContext> predicateForUpdate() {
			return getRuleContexts(PredicateForUpdateContext.class);
		}
		public PredicateForUpdateContext predicateForUpdate(int i) {
			return getRuleContext(PredicateForUpdateContext.class,i);
		}
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ESCAPE() { return getToken(MySqlParser.ESCAPE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public LikePredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLikePredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLikePredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLikePredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RegexpPredicateForUpdateContext extends PredicateForUpdateContext {
		public Token regex;
		public PredicateForUpdateContext predicateForUpdate() {
			return getRuleContext(PredicateForUpdateContext.class,0);
		}
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode REGEXP() { return getToken(MySqlParser.REGEXP, 0); }
		public TerminalNode RLIKE() { return getToken(MySqlParser.RLIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public RegexpPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRegexpPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRegexpPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitRegexpPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IsNullPredicateForUpdateContext extends PredicateForUpdateContext {
		public PredicateForUpdateContext predicateForUpdate() {
			return getRuleContext(PredicateForUpdateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public NullNotnullContext nullNotnull() {
			return getRuleContext(NullNotnullContext.class,0);
		}
		public IsNullPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsNullPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsNullPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIsNullPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BetweenPredicateForUpdateContext extends PredicateForUpdateContext {
		public List<PredicateForUpdateContext> predicateForUpdate() {
			return getRuleContexts(PredicateForUpdateContext.class);
		}
		public PredicateForUpdateContext predicateForUpdate(int i) {
			return getRuleContext(PredicateForUpdateContext.class,i);
		}
		public TerminalNode BETWEEN() { return getToken(MySqlParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public BetweenPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBetweenPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBetweenPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBetweenPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SoundsLikePredicateForUpdateContext extends PredicateForUpdateContext {
		public List<PredicateForUpdateContext> predicateForUpdate() {
			return getRuleContexts(PredicateForUpdateContext.class);
		}
		public PredicateForUpdateContext predicateForUpdate(int i) {
			return getRuleContext(PredicateForUpdateContext.class,i);
		}
		public TerminalNode SOUNDS() { return getToken(MySqlParser.SOUNDS, 0); }
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public SoundsLikePredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSoundsLikePredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSoundsLikePredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSoundsLikePredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class InPredicateForUpdateContext extends PredicateForUpdateContext {
		public PredicateForUpdateContext predicateForUpdate() {
			return getRuleContext(PredicateForUpdateContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public ExpressionsForUpdateContext expressionsForUpdate() {
			return getRuleContext(ExpressionsForUpdateContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public InPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitInPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubqueryComparasionPredicateForUpdateContext extends PredicateForUpdateContext {
		public Token quantifier;
		public PredicateForUpdateContext predicateForUpdate() {
			return getRuleContext(PredicateForUpdateContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode ANY() { return getToken(MySqlParser.ANY, 0); }
		public TerminalNode SOME() { return getToken(MySqlParser.SOME, 0); }
		public SubqueryComparasionPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryComparasionPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryComparasionPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubqueryComparasionPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ExpressionAtomPredicateForUpdateContext extends PredicateForUpdateContext {
		public ExpressionAtomForUpdateContext expressionAtomForUpdate() {
			return getRuleContext(ExpressionAtomForUpdateContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode VAR_ASSIGN() { return getToken(MySqlParser.VAR_ASSIGN, 0); }
		public ExpressionAtomPredicateForUpdateContext(PredicateForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionAtomPredicateForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionAtomPredicateForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExpressionAtomPredicateForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PredicateForUpdateContext predicateForUpdate() throws RecognitionException {
		return predicateForUpdate(0);
	}

	private PredicateForUpdateContext predicateForUpdate(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		PredicateForUpdateContext _localctx = new PredicateForUpdateContext(_ctx, _parentState);
		PredicateForUpdateContext _prevctx = _localctx;
		int _startState = 608;
		enterRecursionRule(_localctx, 608, RULE_predicateForUpdate, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			_localctx = new ExpressionAtomPredicateForUpdateContext(_localctx);
			_ctx = _localctx;
			_prevctx = _localctx;

			setState(6236);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,917,_ctx) ) {
			case 1:
				{
				setState(6234);
				match(LOCAL_ID);
				setState(6235);
				match(VAR_ASSIGN);
				}
				break;
			}
			setState(6238);
			expressionAtomForUpdate(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(6297);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,925,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(6295);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,924,_ctx) ) {
					case 1:
						{
						_localctx = new BinaryComparasionPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						((BinaryComparasionPredicateForUpdateContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6240);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(6241);
						comparisonOperator();
						setState(6242);
						((BinaryComparasionPredicateForUpdateContext)_localctx).right = predicateForUpdate(8);
						}
						break;
					case 2:
						{
						_localctx = new BetweenPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6244);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(6246);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6245);
							match(NOT);
							}
						}

						setState(6248);
						match(BETWEEN);
						setState(6249);
						predicateForUpdate(0);
						setState(6250);
						match(AND);
						setState(6251);
						predicateForUpdate(6);
						}
						break;
					case 3:
						{
						_localctx = new SoundsLikePredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6253);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(6254);
						match(SOUNDS);
						setState(6255);
						match(LIKE);
						setState(6256);
						predicateForUpdate(5);
						}
						break;
					case 4:
						{
						_localctx = new InPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6257);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(6259);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6258);
							match(NOT);
							}
						}

						setState(6261);
						match(IN);
						setState(6262);
						match(LR_BRACKET);
						setState(6265);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,920,_ctx) ) {
						case 1:
							{
							setState(6263);
							selectStatement();
							}
							break;
						case 2:
							{
							setState(6264);
							expressionsForUpdate();
							}
							break;
						}
						setState(6267);
						match(RR_BRACKET);
						}
						break;
					case 5:
						{
						_localctx = new IsNullPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6269);
						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
						setState(6270);
						match(IS);
						setState(6271);
						nullNotnull();
						}
						break;
					case 6:
						{
						_localctx = new SubqueryComparasionPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6272);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(6273);
						comparisonOperator();
						setState(6274);
						((SubqueryComparasionPredicateForUpdateContext)_localctx).quantifier = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==ANY || _la==SOME) ) {
							((SubqueryComparasionPredicateForUpdateContext)_localctx).quantifier = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(6275);
						match(LR_BRACKET);
						setState(6276);
						selectStatement();
						setState(6277);
						match(RR_BRACKET);
						}
						break;
					case 7:
						{
						_localctx = new LikePredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6279);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(6281);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6280);
							match(NOT);
							}
						}

						setState(6283);
						match(LIKE);
						setState(6284);
						predicateForUpdate(0);
						setState(6287);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,922,_ctx) ) {
						case 1:
							{
							setState(6285);
							match(ESCAPE);
							setState(6286);
							match(STRING_LITERAL);
							}
							break;
						}
						}
						break;
					case 8:
						{
						_localctx = new RegexpPredicateForUpdateContext(new PredicateForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicateForUpdate);
						setState(6289);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(6291);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(6290);
							match(NOT);
							}
						}

						setState(6293);
						((RegexpPredicateForUpdateContext)_localctx).regex = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==REGEXP || _la==RLIKE) ) {
							((RegexpPredicateForUpdateContext)_localctx).regex = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(6294);
						predicate(0);
						}
						break;
					}
					} 
				}
				setState(6299);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,925,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ExpressionAtomForUpdateContext extends ParserRuleContext {
		public ExpressionAtomForUpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionAtomForUpdate; }
	 
		public ExpressionAtomForUpdateContext() { }
		public void copyFrom(ExpressionAtomForUpdateContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class IntervalExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public ExpressionForUpdateContext expressionForUpdate() {
			return getRuleContext(ExpressionForUpdateContext.class,0);
		}
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public IntervalExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FullColumnNameExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public FullColumnNameExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnNameExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnNameExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFullColumnNameExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MysqlVariableExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public MysqlVariableExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMysqlVariableExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMysqlVariableExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMysqlVariableExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class UnaryExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public UnaryOperatorContext unaryOperator() {
			return getRuleContext(UnaryOperatorContext.class,0);
		}
		public ExpressionAtomForUpdateContext expressionAtomForUpdate() {
			return getRuleContext(ExpressionAtomForUpdateContext.class,0);
		}
		public UnaryExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnaryExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnaryExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnaryExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NestedRowExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ExpressionForUpdateContext> expressionForUpdate() {
			return getRuleContexts(ExpressionForUpdateContext.class);
		}
		public ExpressionForUpdateContext expressionForUpdate(int i) {
			return getRuleContext(ExpressionForUpdateContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedRowExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedRowExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedRowExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNestedRowExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubqueryExpessionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SubqueryExpessionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryExpessionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryExpessionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubqueryExpessionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BitExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public ExpressionAtomForUpdateContext left;
		public ExpressionAtomForUpdateContext right;
		public BitOperatorContext bitOperator() {
			return getRuleContext(BitOperatorContext.class,0);
		}
		public List<ExpressionAtomForUpdateContext> expressionAtomForUpdate() {
			return getRuleContexts(ExpressionAtomForUpdateContext.class);
		}
		public ExpressionAtomForUpdateContext expressionAtomForUpdate(int i) {
			return getRuleContext(ExpressionAtomForUpdateContext.class,i);
		}
		public BitExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBitExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBitExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBitExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MathExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public ExpressionAtomForUpdateContext left;
		public ExpressionAtomForUpdateContext right;
		public MathOperatorContext mathOperator() {
			return getRuleContext(MathOperatorContext.class,0);
		}
		public List<ExpressionAtomForUpdateContext> expressionAtomForUpdate() {
			return getRuleContexts(ExpressionAtomForUpdateContext.class);
		}
		public ExpressionAtomForUpdateContext expressionAtomForUpdate(int i) {
			return getRuleContext(ExpressionAtomForUpdateContext.class,i);
		}
		public MathExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMathExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMathExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMathExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ConstantExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ConstantExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstantExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstantExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConstantExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CollateExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public ExpressionAtomForUpdateContext expressionAtomForUpdate() {
			return getRuleContext(ExpressionAtomForUpdateContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CollateExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollateExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollateExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollateExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BinaryExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public ExpressionAtomForUpdateContext expressionAtomForUpdate() {
			return getRuleContext(ExpressionAtomForUpdateContext.class,0);
		}
		public BinaryExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBinaryExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NestedExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ExpressionForUpdateContext> expressionForUpdate() {
			return getRuleContexts(ExpressionForUpdateContext.class);
		}
		public ExpressionForUpdateContext expressionForUpdate(int i) {
			return getRuleContext(ExpressionForUpdateContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNestedExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ExistsExpessionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ExistsExpessionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExistsExpessionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExistsExpessionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExistsExpessionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FunctionCallExpressionAtomForUpdateContext extends ExpressionAtomForUpdateContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public FunctionCallExpressionAtomForUpdateContext(ExpressionAtomForUpdateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionCallExpressionAtomForUpdate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionCallExpressionAtomForUpdate(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionCallExpressionAtomForUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionAtomForUpdateContext expressionAtomForUpdate() throws RecognitionException {
		return expressionAtomForUpdate(0);
	}

	private ExpressionAtomForUpdateContext expressionAtomForUpdate(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionAtomForUpdateContext _localctx = new ExpressionAtomForUpdateContext(_ctx, _parentState);
		ExpressionAtomForUpdateContext _prevctx = _localctx;
		int _startState = 610;
		enterRecursionRule(_localctx, 610, RULE_expressionAtomForUpdate, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6345);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,928,_ctx) ) {
			case 1:
				{
				_localctx = new ConstantExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(6301);
				constant();
				}
				break;
			case 2:
				{
				_localctx = new FullColumnNameExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6302);
				fullColumnName();
				}
				break;
			case 3:
				{
				_localctx = new FunctionCallExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6303);
				functionCall();
				}
				break;
			case 4:
				{
				_localctx = new MysqlVariableExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6304);
				mysqlVariable();
				}
				break;
			case 5:
				{
				_localctx = new UnaryExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6305);
				unaryOperator();
				setState(6306);
				expressionAtomForUpdate(9);
				}
				break;
			case 6:
				{
				_localctx = new BinaryExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6308);
				match(BINARY);
				setState(6309);
				expressionAtomForUpdate(8);
				}
				break;
			case 7:
				{
				_localctx = new NestedExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6310);
				match(LR_BRACKET);
				setState(6311);
				expressionForUpdate(0);
				setState(6316);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6312);
					match(COMMA);
					setState(6313);
					expressionForUpdate(0);
					}
					}
					setState(6318);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6319);
				match(RR_BRACKET);
				}
				break;
			case 8:
				{
				_localctx = new NestedRowExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6321);
				match(ROW);
				setState(6322);
				match(LR_BRACKET);
				setState(6323);
				expressionForUpdate(0);
				setState(6326); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(6324);
					match(COMMA);
					setState(6325);
					expressionForUpdate(0);
					}
					}
					setState(6328); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				setState(6330);
				match(RR_BRACKET);
				}
				break;
			case 9:
				{
				_localctx = new ExistsExpessionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6332);
				match(EXISTS);
				setState(6333);
				match(LR_BRACKET);
				setState(6334);
				selectStatement();
				setState(6335);
				match(RR_BRACKET);
				}
				break;
			case 10:
				{
				_localctx = new SubqueryExpessionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6337);
				match(LR_BRACKET);
				setState(6338);
				selectStatement();
				setState(6339);
				match(RR_BRACKET);
				}
				break;
			case 11:
				{
				_localctx = new IntervalExpressionAtomForUpdateContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6341);
				match(INTERVAL);
				setState(6342);
				expressionForUpdate(0);
				setState(6343);
				intervalType();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(6360);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,930,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(6358);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,929,_ctx) ) {
					case 1:
						{
						_localctx = new BitExpressionAtomForUpdateContext(new ExpressionAtomForUpdateContext(_parentctx, _parentState));
						((BitExpressionAtomForUpdateContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtomForUpdate);
						setState(6347);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(6348);
						bitOperator();
						setState(6349);
						((BitExpressionAtomForUpdateContext)_localctx).right = expressionAtomForUpdate(3);
						}
						break;
					case 2:
						{
						_localctx = new MathExpressionAtomForUpdateContext(new ExpressionAtomForUpdateContext(_parentctx, _parentState));
						((MathExpressionAtomForUpdateContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtomForUpdate);
						setState(6351);
						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
						setState(6352);
						mathOperator();
						setState(6353);
						((MathExpressionAtomForUpdateContext)_localctx).right = expressionAtomForUpdate(2);
						}
						break;
					case 3:
						{
						_localctx = new CollateExpressionAtomForUpdateContext(new ExpressionAtomForUpdateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtomForUpdate);
						setState(6355);
						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
						setState(6356);
						match(COLLATE);
						setState(6357);
						collationName();
						}
						break;
					}
					} 
				}
				setState(6362);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,930,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ExpressionAtomContext extends ParserRuleContext {
		public ExpressionAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionAtom; }
	 
		public ExpressionAtomContext() { }
		public void copyFrom(ExpressionAtomContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UnaryExpressionAtomContext extends ExpressionAtomContext {
		public UnaryOperatorContext unaryOperator() {
			return getRuleContext(UnaryOperatorContext.class,0);
		}
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public UnaryExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnaryExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnaryExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnaryExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CollateExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CollateExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollateExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollateExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCollateExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class SubqueryExpessionAtomContext extends ExpressionAtomContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SubqueryExpessionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryExpessionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryExpessionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitSubqueryExpessionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MysqlVariableExpressionAtomContext extends ExpressionAtomContext {
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public MysqlVariableExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMysqlVariableExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMysqlVariableExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMysqlVariableExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NestedExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNestedExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class NestedRowExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List<ExpressionContext> expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List<TerminalNode> COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedRowExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedRowExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedRowExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitNestedRowExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class MathExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext left;
		public ExpressionAtomContext right;
		public MathOperatorContext mathOperator() {
			return getRuleContext(MathOperatorContext.class,0);
		}
		public List<ExpressionAtomContext> expressionAtom() {
			return getRuleContexts(ExpressionAtomContext.class);
		}
		public ExpressionAtomContext expressionAtom(int i) {
			return getRuleContext(ExpressionAtomContext.class,i);
		}
		public MathExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMathExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMathExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMathExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class IntervalExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public IntervalExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ExistsExpessionAtomContext extends ExpressionAtomContext {
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ExistsExpessionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExistsExpessionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExistsExpessionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitExistsExpessionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ConstantExpressionAtomContext extends ExpressionAtomContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ConstantExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstantExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstantExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitConstantExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FunctionCallExpressionAtomContext extends ExpressionAtomContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public FunctionCallExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionCallExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionCallExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionCallExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BinaryExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public BinaryExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBinaryExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class FullColumnNameExpressionAtomContext extends ExpressionAtomContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public FullColumnNameExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnNameExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnNameExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFullColumnNameExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class BitExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext left;
		public ExpressionAtomContext right;
		public BitOperatorContext bitOperator() {
			return getRuleContext(BitOperatorContext.class,0);
		}
		public List<ExpressionAtomContext> expressionAtom() {
			return getRuleContexts(ExpressionAtomContext.class);
		}
		public ExpressionAtomContext expressionAtom(int i) {
			return getRuleContext(ExpressionAtomContext.class,i);
		}
		public BitExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBitExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBitExpressionAtom(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBitExpressionAtom(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExpressionAtomContext expressionAtom() throws RecognitionException {
		return expressionAtom(0);
	}

	private ExpressionAtomContext expressionAtom(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionAtomContext _localctx = new ExpressionAtomContext(_ctx, _parentState);
		ExpressionAtomContext _prevctx = _localctx;
		int _startState = 612;
		enterRecursionRule(_localctx, 612, RULE_expressionAtom, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6408);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,933,_ctx) ) {
			case 1:
				{
				_localctx = new ConstantExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(6364);
				constant();
				}
				break;
			case 2:
				{
				_localctx = new FullColumnNameExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6365);
				fullColumnName();
				}
				break;
			case 3:
				{
				_localctx = new FunctionCallExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6366);
				functionCall();
				}
				break;
			case 4:
				{
				_localctx = new MysqlVariableExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6367);
				mysqlVariable();
				}
				break;
			case 5:
				{
				_localctx = new UnaryExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6368);
				unaryOperator();
				setState(6369);
				expressionAtom(9);
				}
				break;
			case 6:
				{
				_localctx = new BinaryExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6371);
				match(BINARY);
				setState(6372);
				expressionAtom(8);
				}
				break;
			case 7:
				{
				_localctx = new NestedExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6373);
				match(LR_BRACKET);
				setState(6374);
				expression(0);
				setState(6379);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6375);
					match(COMMA);
					setState(6376);
					expression(0);
					}
					}
					setState(6381);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6382);
				match(RR_BRACKET);
				}
				break;
			case 8:
				{
				_localctx = new NestedRowExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6384);
				match(ROW);
				setState(6385);
				match(LR_BRACKET);
				setState(6386);
				expression(0);
				setState(6389); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(6387);
					match(COMMA);
					setState(6388);
					expression(0);
					}
					}
					setState(6391); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				setState(6393);
				match(RR_BRACKET);
				}
				break;
			case 9:
				{
				_localctx = new ExistsExpessionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6395);
				match(EXISTS);
				setState(6396);
				match(LR_BRACKET);
				setState(6397);
				selectStatement();
				setState(6398);
				match(RR_BRACKET);
				}
				break;
			case 10:
				{
				_localctx = new SubqueryExpessionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6400);
				match(LR_BRACKET);
				setState(6401);
				selectStatement();
				setState(6402);
				match(RR_BRACKET);
				}
				break;
			case 11:
				{
				_localctx = new IntervalExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(6404);
				match(INTERVAL);
				setState(6405);
				expression(0);
				setState(6406);
				intervalType();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(6423);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,935,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(6421);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,934,_ctx) ) {
					case 1:
						{
						_localctx = new BitExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((BitExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(6410);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(6411);
						bitOperator();
						setState(6412);
						((BitExpressionAtomContext)_localctx).right = expressionAtom(3);
						}
						break;
					case 2:
						{
						_localctx = new MathExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((MathExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(6414);
						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
						setState(6415);
						mathOperator();
						setState(6416);
						((MathExpressionAtomContext)_localctx).right = expressionAtom(2);
						}
						break;
					case 3:
						{
						_localctx = new CollateExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(6418);
						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
						setState(6419);
						match(COLLATE);
						setState(6420);
						collationName();
						}
						break;
					}
					} 
				}
				setState(6425);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,935,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class UnaryOperatorContext extends ParserRuleContext {
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public TerminalNode BIT_NOT_OP() { return getToken(MySqlParser.BIT_NOT_OP, 0); }
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public UnaryOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unaryOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnaryOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnaryOperator(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitUnaryOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnaryOperatorContext unaryOperator() throws RecognitionException {
		UnaryOperatorContext _localctx = new UnaryOperatorContext(_ctx, getState());
		enterRule(_localctx, 614, RULE_unaryOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6426);
			_la = _input.LA(1);
			if ( !(_la==NOT || ((((_la - 1008)) & ~0x3f) == 0 && ((1L << (_la - 1008)) & ((1L << (PLUS - 1008)) | (1L << (MINUS - 1008)) | (1L << (EXCLAMATION_SYMBOL - 1008)) | (1L << (BIT_NOT_OP - 1008)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ComparisonOperatorContext extends ParserRuleContext {
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode GREATER_SYMBOL() { return getToken(MySqlParser.GREATER_SYMBOL, 0); }
		public TerminalNode LESS_SYMBOL() { return getToken(MySqlParser.LESS_SYMBOL, 0); }
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterComparisonOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitComparisonOperator(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitComparisonOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
		enterRule(_localctx, 616, RULE_comparisonOperator);
		try {
			setState(6442);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,936,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6428);
				match(EQUAL_SYMBOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6429);
				match(GREATER_SYMBOL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6430);
				match(LESS_SYMBOL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6431);
				match(LESS_SYMBOL);
				setState(6432);
				match(EQUAL_SYMBOL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6433);
				match(GREATER_SYMBOL);
				setState(6434);
				match(EQUAL_SYMBOL);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6435);
				match(LESS_SYMBOL);
				setState(6436);
				match(GREATER_SYMBOL);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6437);
				match(EXCLAMATION_SYMBOL);
				setState(6438);
				match(EQUAL_SYMBOL);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6439);
				match(LESS_SYMBOL);
				setState(6440);
				match(EQUAL_SYMBOL);
				setState(6441);
				match(GREATER_SYMBOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LogicalOperatorContext extends ParserRuleContext {
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public List<TerminalNode> BIT_AND_OP() { return getTokens(MySqlParser.BIT_AND_OP); }
		public TerminalNode BIT_AND_OP(int i) {
			return getToken(MySqlParser.BIT_AND_OP, i);
		}
		public TerminalNode XOR() { return getToken(MySqlParser.XOR, 0); }
		public TerminalNode OR() { return getToken(MySqlParser.OR, 0); }
		public List<TerminalNode> BIT_OR_OP() { return getTokens(MySqlParser.BIT_OR_OP); }
		public TerminalNode BIT_OR_OP(int i) {
			return getToken(MySqlParser.BIT_OR_OP, i);
		}
		public LogicalOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_logicalOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLogicalOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLogicalOperator(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitLogicalOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LogicalOperatorContext logicalOperator() throws RecognitionException {
		LogicalOperatorContext _localctx = new LogicalOperatorContext(_ctx, getState());
		enterRule(_localctx, 618, RULE_logicalOperator);
		try {
			setState(6451);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AND:
				enterOuterAlt(_localctx, 1);
				{
				setState(6444);
				match(AND);
				}
				break;
			case BIT_AND_OP:
				enterOuterAlt(_localctx, 2);
				{
				setState(6445);
				match(BIT_AND_OP);
				setState(6446);
				match(BIT_AND_OP);
				}
				break;
			case XOR:
				enterOuterAlt(_localctx, 3);
				{
				setState(6447);
				match(XOR);
				}
				break;
			case OR:
				enterOuterAlt(_localctx, 4);
				{
				setState(6448);
				match(OR);
				}
				break;
			case BIT_OR_OP:
				enterOuterAlt(_localctx, 5);
				{
				setState(6449);
				match(BIT_OR_OP);
				setState(6450);
				match(BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitOperatorContext extends ParserRuleContext {
		public List<TerminalNode> LESS_SYMBOL() { return getTokens(MySqlParser.LESS_SYMBOL); }
		public TerminalNode LESS_SYMBOL(int i) {
			return getToken(MySqlParser.LESS_SYMBOL, i);
		}
		public List<TerminalNode> GREATER_SYMBOL() { return getTokens(MySqlParser.GREATER_SYMBOL); }
		public TerminalNode GREATER_SYMBOL(int i) {
			return getToken(MySqlParser.GREATER_SYMBOL, i);
		}
		public TerminalNode BIT_AND_OP() { return getToken(MySqlParser.BIT_AND_OP, 0); }
		public TerminalNode BIT_XOR_OP() { return getToken(MySqlParser.BIT_XOR_OP, 0); }
		public TerminalNode BIT_OR_OP() { return getToken(MySqlParser.BIT_OR_OP, 0); }
		public BitOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBitOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBitOperator(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitBitOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitOperatorContext bitOperator() throws RecognitionException {
		BitOperatorContext _localctx = new BitOperatorContext(_ctx, getState());
		enterRule(_localctx, 620, RULE_bitOperator);
		try {
			setState(6460);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LESS_SYMBOL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6453);
				match(LESS_SYMBOL);
				setState(6454);
				match(LESS_SYMBOL);
				}
				break;
			case GREATER_SYMBOL:
				enterOuterAlt(_localctx, 2);
				{
				setState(6455);
				match(GREATER_SYMBOL);
				setState(6456);
				match(GREATER_SYMBOL);
				}
				break;
			case BIT_AND_OP:
				enterOuterAlt(_localctx, 3);
				{
				setState(6457);
				match(BIT_AND_OP);
				}
				break;
			case BIT_XOR_OP:
				enterOuterAlt(_localctx, 4);
				{
				setState(6458);
				match(BIT_XOR_OP);
				}
				break;
			case BIT_OR_OP:
				enterOuterAlt(_localctx, 5);
				{
				setState(6459);
				match(BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MathOperatorContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public TerminalNode DIVIDE() { return getToken(MySqlParser.DIVIDE, 0); }
		public TerminalNode MODULE() { return getToken(MySqlParser.MODULE, 0); }
		public TerminalNode DIV() { return getToken(MySqlParser.DIV, 0); }
		public TerminalNode MOD() { return getToken(MySqlParser.MOD, 0); }
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public TerminalNode MINUSMINUS() { return getToken(MySqlParser.MINUSMINUS, 0); }
		public MathOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mathOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMathOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMathOperator(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitMathOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MathOperatorContext mathOperator() throws RecognitionException {
		MathOperatorContext _localctx = new MathOperatorContext(_ctx, getState());
		enterRule(_localctx, 622, RULE_mathOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6462);
			_la = _input.LA(1);
			if ( !(((((_la - 1005)) & ~0x3f) == 0 && ((1L << (_la - 1005)) & ((1L << (STAR - 1005)) | (1L << (DIVIDE - 1005)) | (1L << (MODULE - 1005)) | (1L << (PLUS - 1005)) | (1L << (MINUSMINUS - 1005)) | (1L << (MINUS - 1005)) | (1L << (DIV - 1005)) | (1L << (MOD - 1005)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetNameBaseContext extends ParserRuleContext {
		public TerminalNode ARMSCII8() { return getToken(MySqlParser.ARMSCII8, 0); }
		public TerminalNode ASCII() { return getToken(MySqlParser.ASCII, 0); }
		public TerminalNode BIG5() { return getToken(MySqlParser.BIG5, 0); }
		public TerminalNode CP1250() { return getToken(MySqlParser.CP1250, 0); }
		public TerminalNode CP1251() { return getToken(MySqlParser.CP1251, 0); }
		public TerminalNode CP1256() { return getToken(MySqlParser.CP1256, 0); }
		public TerminalNode CP1257() { return getToken(MySqlParser.CP1257, 0); }
		public TerminalNode CP850() { return getToken(MySqlParser.CP850, 0); }
		public TerminalNode CP852() { return getToken(MySqlParser.CP852, 0); }
		public TerminalNode CP866() { return getToken(MySqlParser.CP866, 0); }
		public TerminalNode CP932() { return getToken(MySqlParser.CP932, 0); }
		public TerminalNode DEC8() { return getToken(MySqlParser.DEC8, 0); }
		public TerminalNode EUCJPMS() { return getToken(MySqlParser.EUCJPMS, 0); }
		public TerminalNode EUCKR() { return getToken(MySqlParser.EUCKR, 0); }
		public TerminalNode GB2312() { return getToken(MySqlParser.GB2312, 0); }
		public TerminalNode GBK() { return getToken(MySqlParser.GBK, 0); }
		public TerminalNode GEOSTD8() { return getToken(MySqlParser.GEOSTD8, 0); }
		public TerminalNode GREEK() { return getToken(MySqlParser.GREEK, 0); }
		public TerminalNode HEBREW() { return getToken(MySqlParser.HEBREW, 0); }
		public TerminalNode HP8() { return getToken(MySqlParser.HP8, 0); }
		public TerminalNode KEYBCS2() { return getToken(MySqlParser.KEYBCS2, 0); }
		public TerminalNode KOI8R() { return getToken(MySqlParser.KOI8R, 0); }
		public TerminalNode KOI8U() { return getToken(MySqlParser.KOI8U, 0); }
		public TerminalNode LATIN1() { return getToken(MySqlParser.LATIN1, 0); }
		public TerminalNode LATIN2() { return getToken(MySqlParser.LATIN2, 0); }
		public TerminalNode LATIN5() { return getToken(MySqlParser.LATIN5, 0); }
		public TerminalNode LATIN7() { return getToken(MySqlParser.LATIN7, 0); }
		public TerminalNode MACCE() { return getToken(MySqlParser.MACCE, 0); }
		public TerminalNode MACROMAN() { return getToken(MySqlParser.MACROMAN, 0); }
		public TerminalNode SJIS() { return getToken(MySqlParser.SJIS, 0); }
		public TerminalNode SWE7() { return getToken(MySqlParser.SWE7, 0); }
		public TerminalNode TIS620() { return getToken(MySqlParser.TIS620, 0); }
		public TerminalNode UCS2() { return getToken(MySqlParser.UCS2, 0); }
		public TerminalNode UJIS() { return getToken(MySqlParser.UJIS, 0); }
		public TerminalNode UTF16() { return getToken(MySqlParser.UTF16, 0); }
		public TerminalNode UTF16LE() { return getToken(MySqlParser.UTF16LE, 0); }
		public TerminalNode UTF32() { return getToken(MySqlParser.UTF32, 0); }
		public TerminalNode UTF8() { return getToken(MySqlParser.UTF8, 0); }
		public TerminalNode UTF8MB3() { return getToken(MySqlParser.UTF8MB3, 0); }
		public TerminalNode UTF8MB4() { return getToken(MySqlParser.UTF8MB4, 0); }
		public CharsetNameBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetNameBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharsetNameBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharsetNameBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitCharsetNameBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharsetNameBaseContext charsetNameBase() throws RecognitionException {
		CharsetNameBaseContext _localctx = new CharsetNameBaseContext(_ctx, getState());
		enterRule(_localctx, 624, RULE_charsetNameBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6464);
			_la = _input.LA(1);
			if ( !(((((_la - 639)) & ~0x3f) == 0 && ((1L << (_la - 639)) & ((1L << (ARMSCII8 - 639)) | (1L << (ASCII - 639)) | (1L << (BIG5 - 639)) | (1L << (CP1250 - 639)) | (1L << (CP1251 - 639)) | (1L << (CP1256 - 639)) | (1L << (CP1257 - 639)) | (1L << (CP850 - 639)) | (1L << (CP852 - 639)) | (1L << (CP866 - 639)) | (1L << (CP932 - 639)) | (1L << (DEC8 - 639)) | (1L << (EUCJPMS - 639)) | (1L << (EUCKR - 639)) | (1L << (GB2312 - 639)) | (1L << (GBK - 639)) | (1L << (GEOSTD8 - 639)) | (1L << (GREEK - 639)) | (1L << (HEBREW - 639)) | (1L << (HP8 - 639)) | (1L << (KEYBCS2 - 639)) | (1L << (KOI8R - 639)) | (1L << (KOI8U - 639)) | (1L << (LATIN1 - 639)) | (1L << (LATIN2 - 639)) | (1L << (LATIN5 - 639)) | (1L << (LATIN7 - 639)) | (1L << (MACCE - 639)) | (1L << (MACROMAN - 639)) | (1L << (SJIS - 639)) | (1L << (SWE7 - 639)) | (1L << (TIS620 - 639)) | (1L << (UCS2 - 639)) | (1L << (UJIS - 639)) | (1L << (UTF16 - 639)) | (1L << (UTF16LE - 639)) | (1L << (UTF32 - 639)) | (1L << (UTF8 - 639)) | (1L << (UTF8MB3 - 639)) | (1L << (UTF8MB4 - 639)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionLevelBaseContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(MySqlParser.REPEATABLE, 0); }
		public TerminalNode COMMITTED() { return getToken(MySqlParser.COMMITTED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySqlParser.UNCOMMITTED, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySqlParser.SERIALIZABLE, 0); }
		public TransactionLevelBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionLevelBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionLevelBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionLevelBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitTransactionLevelBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionLevelBaseContext transactionLevelBase() throws RecognitionException {
		TransactionLevelBaseContext _localctx = new TransactionLevelBaseContext(_ctx, getState());
		enterRule(_localctx, 626, RULE_transactionLevelBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6466);
			_la = _input.LA(1);
			if ( !(((((_la - 691)) & ~0x3f) == 0 && ((1L << (_la - 691)) & ((1L << (REPEATABLE - 691)) | (1L << (COMMITTED - 691)) | (1L << (UNCOMMITTED - 691)) | (1L << (SERIALIZABLE - 691)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegesBaseContext extends ParserRuleContext {
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode ROUTINE() { return getToken(MySqlParser.ROUTINE, 0); }
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public TerminalNode FILE() { return getToken(MySqlParser.FILE, 0); }
		public TerminalNode PROCESS() { return getToken(MySqlParser.PROCESS, 0); }
		public TerminalNode RELOAD() { return getToken(MySqlParser.RELOAD, 0); }
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public TerminalNode SUPER() { return getToken(MySqlParser.SUPER, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public PrivilegesBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegesBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivilegesBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivilegesBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitPrivilegesBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrivilegesBaseContext privilegesBase() throws RecognitionException {
		PrivilegesBaseContext _localctx = new PrivilegesBaseContext(_ctx, getState());
		enterRule(_localctx, 628, RULE_privilegesBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6468);
			_la = _input.LA(1);
			if ( !(((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (TABLES - 604)) | (1L << (ROUTINE - 604)) | (1L << (EXECUTE - 604)) | (1L << (FILE - 604)) | (1L << (PROCESS - 604)) | (1L << (RELOAD - 604)) | (1L << (SHUTDOWN - 604)) | (1L << (SUPER - 604)) | (1L << (PRIVILEGES - 604)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalTypeBaseContext extends ParserRuleContext {
		public TerminalNode QUARTER() { return getToken(MySqlParser.QUARTER, 0); }
		public TerminalNode MONTH() { return getToken(MySqlParser.MONTH, 0); }
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode HOUR() { return getToken(MySqlParser.HOUR, 0); }
		public TerminalNode MINUTE() { return getToken(MySqlParser.MINUTE, 0); }
		public TerminalNode WEEK() { return getToken(MySqlParser.WEEK, 0); }
		public TerminalNode SECOND() { return getToken(MySqlParser.SECOND, 0); }
		public TerminalNode MICROSECOND() { return getToken(MySqlParser.MICROSECOND, 0); }
		public IntervalTypeBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalTypeBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalTypeBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalTypeBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitIntervalTypeBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalTypeBaseContext intervalTypeBase() throws RecognitionException {
		IntervalTypeBaseContext _localctx = new IntervalTypeBaseContext(_ctx, getState());
		enterRule(_localctx, 630, RULE_intervalTypeBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6470);
			_la = _input.LA(1);
			if ( !(((((_la - 596)) & ~0x3f) == 0 && ((1L << (_la - 596)) & ((1L << (QUARTER - 596)) | (1L << (MONTH - 596)) | (1L << (DAY - 596)) | (1L << (HOUR - 596)) | (1L << (MINUTE - 596)) | (1L << (WEEK - 596)) | (1L << (SECOND - 596)) | (1L << (MICROSECOND - 596)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeBaseContext extends ParserRuleContext {
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode ENUM() { return getToken(MySqlParser.ENUM, 0); }
		public TerminalNode TEXT() { return getToken(MySqlParser.TEXT, 0); }
		public DataTypeBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataTypeBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDataTypeBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDataTypeBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitDataTypeBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeBaseContext dataTypeBase() throws RecognitionException {
		DataTypeBaseContext _localctx = new DataTypeBaseContext(_ctx, getState());
		enterRule(_localctx, 632, RULE_dataTypeBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6472);
			_la = _input.LA(1);
			if ( !(((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (DATETIME - 199)) | (1L << (YEAR - 199)) | (1L << (TEXT - 199)) | (1L << (ENUM - 199)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeywordsCanBeIdContext extends ParserRuleContext {
		public TerminalNode ACCOUNT() { return getToken(MySqlParser.ACCOUNT, 0); }
		public TerminalNode ACTION() { return getToken(MySqlParser.ACTION, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public TerminalNode AGGREGATE() { return getToken(MySqlParser.AGGREGATE, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode ANY() { return getToken(MySqlParser.ANY, 0); }
		public TerminalNode AT() { return getToken(MySqlParser.AT, 0); }
		public TerminalNode AUTHORS() { return getToken(MySqlParser.AUTHORS, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySqlParser.AUTOCOMMIT, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySqlParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySqlParser.AVG_ROW_LENGTH, 0); }
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode BIT() { return getToken(MySqlParser.BIT, 0); }
		public TerminalNode BLOCK() { return getToken(MySqlParser.BLOCK, 0); }
		public TerminalNode BOOL() { return getToken(MySqlParser.BOOL, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySqlParser.BOOLEAN, 0); }
		public TerminalNode BTREE() { return getToken(MySqlParser.BTREE, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode CHANGED() { return getToken(MySqlParser.CHANGED, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode PAGE_CHECKSUM() { return getToken(MySqlParser.PAGE_CHECKSUM, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode CIPHER() { return getToken(MySqlParser.CIPHER, 0); }
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode CLIENT() { return getToken(MySqlParser.CLIENT, 0); }
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public TerminalNode COALESCE() { return getToken(MySqlParser.COALESCE, 0); }
		public TerminalNode CODE() { return getToken(MySqlParser.CODE, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode COLUMN_FORMAT() { return getToken(MySqlParser.COLUMN_FORMAT, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public TerminalNode COMPACT() { return getToken(MySqlParser.COMPACT, 0); }
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySqlParser.COMPRESSED, 0); }
		public TerminalNode COMPRESSION() { return getToken(MySqlParser.COMPRESSION, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySqlParser.CONSISTENT, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONTAINS() { return getToken(MySqlParser.CONTAINS, 0); }
		public TerminalNode CONTEXT() { return getToken(MySqlParser.CONTEXT, 0); }
		public TerminalNode CONTRIBUTORS() { return getToken(MySqlParser.CONTRIBUTORS, 0); }
		public TerminalNode COPY() { return getToken(MySqlParser.COPY, 0); }
		public TerminalNode CPU() { return getToken(MySqlParser.CPU, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode DEALLOCATE() { return getToken(MySqlParser.DEALLOCATE, 0); }
		public TerminalNode DEFAULT_AUTH() { return getToken(MySqlParser.DEFAULT_AUTH, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySqlParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode DES_KEY_FILE() { return getToken(MySqlParser.DES_KEY_FILE, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySqlParser.DIAGNOSTICS, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public TerminalNode DUMPFILE() { return getToken(MySqlParser.DUMPFILE, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySqlParser.DUPLICATE, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode ENCRYPTION() { return getToken(MySqlParser.ENCRYPTION, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public TerminalNode ENDS() { return getToken(MySqlParser.ENDS, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode ENGINES() { return getToken(MySqlParser.ENGINES, 0); }
		public TerminalNode ERROR() { return getToken(MySqlParser.ERROR, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode ESCAPE() { return getToken(MySqlParser.ESCAPE, 0); }
		public TerminalNode EVEN() { return getToken(MySqlParser.EVEN, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode EVERY() { return getToken(MySqlParser.EVERY, 0); }
		public TerminalNode EXCHANGE() { return getToken(MySqlParser.EXCHANGE, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(MySqlParser.EXCLUSIVE, 0); }
		public TerminalNode EXPIRE() { return getToken(MySqlParser.EXPIRE, 0); }
		public TerminalNode EXPORT() { return getToken(MySqlParser.EXPORT, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode EXTENT_SIZE() { return getToken(MySqlParser.EXTENT_SIZE, 0); }
		public TerminalNode FAST() { return getToken(MySqlParser.FAST, 0); }
		public TerminalNode FAULTS() { return getToken(MySqlParser.FAULTS, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySqlParser.FILE_BLOCK_SIZE, 0); }
		public TerminalNode FILTER() { return getToken(MySqlParser.FILTER, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode FLUSH() { return getToken(MySqlParser.FLUSH, 0); }
		public TerminalNode FOLLOWS() { return getToken(MySqlParser.FOLLOWS, 0); }
		public TerminalNode FOUND() { return getToken(MySqlParser.FOUND, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode GENERAL() { return getToken(MySqlParser.GENERAL, 0); }
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode GRANTS() { return getToken(MySqlParser.GRANTS, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode HELP() { return getToken(MySqlParser.HELP, 0); }
		public TerminalNode HOST() { return getToken(MySqlParser.HOST, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySqlParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode INDEXES() { return getToken(MySqlParser.INDEXES, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode INPLACE() { return getToken(MySqlParser.INPLACE, 0); }
		public TerminalNode INSERT_METHOD() { return getToken(MySqlParser.INSERT_METHOD, 0); }
		public TerminalNode INSTALL() { return getToken(MySqlParser.INSTALL, 0); }
		public TerminalNode INSTANCE() { return getToken(MySqlParser.INSTANCE, 0); }
		public TerminalNode INTERNAL() { return getToken(MySqlParser.INTERNAL, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public TerminalNode IO() { return getToken(MySqlParser.IO, 0); }
		public TerminalNode IO_THREAD() { return getToken(MySqlParser.IO_THREAD, 0); }
		public TerminalNode IPC() { return getToken(MySqlParser.IPC, 0); }
		public TerminalNode ISOLATION() { return getToken(MySqlParser.ISOLATION, 0); }
		public TerminalNode ISSUER() { return getToken(MySqlParser.ISSUER, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public TerminalNode LANGUAGE() { return getToken(MySqlParser.LANGUAGE, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public TerminalNode LEAVES() { return getToken(MySqlParser.LEAVES, 0); }
		public TerminalNode LESS() { return getToken(MySqlParser.LESS, 0); }
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TerminalNode LIST() { return getToken(MySqlParser.LIST, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySqlParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySqlParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySqlParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode MASTER_HOST() { return getToken(MySqlParser.MASTER_HOST, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySqlParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_PORT() { return getToken(MySqlParser.MASTER_PORT, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySqlParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySqlParser.MASTER_SSL, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySqlParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySqlParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySqlParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySqlParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySqlParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySqlParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySqlParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySqlParser.MASTER_TLS_VERSION, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySqlParser.MASTER_USER, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0); }
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySqlParser.MAX_SIZE, 0); }
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySqlParser.MAX_USER_CONNECTIONS, 0); }
		public TerminalNode MEDIUM() { return getToken(MySqlParser.MEDIUM, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MID() { return getToken(MySqlParser.MID, 0); }
		public TerminalNode MIGRATE() { return getToken(MySqlParser.MIGRATE, 0); }
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public TerminalNode MODE() { return getToken(MySqlParser.MODE, 0); }
		public TerminalNode MODIFY() { return getToken(MySqlParser.MODIFY, 0); }
		public TerminalNode MUTEX() { return getToken(MySqlParser.MUTEX, 0); }
		public TerminalNode MYSQL() { return getToken(MySqlParser.MYSQL, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode NAME() { return getToken(MySqlParser.NAME, 0); }
		public TerminalNode NAMES() { return getToken(MySqlParser.NAMES, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public TerminalNode NEVER() { return getToken(MySqlParser.NEVER, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode NUMBER() { return getToken(MySqlParser.NUMBER, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public TerminalNode OFFSET() { return getToken(MySqlParser.OFFSET, 0); }
		public TerminalNode OJ() { return getToken(MySqlParser.OJ, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(MySqlParser.OLD_PASSWORD, 0); }
		public TerminalNode ONE() { return getToken(MySqlParser.ONE, 0); }
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public TerminalNode OPTIMIZER_COSTS() { return getToken(MySqlParser.OPTIMIZER_COSTS, 0); }
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode OWNER() { return getToken(MySqlParser.OWNER, 0); }
		public TerminalNode PACK_KEYS() { return getToken(MySqlParser.PACK_KEYS, 0); }
		public TerminalNode PAGE() { return getToken(MySqlParser.PAGE, 0); }
		public TerminalNode PARSER() { return getToken(MySqlParser.PARSER, 0); }
		public TerminalNode PARTIAL() { return getToken(MySqlParser.PARTIAL, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode PHASE() { return getToken(MySqlParser.PHASE, 0); }
		public TerminalNode PLUGINS() { return getToken(MySqlParser.PLUGINS, 0); }
		public TerminalNode PLUGIN_DIR() { return getToken(MySqlParser.PLUGIN_DIR, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public TerminalNode PORT() { return getToken(MySqlParser.PORT, 0); }
		public TerminalNode PRECEDES() { return getToken(MySqlParser.PRECEDES, 0); }
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public TerminalNode PREV() { return getToken(MySqlParser.PREV, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySqlParser.PROCESSLIST, 0); }
		public TerminalNode PROFILE() { return getToken(MySqlParser.PROFILE, 0); }
		public TerminalNode PROFILES() { return getToken(MySqlParser.PROFILES, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode REBUILD() { return getToken(MySqlParser.REBUILD, 0); }
		public TerminalNode RECOVER() { return getToken(MySqlParser.RECOVER, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySqlParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySqlParser.REDUNDANT, 0); }
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySqlParser.RELAYLOG, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public TerminalNode REMOVE() { return getToken(MySqlParser.REMOVE, 0); }
		public TerminalNode REORGANIZE() { return getToken(MySqlParser.REORGANIZE, 0); }
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySqlParser.REPLICATE_DO_DB, 0); }
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySqlParser.REPLICATE_DO_TABLE, 0); }
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySqlParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySqlParser.REPLICATE_REWRITE_DB, 0); }
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0); }
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode RESUME() { return getToken(MySqlParser.RESUME, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySqlParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode ROLLUP() { return getToken(MySqlParser.ROLLUP, 0); }
		public TerminalNode ROTATE() { return getToken(MySqlParser.ROTATE, 0); }
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode ROWS() { return getToken(MySqlParser.ROWS, 0); }
		public TerminalNode ROW_FORMAT() { return getToken(MySqlParser.ROW_FORMAT, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public TerminalNode SHARE() { return getToken(MySqlParser.SHARE, 0); }
		public TerminalNode SHARED() { return getToken(MySqlParser.SHARED, 0); }
		public TerminalNode SIGNED() { return getToken(MySqlParser.SIGNED, 0); }
		public TerminalNode SIMPLE() { return getToken(MySqlParser.SIMPLE, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode SLOW() { return getToken(MySqlParser.SLOW, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySqlParser.SNAPSHOT, 0); }
		public TerminalNode SOCKET() { return getToken(MySqlParser.SOCKET, 0); }
		public TerminalNode SOME() { return getToken(MySqlParser.SOME, 0); }
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode SOUNDS() { return getToken(MySqlParser.SOUNDS, 0); }
		public TerminalNode SOURCE() { return getToken(MySqlParser.SOURCE, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySqlParser.SQL_AFTER_GTIDS, 0); }
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0); }
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySqlParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySqlParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_CACHE() { return getToken(MySqlParser.SQL_CACHE, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySqlParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySqlParser.SQL_THREAD, 0); }
		public TerminalNode STACKED() { return getToken(MySqlParser.STACKED, 0); }
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode STARTS() { return getToken(MySqlParser.STARTS, 0); }
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySqlParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode STATS_PERSISTENT() { return getToken(MySqlParser.STATS_PERSISTENT, 0); }
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySqlParser.STATS_SAMPLE_PAGES, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode STRING() { return getToken(MySqlParser.STRING, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode SUBJECT() { return getToken(MySqlParser.SUBJECT, 0); }
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public TerminalNode SUBPARTITIONS() { return getToken(MySqlParser.SUBPARTITIONS, 0); }
		public TerminalNode SUSPEND() { return getToken(MySqlParser.SUSPEND, 0); }
		public TerminalNode SWAPS() { return getToken(MySqlParser.SWAPS, 0); }
		public TerminalNode SWITCHES() { return getToken(MySqlParser.SWITCHES, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode THAN() { return getToken(MySqlParser.THAN, 0); }
		public TerminalNode TRADITIONAL() { return getToken(MySqlParser.TRADITIONAL, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySqlParser.TRIGGERS, 0); }
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySqlParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode UNINSTALL() { return getToken(MySqlParser.UNINSTALL, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySqlParser.UNKNOWN, 0); }
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode USE_FRM() { return getToken(MySqlParser.USE_FRM, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySqlParser.USER_RESOURCES, 0); }
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public TerminalNode VARIABLES() { return getToken(MySqlParser.VARIABLES, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode WRAPPER() { return getToken(MySqlParser.WRAPPER, 0); }
		public TerminalNode X509() { return getToken(MySqlParser.X509, 0); }
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode XML() { return getToken(MySqlParser.XML, 0); }
		public KeywordsCanBeIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keywordsCanBeId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterKeywordsCanBeId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitKeywordsCanBeId(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitKeywordsCanBeId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeywordsCanBeIdContext keywordsCanBeId() throws RecognitionException {
		KeywordsCanBeIdContext _localctx = new KeywordsCanBeIdContext(_ctx, getState());
		enterRule(_localctx, 634, RULE_keywordsCanBeId);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6474);
			_la = _input.LA(1);
			if ( !(_la==CURRENT || _la==DIAGNOSTICS || _la==NUMBER || _la==STACKED || ((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (SERIAL - 221)) | (1L << (ACCOUNT - 221)) | (1L << (ACTION - 221)) | (1L << (AFTER - 221)) | (1L << (AGGREGATE - 221)) | (1L << (ALGORITHM - 221)) | (1L << (ANY - 221)) | (1L << (AT - 221)) | (1L << (AUTHORS - 221)) | (1L << (AUTOCOMMIT - 221)) | (1L << (AUTOEXTEND_SIZE - 221)) | (1L << (AUTO_INCREMENT - 221)) | (1L << (AVG_ROW_LENGTH - 221)) | (1L << (BEGIN - 221)) | (1L << (BINLOG - 221)) | (1L << (BIT - 221)))) != 0) || ((((_la - 285)) & ~0x3f) == 0 && ((1L << (_la - 285)) & ((1L << (BLOCK - 285)) | (1L << (BOOL - 285)) | (1L << (BOOLEAN - 285)) | (1L << (BTREE - 285)) | (1L << (CACHE - 285)) | (1L << (CASCADED - 285)) | (1L << (CHAIN - 285)) | (1L << (CHANGED - 285)) | (1L << (CHANNEL - 285)) | (1L << (CHECKSUM - 285)) | (1L << (PAGE_CHECKSUM - 285)) | (1L << (CIPHER - 285)) | (1L << (CLASS_ORIGIN - 285)) | (1L << (CLIENT - 285)) | (1L << (CLOSE - 285)) | (1L << (COALESCE - 285)) | (1L << (CODE - 285)) | (1L << (COLUMNS - 285)) | (1L << (COLUMN_FORMAT - 285)) | (1L << (COLUMN_NAME - 285)) | (1L << (COMMENT - 285)) | (1L << (COMMIT - 285)) | (1L << (COMPACT - 285)) | (1L << (COMPLETION - 285)) | (1L << (COMPRESSED - 285)) | (1L << (COMPRESSION - 285)) | (1L << (CONCURRENT - 285)) | (1L << (CONNECTION - 285)) | (1L << (CONSISTENT - 285)) | (1L << (CONSTRAINT_CATALOG - 285)) | (1L << (CONSTRAINT_SCHEMA - 285)) | (1L << (CONSTRAINT_NAME - 285)) | (1L << (CONTAINS - 285)) | (1L << (CONTEXT - 285)) | (1L << (CONTRIBUTORS - 285)) | (1L << (COPY - 285)) | (1L << (CPU - 285)) | (1L << (CURSOR_NAME - 285)) | (1L << (DATA - 285)) | (1L << (DATAFILE - 285)) | (1L << (DEALLOCATE - 285)) | (1L << (DEFAULT_AUTH - 285)) | (1L << (DEFINER - 285)) | (1L << (DELAY_KEY_WRITE - 285)) | (1L << (DES_KEY_FILE - 285)) | (1L << (DIRECTORY - 285)) | (1L << (DISABLE - 285)) | (1L << (DISCARD - 285)) | (1L << (DISK - 285)) | (1L << (DO - 285)) | (1L << (DUMPFILE - 285)) | (1L << (DUPLICATE - 285)) | (1L << (DYNAMIC - 285)) | (1L << (ENABLE - 285)) | (1L << (ENCRYPTION - 285)) | (1L << (END - 285)) | (1L << (ENDS - 285)) | (1L << (ENGINE - 285)) | (1L << (ENGINES - 285)) | (1L << (ERROR - 285)) | (1L << (ERRORS - 285)) | (1L << (ESCAPE - 285)) | (1L << (EVEN - 285)) | (1L << (EVENT - 285)))) != 0) || ((((_la - 349)) & ~0x3f) == 0 && ((1L << (_la - 349)) & ((1L << (EVENTS - 349)) | (1L << (EVERY - 349)) | (1L << (EXCHANGE - 349)) | (1L << (EXCLUSIVE - 349)) | (1L << (EXPIRE - 349)) | (1L << (EXPORT - 349)) | (1L << (EXTENDED - 349)) | (1L << (EXTENT_SIZE - 349)) | (1L << (FAST - 349)) | (1L << (FAULTS - 349)) | (1L << (FIELDS - 349)) | (1L << (FILE_BLOCK_SIZE - 349)) | (1L << (FILTER - 349)) | (1L << (FIRST - 349)) | (1L << (FIXED - 349)) | (1L << (FLUSH - 349)) | (1L << (FOLLOWS - 349)) | (1L << (FOUND - 349)) | (1L << (FULL - 349)) | (1L << (FUNCTION - 349)) | (1L << (GENERAL - 349)) | (1L << (GLOBAL - 349)) | (1L << (GRANTS - 349)) | (1L << (GROUP_REPLICATION - 349)) | (1L << (HANDLER - 349)) | (1L << (HASH - 349)) | (1L << (HELP - 349)) | (1L << (HOST - 349)) | (1L << (HOSTS - 349)) | (1L << (IDENTIFIED - 349)) | (1L << (IGNORE_SERVER_IDS - 349)) | (1L << (IMPORT - 349)) | (1L << (INDEXES - 349)) | (1L << (INITIAL_SIZE - 349)) | (1L << (INPLACE - 349)) | (1L << (INSERT_METHOD - 349)) | (1L << (INSTALL - 349)) | (1L << (INSTANCE - 349)) | (1L << (INVOKER - 349)) | (1L << (IO - 349)) | (1L << (IO_THREAD - 349)) | (1L << (IPC - 349)) | (1L << (ISOLATION - 349)) | (1L << (ISSUER - 349)) | (1L << (JSON - 349)) | (1L << (KEY_BLOCK_SIZE - 349)) | (1L << (LANGUAGE - 349)) | (1L << (LAST - 349)) | (1L << (LEAVES - 349)) | (1L << (LESS - 349)) | (1L << (LEVEL - 349)) | (1L << (LIST - 349)) | (1L << (LOCAL - 349)) | (1L << (LOGFILE - 349)) | (1L << (LOGS - 349)) | (1L << (MASTER - 349)) | (1L << (MASTER_AUTO_POSITION - 349)) | (1L << (MASTER_CONNECT_RETRY - 349)) | (1L << (MASTER_DELAY - 349)) | (1L << (MASTER_HEARTBEAT_PERIOD - 349)) | (1L << (MASTER_HOST - 349)) | (1L << (MASTER_LOG_FILE - 349)) | (1L << (MASTER_LOG_POS - 349)))) != 0) || ((((_la - 413)) & ~0x3f) == 0 && ((1L << (_la - 413)) & ((1L << (MASTER_PASSWORD - 413)) | (1L << (MASTER_PORT - 413)) | (1L << (MASTER_RETRY_COUNT - 413)) | (1L << (MASTER_SSL - 413)) | (1L << (MASTER_SSL_CA - 413)) | (1L << (MASTER_SSL_CAPATH - 413)) | (1L << (MASTER_SSL_CERT - 413)) | (1L << (MASTER_SSL_CIPHER - 413)) | (1L << (MASTER_SSL_CRL - 413)) | (1L << (MASTER_SSL_CRLPATH - 413)) | (1L << (MASTER_SSL_KEY - 413)) | (1L << (MASTER_TLS_VERSION - 413)) | (1L << (MASTER_USER - 413)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 413)) | (1L << (MAX_QUERIES_PER_HOUR - 413)) | (1L << (MAX_ROWS - 413)) | (1L << (MAX_SIZE - 413)) | (1L << (MAX_UPDATES_PER_HOUR - 413)) | (1L << (MAX_USER_CONNECTIONS - 413)) | (1L << (MEDIUM - 413)) | (1L << (MERGE - 413)) | (1L << (MESSAGE_TEXT - 413)) | (1L << (MID - 413)) | (1L << (MIGRATE - 413)) | (1L << (MIN_ROWS - 413)) | (1L << (MODE - 413)) | (1L << (MODIFY - 413)) | (1L << (MUTEX - 413)) | (1L << (MYSQL - 413)) | (1L << (MYSQL_ERRNO - 413)) | (1L << (NAME - 413)) | (1L << (NAMES - 413)) | (1L << (NCHAR - 413)) | (1L << (NEVER - 413)) | (1L << (NEXT - 413)) | (1L << (NO - 413)) | (1L << (NODEGROUP - 413)) | (1L << (NONE - 413)) | (1L << (OFFLINE - 413)) | (1L << (OFFSET - 413)) | (1L << (OJ - 413)) | (1L << (OLD_PASSWORD - 413)) | (1L << (ONE - 413)) | (1L << (ONLINE - 413)) | (1L << (ONLY - 413)) | (1L << (OPEN - 413)) | (1L << (OPTIMIZER_COSTS - 413)) | (1L << (OPTIONS - 413)) | (1L << (OWNER - 413)) | (1L << (PACK_KEYS - 413)) | (1L << (PAGE - 413)) | (1L << (PARSER - 413)) | (1L << (PARTIAL - 413)) | (1L << (PARTITIONING - 413)) | (1L << (PARTITIONS - 413)) | (1L << (PASSWORD - 413)) | (1L << (PHASE - 413)) | (1L << (PLUGIN - 413)) | (1L << (PLUGIN_DIR - 413)) | (1L << (PLUGINS - 413)) | (1L << (PORT - 413)) | (1L << (PRECEDES - 413)))) != 0) || ((((_la - 477)) & ~0x3f) == 0 && ((1L << (_la - 477)) & ((1L << (PREPARE - 477)) | (1L << (PRESERVE - 477)) | (1L << (PREV - 477)) | (1L << (PROCESSLIST - 477)) | (1L << (PROFILE - 477)) | (1L << (PROFILES - 477)) | (1L << (PROXY - 477)) | (1L << (QUERY - 477)) | (1L << (QUICK - 477)) | (1L << (REBUILD - 477)) | (1L << (RECOVER - 477)) | (1L << (REDO_BUFFER_SIZE - 477)) | (1L << (REDUNDANT - 477)) | (1L << (RELAY - 477)) | (1L << (RELAY_LOG_FILE - 477)) | (1L << (RELAY_LOG_POS - 477)) | (1L << (RELAYLOG - 477)) | (1L << (REMOVE - 477)) | (1L << (REORGANIZE - 477)) | (1L << (REPAIR - 477)) | (1L << (REPLICATE_DO_DB - 477)) | (1L << (REPLICATE_DO_TABLE - 477)) | (1L << (REPLICATE_IGNORE_DB - 477)) | (1L << (REPLICATE_IGNORE_TABLE - 477)) | (1L << (REPLICATE_REWRITE_DB - 477)) | (1L << (REPLICATE_WILD_DO_TABLE - 477)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 477)) | (1L << (REPLICATION - 477)) | (1L << (RESET - 477)) | (1L << (RESUME - 477)) | (1L << (RETURNED_SQLSTATE - 477)) | (1L << (RETURNS - 477)) | (1L << (ROLLBACK - 477)) | (1L << (ROLLUP - 477)) | (1L << (ROTATE - 477)) | (1L << (ROW - 477)) | (1L << (ROWS - 477)) | (1L << (ROW_FORMAT - 477)) | (1L << (SAVEPOINT - 477)) | (1L << (SCHEDULE - 477)) | (1L << (SECURITY - 477)) | (1L << (SERVER - 477)) | (1L << (SESSION - 477)) | (1L << (SHARE - 477)) | (1L << (SHARED - 477)) | (1L << (SIGNED - 477)) | (1L << (SIMPLE - 477)) | (1L << (SLAVE - 477)) | (1L << (SLOW - 477)) | (1L << (SNAPSHOT - 477)) | (1L << (SOCKET - 477)) | (1L << (SOME - 477)) | (1L << (SONAME - 477)) | (1L << (SOUNDS - 477)) | (1L << (SOURCE - 477)) | (1L << (SQL_AFTER_GTIDS - 477)) | (1L << (SQL_AFTER_MTS_GAPS - 477)) | (1L << (SQL_BEFORE_GTIDS - 477)) | (1L << (SQL_BUFFER_RESULT - 477)) | (1L << (SQL_CACHE - 477)) | (1L << (SQL_NO_CACHE - 477)) | (1L << (SQL_THREAD - 477)) | (1L << (START - 477)))) != 0) || ((((_la - 541)) & ~0x3f) == 0 && ((1L << (_la - 541)) & ((1L << (STARTS - 541)) | (1L << (STATS_AUTO_RECALC - 541)) | (1L << (STATS_PERSISTENT - 541)) | (1L << (STATS_SAMPLE_PAGES - 541)) | (1L << (STATUS - 541)) | (1L << (STOP - 541)) | (1L << (STORAGE - 541)) | (1L << (STRING - 541)) | (1L << (SUBCLASS_ORIGIN - 541)) | (1L << (SUBJECT - 541)) | (1L << (SUBPARTITION - 541)) | (1L << (SUBPARTITIONS - 541)) | (1L << (SUSPEND - 541)) | (1L << (SWAPS - 541)) | (1L << (SWITCHES - 541)) | (1L << (TABLE_NAME - 541)) | (1L << (TABLESPACE - 541)) | (1L << (TEMPORARY - 541)) | (1L << (TEMPTABLE - 541)) | (1L << (THAN - 541)) | (1L << (TRADITIONAL - 541)) | (1L << (TRANSACTION - 541)) | (1L << (TRIGGERS - 541)) | (1L << (TRUNCATE - 541)) | (1L << (UNDEFINED - 541)) | (1L << (UNDOFILE - 541)) | (1L << (UNDO_BUFFER_SIZE - 541)) | (1L << (UNINSTALL - 541)) | (1L << (UNKNOWN - 541)) | (1L << (UNTIL - 541)) | (1L << (UPGRADE - 541)) | (1L << (USER - 541)) | (1L << (USE_FRM - 541)) | (1L << (USER_RESOURCES - 541)) | (1L << (VALIDATION - 541)) | (1L << (VALUE - 541)) | (1L << (VARIABLES - 541)) | (1L << (VIEW - 541)) | (1L << (WAIT - 541)) | (1L << (WARNINGS - 541)) | (1L << (WITHOUT - 541)) | (1L << (WORK - 541)) | (1L << (WRAPPER - 541)) | (1L << (X509 - 541)) | (1L << (XA - 541)) | (1L << (XML - 541)) | (1L << (INTERNAL - 541)))) != 0) || _la==MEMORY || _la==CATALOG_NAME || _la==SCHEMA_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionNameBaseContext extends ParserRuleContext {
		public TerminalNode ABS() { return getToken(MySqlParser.ABS, 0); }
		public TerminalNode ACOS() { return getToken(MySqlParser.ACOS, 0); }
		public TerminalNode ADDDATE() { return getToken(MySqlParser.ADDDATE, 0); }
		public TerminalNode ADDTIME() { return getToken(MySqlParser.ADDTIME, 0); }
		public TerminalNode AES_DECRYPT() { return getToken(MySqlParser.AES_DECRYPT, 0); }
		public TerminalNode AES_ENCRYPT() { return getToken(MySqlParser.AES_ENCRYPT, 0); }
		public TerminalNode AREA() { return getToken(MySqlParser.AREA, 0); }
		public TerminalNode ASBINARY() { return getToken(MySqlParser.ASBINARY, 0); }
		public TerminalNode ASIN() { return getToken(MySqlParser.ASIN, 0); }
		public TerminalNode ASTEXT() { return getToken(MySqlParser.ASTEXT, 0); }
		public TerminalNode ASWKB() { return getToken(MySqlParser.ASWKB, 0); }
		public TerminalNode ASWKT() { return getToken(MySqlParser.ASWKT, 0); }
		public TerminalNode ASYMMETRIC_DECRYPT() { return getToken(MySqlParser.ASYMMETRIC_DECRYPT, 0); }
		public TerminalNode ASYMMETRIC_DERIVE() { return getToken(MySqlParser.ASYMMETRIC_DERIVE, 0); }
		public TerminalNode ASYMMETRIC_ENCRYPT() { return getToken(MySqlParser.ASYMMETRIC_ENCRYPT, 0); }
		public TerminalNode ASYMMETRIC_SIGN() { return getToken(MySqlParser.ASYMMETRIC_SIGN, 0); }
		public TerminalNode ASYMMETRIC_VERIFY() { return getToken(MySqlParser.ASYMMETRIC_VERIFY, 0); }
		public TerminalNode ATAN() { return getToken(MySqlParser.ATAN, 0); }
		public TerminalNode ATAN2() { return getToken(MySqlParser.ATAN2, 0); }
		public TerminalNode BENCHMARK() { return getToken(MySqlParser.BENCHMARK, 0); }
		public TerminalNode BIN() { return getToken(MySqlParser.BIN, 0); }
		public TerminalNode BIT_COUNT() { return getToken(MySqlParser.BIT_COUNT, 0); }
		public TerminalNode BIT_LENGTH() { return getToken(MySqlParser.BIT_LENGTH, 0); }
		public TerminalNode BUFFER() { return getToken(MySqlParser.BUFFER, 0); }
		public TerminalNode CEIL() { return getToken(MySqlParser.CEIL, 0); }
		public TerminalNode CEILING() { return getToken(MySqlParser.CEILING, 0); }
		public TerminalNode CENTROID() { return getToken(MySqlParser.CENTROID, 0); }
		public TerminalNode CHARACTER_LENGTH() { return getToken(MySqlParser.CHARACTER_LENGTH, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public TerminalNode CHAR_LENGTH() { return getToken(MySqlParser.CHAR_LENGTH, 0); }
		public TerminalNode COERCIBILITY() { return getToken(MySqlParser.COERCIBILITY, 0); }
		public TerminalNode COLLATION() { return getToken(MySqlParser.COLLATION, 0); }
		public TerminalNode COMPRESS() { return getToken(MySqlParser.COMPRESS, 0); }
		public TerminalNode CONCAT() { return getToken(MySqlParser.CONCAT, 0); }
		public TerminalNode CONCAT_WS() { return getToken(MySqlParser.CONCAT_WS, 0); }
		public TerminalNode CONNECTION_ID() { return getToken(MySqlParser.CONNECTION_ID, 0); }
		public TerminalNode CONV() { return getToken(MySqlParser.CONV, 0); }
		public TerminalNode CONVERT_TZ() { return getToken(MySqlParser.CONVERT_TZ, 0); }
		public TerminalNode COS() { return getToken(MySqlParser.COS, 0); }
		public TerminalNode COT() { return getToken(MySqlParser.COT, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode CRC32() { return getToken(MySqlParser.CRC32, 0); }
		public TerminalNode CREATE_ASYMMETRIC_PRIV_KEY() { return getToken(MySqlParser.CREATE_ASYMMETRIC_PRIV_KEY, 0); }
		public TerminalNode CREATE_ASYMMETRIC_PUB_KEY() { return getToken(MySqlParser.CREATE_ASYMMETRIC_PUB_KEY, 0); }
		public TerminalNode CREATE_DH_PARAMETERS() { return getToken(MySqlParser.CREATE_DH_PARAMETERS, 0); }
		public TerminalNode CREATE_DIGEST() { return getToken(MySqlParser.CREATE_DIGEST, 0); }
		public TerminalNode CROSSES() { return getToken(MySqlParser.CROSSES, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode DATEDIFF() { return getToken(MySqlParser.DATEDIFF, 0); }
		public TerminalNode DATE_FORMAT() { return getToken(MySqlParser.DATE_FORMAT, 0); }
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode DAYNAME() { return getToken(MySqlParser.DAYNAME, 0); }
		public TerminalNode DAYOFMONTH() { return getToken(MySqlParser.DAYOFMONTH, 0); }
		public TerminalNode DAYOFWEEK() { return getToken(MySqlParser.DAYOFWEEK, 0); }
		public TerminalNode DAYOFYEAR() { return getToken(MySqlParser.DAYOFYEAR, 0); }
		public TerminalNode DECODE() { return getToken(MySqlParser.DECODE, 0); }
		public TerminalNode DEGREES() { return getToken(MySqlParser.DEGREES, 0); }
		public TerminalNode DES_DECRYPT() { return getToken(MySqlParser.DES_DECRYPT, 0); }
		public TerminalNode DES_ENCRYPT() { return getToken(MySqlParser.DES_ENCRYPT, 0); }
		public TerminalNode DIMENSION() { return getToken(MySqlParser.DIMENSION, 0); }
		public TerminalNode DISJOINT() { return getToken(MySqlParser.DISJOINT, 0); }
		public TerminalNode ELT() { return getToken(MySqlParser.ELT, 0); }
		public TerminalNode ENCODE() { return getToken(MySqlParser.ENCODE, 0); }
		public TerminalNode ENCRYPT() { return getToken(MySqlParser.ENCRYPT, 0); }
		public TerminalNode ENDPOINT() { return getToken(MySqlParser.ENDPOINT, 0); }
		public TerminalNode ENVELOPE() { return getToken(MySqlParser.ENVELOPE, 0); }
		public TerminalNode EQUALS() { return getToken(MySqlParser.EQUALS, 0); }
		public TerminalNode EXP() { return getToken(MySqlParser.EXP, 0); }
		public TerminalNode EXPORT_SET() { return getToken(MySqlParser.EXPORT_SET, 0); }
		public TerminalNode EXTERIORRING() { return getToken(MySqlParser.EXTERIORRING, 0); }
		public TerminalNode EXTRACTVALUE() { return getToken(MySqlParser.EXTRACTVALUE, 0); }
		public TerminalNode FIELD() { return getToken(MySqlParser.FIELD, 0); }
		public TerminalNode FIND_IN_SET() { return getToken(MySqlParser.FIND_IN_SET, 0); }
		public TerminalNode FLOOR() { return getToken(MySqlParser.FLOOR, 0); }
		public TerminalNode FORMAT() { return getToken(MySqlParser.FORMAT, 0); }
		public TerminalNode FOUND_ROWS() { return getToken(MySqlParser.FOUND_ROWS, 0); }
		public TerminalNode FROM_BASE64() { return getToken(MySqlParser.FROM_BASE64, 0); }
		public TerminalNode FROM_DAYS() { return getToken(MySqlParser.FROM_DAYS, 0); }
		public TerminalNode FROM_UNIXTIME() { return getToken(MySqlParser.FROM_UNIXTIME, 0); }
		public TerminalNode GEOMCOLLFROMTEXT() { return getToken(MySqlParser.GEOMCOLLFROMTEXT, 0); }
		public TerminalNode GEOMCOLLFROMWKB() { return getToken(MySqlParser.GEOMCOLLFROMWKB, 0); }
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySqlParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode GEOMETRYCOLLECTIONFROMTEXT() { return getToken(MySqlParser.GEOMETRYCOLLECTIONFROMTEXT, 0); }
		public TerminalNode GEOMETRYCOLLECTIONFROMWKB() { return getToken(MySqlParser.GEOMETRYCOLLECTIONFROMWKB, 0); }
		public TerminalNode GEOMETRYFROMTEXT() { return getToken(MySqlParser.GEOMETRYFROMTEXT, 0); }
		public TerminalNode GEOMETRYFROMWKB() { return getToken(MySqlParser.GEOMETRYFROMWKB, 0); }
		public TerminalNode GEOMETRYN() { return getToken(MySqlParser.GEOMETRYN, 0); }
		public TerminalNode GEOMETRYTYPE() { return getToken(MySqlParser.GEOMETRYTYPE, 0); }
		public TerminalNode GEOMFROMTEXT() { return getToken(MySqlParser.GEOMFROMTEXT, 0); }
		public TerminalNode GEOMFROMWKB() { return getToken(MySqlParser.GEOMFROMWKB, 0); }
		public TerminalNode GET_FORMAT() { return getToken(MySqlParser.GET_FORMAT, 0); }
		public TerminalNode GET_LOCK() { return getToken(MySqlParser.GET_LOCK, 0); }
		public TerminalNode GLENGTH() { return getToken(MySqlParser.GLENGTH, 0); }
		public TerminalNode GREATEST() { return getToken(MySqlParser.GREATEST, 0); }
		public TerminalNode GTID_SUBSET() { return getToken(MySqlParser.GTID_SUBSET, 0); }
		public TerminalNode GTID_SUBTRACT() { return getToken(MySqlParser.GTID_SUBTRACT, 0); }
		public TerminalNode HEX() { return getToken(MySqlParser.HEX, 0); }
		public TerminalNode HOUR() { return getToken(MySqlParser.HOUR, 0); }
		public TerminalNode IFNULL() { return getToken(MySqlParser.IFNULL, 0); }
		public TerminalNode INET6_ATON() { return getToken(MySqlParser.INET6_ATON, 0); }
		public TerminalNode INET6_NTOA() { return getToken(MySqlParser.INET6_NTOA, 0); }
		public TerminalNode INET_ATON() { return getToken(MySqlParser.INET_ATON, 0); }
		public TerminalNode INET_NTOA() { return getToken(MySqlParser.INET_NTOA, 0); }
		public TerminalNode INSTR() { return getToken(MySqlParser.INSTR, 0); }
		public TerminalNode INTERIORRINGN() { return getToken(MySqlParser.INTERIORRINGN, 0); }
		public TerminalNode INTERSECTS() { return getToken(MySqlParser.INTERSECTS, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public TerminalNode ISCLOSED() { return getToken(MySqlParser.ISCLOSED, 0); }
		public TerminalNode ISEMPTY() { return getToken(MySqlParser.ISEMPTY, 0); }
		public TerminalNode ISNULL() { return getToken(MySqlParser.ISNULL, 0); }
		public TerminalNode ISSIMPLE() { return getToken(MySqlParser.ISSIMPLE, 0); }
		public TerminalNode IS_FREE_LOCK() { return getToken(MySqlParser.IS_FREE_LOCK, 0); }
		public TerminalNode IS_IPV4() { return getToken(MySqlParser.IS_IPV4, 0); }
		public TerminalNode IS_IPV4_COMPAT() { return getToken(MySqlParser.IS_IPV4_COMPAT, 0); }
		public TerminalNode IS_IPV4_MAPPED() { return getToken(MySqlParser.IS_IPV4_MAPPED, 0); }
		public TerminalNode IS_IPV6() { return getToken(MySqlParser.IS_IPV6, 0); }
		public TerminalNode IS_USED_LOCK() { return getToken(MySqlParser.IS_USED_LOCK, 0); }
		public TerminalNode LAST_INSERT_ID() { return getToken(MySqlParser.LAST_INSERT_ID, 0); }
		public TerminalNode LCASE() { return getToken(MySqlParser.LCASE, 0); }
		public TerminalNode LEAST() { return getToken(MySqlParser.LEAST, 0); }
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode LENGTH() { return getToken(MySqlParser.LENGTH, 0); }
		public TerminalNode LINEFROMTEXT() { return getToken(MySqlParser.LINEFROMTEXT, 0); }
		public TerminalNode LINEFROMWKB() { return getToken(MySqlParser.LINEFROMWKB, 0); }
		public TerminalNode LINESTRING() { return getToken(MySqlParser.LINESTRING, 0); }
		public TerminalNode LINESTRINGFROMTEXT() { return getToken(MySqlParser.LINESTRINGFROMTEXT, 0); }
		public TerminalNode LINESTRINGFROMWKB() { return getToken(MySqlParser.LINESTRINGFROMWKB, 0); }
		public TerminalNode LN() { return getToken(MySqlParser.LN, 0); }
		public TerminalNode LOAD_FILE() { return getToken(MySqlParser.LOAD_FILE, 0); }
		public TerminalNode LOCATE() { return getToken(MySqlParser.LOCATE, 0); }
		public TerminalNode LOG() { return getToken(MySqlParser.LOG, 0); }
		public TerminalNode LOG10() { return getToken(MySqlParser.LOG10, 0); }
		public TerminalNode LOG2() { return getToken(MySqlParser.LOG2, 0); }
		public TerminalNode LOWER() { return getToken(MySqlParser.LOWER, 0); }
		public TerminalNode LPAD() { return getToken(MySqlParser.LPAD, 0); }
		public TerminalNode LTRIM() { return getToken(MySqlParser.LTRIM, 0); }
		public TerminalNode MAKEDATE() { return getToken(MySqlParser.MAKEDATE, 0); }
		public TerminalNode MAKETIME() { return getToken(MySqlParser.MAKETIME, 0); }
		public TerminalNode MAKE_SET() { return getToken(MySqlParser.MAKE_SET, 0); }
		public TerminalNode MASTER_POS_WAIT() { return getToken(MySqlParser.MASTER_POS_WAIT, 0); }
		public TerminalNode MBRCONTAINS() { return getToken(MySqlParser.MBRCONTAINS, 0); }
		public TerminalNode MBRDISJOINT() { return getToken(MySqlParser.MBRDISJOINT, 0); }
		public TerminalNode MBREQUAL() { return getToken(MySqlParser.MBREQUAL, 0); }
		public TerminalNode MBRINTERSECTS() { return getToken(MySqlParser.MBRINTERSECTS, 0); }
		public TerminalNode MBROVERLAPS() { return getToken(MySqlParser.MBROVERLAPS, 0); }
		public TerminalNode MBRTOUCHES() { return getToken(MySqlParser.MBRTOUCHES, 0); }
		public TerminalNode MBRWITHIN() { return getToken(MySqlParser.MBRWITHIN, 0); }
		public TerminalNode MD5() { return getToken(MySqlParser.MD5, 0); }
		public TerminalNode MICROSECOND() { return getToken(MySqlParser.MICROSECOND, 0); }
		public TerminalNode MINUTE() { return getToken(MySqlParser.MINUTE, 0); }
		public TerminalNode MLINEFROMTEXT() { return getToken(MySqlParser.MLINEFROMTEXT, 0); }
		public TerminalNode MLINEFROMWKB() { return getToken(MySqlParser.MLINEFROMWKB, 0); }
		public TerminalNode MONTH() { return getToken(MySqlParser.MONTH, 0); }
		public TerminalNode MONTHNAME() { return getToken(MySqlParser.MONTHNAME, 0); }
		public TerminalNode MPOINTFROMTEXT() { return getToken(MySqlParser.MPOINTFROMTEXT, 0); }
		public TerminalNode MPOINTFROMWKB() { return getToken(MySqlParser.MPOINTFROMWKB, 0); }
		public TerminalNode MPOLYFROMTEXT() { return getToken(MySqlParser.MPOLYFROMTEXT, 0); }
		public TerminalNode MPOLYFROMWKB() { return getToken(MySqlParser.MPOLYFROMWKB, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySqlParser.MULTILINESTRING, 0); }
		public TerminalNode MULTILINESTRINGFROMTEXT() { return getToken(MySqlParser.MULTILINESTRINGFROMTEXT, 0); }
		public TerminalNode MULTILINESTRINGFROMWKB() { return getToken(MySqlParser.MULTILINESTRINGFROMWKB, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySqlParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOINTFROMTEXT() { return getToken(MySqlParser.MULTIPOINTFROMTEXT, 0); }
		public TerminalNode MULTIPOINTFROMWKB() { return getToken(MySqlParser.MULTIPOINTFROMWKB, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySqlParser.MULTIPOLYGON, 0); }
		public TerminalNode MULTIPOLYGONFROMTEXT() { return getToken(MySqlParser.MULTIPOLYGONFROMTEXT, 0); }
		public TerminalNode MULTIPOLYGONFROMWKB() { return getToken(MySqlParser.MULTIPOLYGONFROMWKB, 0); }
		public TerminalNode NAME_CONST() { return getToken(MySqlParser.NAME_CONST, 0); }
		public TerminalNode NULLIF() { return getToken(MySqlParser.NULLIF, 0); }
		public TerminalNode NUMGEOMETRIES() { return getToken(MySqlParser.NUMGEOMETRIES, 0); }
		public TerminalNode NUMINTERIORRINGS() { return getToken(MySqlParser.NUMINTERIORRINGS, 0); }
		public TerminalNode NUMPOINTS() { return getToken(MySqlParser.NUMPOINTS, 0); }
		public TerminalNode OCT() { return getToken(MySqlParser.OCT, 0); }
		public TerminalNode OCTET_LENGTH() { return getToken(MySqlParser.OCTET_LENGTH, 0); }
		public TerminalNode ORD() { return getToken(MySqlParser.ORD, 0); }
		public TerminalNode OVERLAPS() { return getToken(MySqlParser.OVERLAPS, 0); }
		public TerminalNode PERIOD_ADD() { return getToken(MySqlParser.PERIOD_ADD, 0); }
		public TerminalNode PERIOD_DIFF() { return getToken(MySqlParser.PERIOD_DIFF, 0); }
		public TerminalNode PI() { return getToken(MySqlParser.PI, 0); }
		public TerminalNode POINT() { return getToken(MySqlParser.POINT, 0); }
		public TerminalNode POINTFROMTEXT() { return getToken(MySqlParser.POINTFROMTEXT, 0); }
		public TerminalNode POINTFROMWKB() { return getToken(MySqlParser.POINTFROMWKB, 0); }
		public TerminalNode POINTN() { return getToken(MySqlParser.POINTN, 0); }
		public TerminalNode POLYFROMTEXT() { return getToken(MySqlParser.POLYFROMTEXT, 0); }
		public TerminalNode POLYFROMWKB() { return getToken(MySqlParser.POLYFROMWKB, 0); }
		public TerminalNode POLYGON() { return getToken(MySqlParser.POLYGON, 0); }
		public TerminalNode POLYGONFROMTEXT() { return getToken(MySqlParser.POLYGONFROMTEXT, 0); }
		public TerminalNode POLYGONFROMWKB() { return getToken(MySqlParser.POLYGONFROMWKB, 0); }
		public TerminalNode POSITION() { return getToken(MySqlParser.POSITION, 0); }
		public TerminalNode POW() { return getToken(MySqlParser.POW, 0); }
		public TerminalNode POWER() { return getToken(MySqlParser.POWER, 0); }
		public TerminalNode QUARTER() { return getToken(MySqlParser.QUARTER, 0); }
		public TerminalNode QUOTE() { return getToken(MySqlParser.QUOTE, 0); }
		public TerminalNode RADIANS() { return getToken(MySqlParser.RADIANS, 0); }
		public TerminalNode RAND() { return getToken(MySqlParser.RAND, 0); }
		public TerminalNode RANDOM_BYTES() { return getToken(MySqlParser.RANDOM_BYTES, 0); }
		public TerminalNode RELEASE_LOCK() { return getToken(MySqlParser.RELEASE_LOCK, 0); }
		public TerminalNode REVERSE() { return getToken(MySqlParser.REVERSE, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode ROUND() { return getToken(MySqlParser.ROUND, 0); }
		public TerminalNode ROW_COUNT() { return getToken(MySqlParser.ROW_COUNT, 0); }
		public TerminalNode RPAD() { return getToken(MySqlParser.RPAD, 0); }
		public TerminalNode RTRIM() { return getToken(MySqlParser.RTRIM, 0); }
		public TerminalNode SECOND() { return getToken(MySqlParser.SECOND, 0); }
		public TerminalNode SEC_TO_TIME() { return getToken(MySqlParser.SEC_TO_TIME, 0); }
		public TerminalNode SESSION_USER() { return getToken(MySqlParser.SESSION_USER, 0); }
		public TerminalNode SESSION_VARIABLES_ADMIN() { return getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0); }
		public TerminalNode SHA() { return getToken(MySqlParser.SHA, 0); }
		public TerminalNode SHA1() { return getToken(MySqlParser.SHA1, 0); }
		public TerminalNode SHA2() { return getToken(MySqlParser.SHA2, 0); }
		public TerminalNode SIGN() { return getToken(MySqlParser.SIGN, 0); }
		public TerminalNode SIN() { return getToken(MySqlParser.SIN, 0); }
		public TerminalNode SLEEP() { return getToken(MySqlParser.SLEEP, 0); }
		public TerminalNode SOUNDEX() { return getToken(MySqlParser.SOUNDEX, 0); }
		public TerminalNode SQL_THREAD_WAIT_AFTER_GTIDS() { return getToken(MySqlParser.SQL_THREAD_WAIT_AFTER_GTIDS, 0); }
		public TerminalNode SQRT() { return getToken(MySqlParser.SQRT, 0); }
		public TerminalNode SRID() { return getToken(MySqlParser.SRID, 0); }
		public TerminalNode STARTPOINT() { return getToken(MySqlParser.STARTPOINT, 0); }
		public TerminalNode STRCMP() { return getToken(MySqlParser.STRCMP, 0); }
		public TerminalNode STR_TO_DATE() { return getToken(MySqlParser.STR_TO_DATE, 0); }
		public TerminalNode ST_AREA() { return getToken(MySqlParser.ST_AREA, 0); }
		public TerminalNode ST_ASBINARY() { return getToken(MySqlParser.ST_ASBINARY, 0); }
		public TerminalNode ST_ASTEXT() { return getToken(MySqlParser.ST_ASTEXT, 0); }
		public TerminalNode ST_ASWKB() { return getToken(MySqlParser.ST_ASWKB, 0); }
		public TerminalNode ST_ASWKT() { return getToken(MySqlParser.ST_ASWKT, 0); }
		public TerminalNode ST_BUFFER() { return getToken(MySqlParser.ST_BUFFER, 0); }
		public TerminalNode ST_CENTROID() { return getToken(MySqlParser.ST_CENTROID, 0); }
		public TerminalNode ST_CONTAINS() { return getToken(MySqlParser.ST_CONTAINS, 0); }
		public TerminalNode ST_CROSSES() { return getToken(MySqlParser.ST_CROSSES, 0); }
		public TerminalNode ST_DIFFERENCE() { return getToken(MySqlParser.ST_DIFFERENCE, 0); }
		public TerminalNode ST_DIMENSION() { return getToken(MySqlParser.ST_DIMENSION, 0); }
		public TerminalNode ST_DISJOINT() { return getToken(MySqlParser.ST_DISJOINT, 0); }
		public TerminalNode ST_DISTANCE() { return getToken(MySqlParser.ST_DISTANCE, 0); }
		public TerminalNode ST_ENDPOINT() { return getToken(MySqlParser.ST_ENDPOINT, 0); }
		public TerminalNode ST_ENVELOPE() { return getToken(MySqlParser.ST_ENVELOPE, 0); }
		public TerminalNode ST_EQUALS() { return getToken(MySqlParser.ST_EQUALS, 0); }
		public TerminalNode ST_EXTERIORRING() { return getToken(MySqlParser.ST_EXTERIORRING, 0); }
		public TerminalNode ST_GEOMCOLLFROMTEXT() { return getToken(MySqlParser.ST_GEOMCOLLFROMTEXT, 0); }
		public TerminalNode ST_GEOMCOLLFROMTXT() { return getToken(MySqlParser.ST_GEOMCOLLFROMTXT, 0); }
		public TerminalNode ST_GEOMCOLLFROMWKB() { return getToken(MySqlParser.ST_GEOMCOLLFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYCOLLECTIONFROMTEXT() { return getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMTEXT, 0); }
		public TerminalNode ST_GEOMETRYCOLLECTIONFROMWKB() { return getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYFROMTEXT() { return getToken(MySqlParser.ST_GEOMETRYFROMTEXT, 0); }
		public TerminalNode ST_GEOMETRYFROMWKB() { return getToken(MySqlParser.ST_GEOMETRYFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYN() { return getToken(MySqlParser.ST_GEOMETRYN, 0); }
		public TerminalNode ST_GEOMETRYTYPE() { return getToken(MySqlParser.ST_GEOMETRYTYPE, 0); }
		public TerminalNode ST_GEOMFROMTEXT() { return getToken(MySqlParser.ST_GEOMFROMTEXT, 0); }
		public TerminalNode ST_GEOMFROMWKB() { return getToken(MySqlParser.ST_GEOMFROMWKB, 0); }
		public TerminalNode ST_INTERIORRINGN() { return getToken(MySqlParser.ST_INTERIORRINGN, 0); }
		public TerminalNode ST_INTERSECTION() { return getToken(MySqlParser.ST_INTERSECTION, 0); }
		public TerminalNode ST_INTERSECTS() { return getToken(MySqlParser.ST_INTERSECTS, 0); }
		public TerminalNode ST_ISCLOSED() { return getToken(MySqlParser.ST_ISCLOSED, 0); }
		public TerminalNode ST_ISEMPTY() { return getToken(MySqlParser.ST_ISEMPTY, 0); }
		public TerminalNode ST_ISSIMPLE() { return getToken(MySqlParser.ST_ISSIMPLE, 0); }
		public TerminalNode ST_LINEFROMTEXT() { return getToken(MySqlParser.ST_LINEFROMTEXT, 0); }
		public TerminalNode ST_LINEFROMWKB() { return getToken(MySqlParser.ST_LINEFROMWKB, 0); }
		public TerminalNode ST_LINESTRINGFROMTEXT() { return getToken(MySqlParser.ST_LINESTRINGFROMTEXT, 0); }
		public TerminalNode ST_LINESTRINGFROMWKB() { return getToken(MySqlParser.ST_LINESTRINGFROMWKB, 0); }
		public TerminalNode ST_NUMGEOMETRIES() { return getToken(MySqlParser.ST_NUMGEOMETRIES, 0); }
		public TerminalNode ST_NUMINTERIORRING() { return getToken(MySqlParser.ST_NUMINTERIORRING, 0); }
		public TerminalNode ST_NUMINTERIORRINGS() { return getToken(MySqlParser.ST_NUMINTERIORRINGS, 0); }
		public TerminalNode ST_NUMPOINTS() { return getToken(MySqlParser.ST_NUMPOINTS, 0); }
		public TerminalNode ST_OVERLAPS() { return getToken(MySqlParser.ST_OVERLAPS, 0); }
		public TerminalNode ST_POINTFROMTEXT() { return getToken(MySqlParser.ST_POINTFROMTEXT, 0); }
		public TerminalNode ST_POINTFROMWKB() { return getToken(MySqlParser.ST_POINTFROMWKB, 0); }
		public TerminalNode ST_POINTN() { return getToken(MySqlParser.ST_POINTN, 0); }
		public TerminalNode ST_POLYFROMTEXT() { return getToken(MySqlParser.ST_POLYFROMTEXT, 0); }
		public TerminalNode ST_POLYFROMWKB() { return getToken(MySqlParser.ST_POLYFROMWKB, 0); }
		public TerminalNode ST_POLYGONFROMTEXT() { return getToken(MySqlParser.ST_POLYGONFROMTEXT, 0); }
		public TerminalNode ST_POLYGONFROMWKB() { return getToken(MySqlParser.ST_POLYGONFROMWKB, 0); }
		public TerminalNode ST_SRID() { return getToken(MySqlParser.ST_SRID, 0); }
		public TerminalNode ST_STARTPOINT() { return getToken(MySqlParser.ST_STARTPOINT, 0); }
		public TerminalNode ST_SYMDIFFERENCE() { return getToken(MySqlParser.ST_SYMDIFFERENCE, 0); }
		public TerminalNode ST_TOUCHES() { return getToken(MySqlParser.ST_TOUCHES, 0); }
		public TerminalNode ST_UNION() { return getToken(MySqlParser.ST_UNION, 0); }
		public TerminalNode ST_WITHIN() { return getToken(MySqlParser.ST_WITHIN, 0); }
		public TerminalNode ST_X() { return getToken(MySqlParser.ST_X, 0); }
		public TerminalNode ST_Y() { return getToken(MySqlParser.ST_Y, 0); }
		public TerminalNode SUBDATE() { return getToken(MySqlParser.SUBDATE, 0); }
		public TerminalNode SUBSTRING_INDEX() { return getToken(MySqlParser.SUBSTRING_INDEX, 0); }
		public TerminalNode SUBTIME() { return getToken(MySqlParser.SUBTIME, 0); }
		public TerminalNode SYSTEM_USER() { return getToken(MySqlParser.SYSTEM_USER, 0); }
		public TerminalNode TAN() { return getToken(MySqlParser.TAN, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMEDIFF() { return getToken(MySqlParser.TIMEDIFF, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode TIMESTAMPADD() { return getToken(MySqlParser.TIMESTAMPADD, 0); }
		public TerminalNode TIMESTAMPDIFF() { return getToken(MySqlParser.TIMESTAMPDIFF, 0); }
		public TerminalNode TIME_FORMAT() { return getToken(MySqlParser.TIME_FORMAT, 0); }
		public TerminalNode TIME_TO_SEC() { return getToken(MySqlParser.TIME_TO_SEC, 0); }
		public TerminalNode TOUCHES() { return getToken(MySqlParser.TOUCHES, 0); }
		public TerminalNode TO_BASE64() { return getToken(MySqlParser.TO_BASE64, 0); }
		public TerminalNode TO_DAYS() { return getToken(MySqlParser.TO_DAYS, 0); }
		public TerminalNode TO_SECONDS() { return getToken(MySqlParser.TO_SECONDS, 0); }
		public TerminalNode UCASE() { return getToken(MySqlParser.UCASE, 0); }
		public TerminalNode UNCOMPRESS() { return getToken(MySqlParser.UNCOMPRESS, 0); }
		public TerminalNode UNCOMPRESSED_LENGTH() { return getToken(MySqlParser.UNCOMPRESSED_LENGTH, 0); }
		public TerminalNode UNHEX() { return getToken(MySqlParser.UNHEX, 0); }
		public TerminalNode UNIX_TIMESTAMP() { return getToken(MySqlParser.UNIX_TIMESTAMP, 0); }
		public TerminalNode UPDATEXML() { return getToken(MySqlParser.UPDATEXML, 0); }
		public TerminalNode UPPER() { return getToken(MySqlParser.UPPER, 0); }
		public TerminalNode UUID() { return getToken(MySqlParser.UUID, 0); }
		public TerminalNode UUID_SHORT() { return getToken(MySqlParser.UUID_SHORT, 0); }
		public TerminalNode VALIDATE_PASSWORD_STRENGTH() { return getToken(MySqlParser.VALIDATE_PASSWORD_STRENGTH, 0); }
		public TerminalNode VERSION() { return getToken(MySqlParser.VERSION, 0); }
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public TerminalNode WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() { return getToken(MySqlParser.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, 0); }
		public TerminalNode WEEK() { return getToken(MySqlParser.WEEK, 0); }
		public TerminalNode WEEKDAY() { return getToken(MySqlParser.WEEKDAY, 0); }
		public TerminalNode WEEKOFYEAR() { return getToken(MySqlParser.WEEKOFYEAR, 0); }
		public TerminalNode WEIGHT_STRING() { return getToken(MySqlParser.WEIGHT_STRING, 0); }
		public TerminalNode WITHIN() { return getToken(MySqlParser.WITHIN, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode YEARWEEK() { return getToken(MySqlParser.YEARWEEK, 0); }
		public TerminalNode Y_FUNCTION() { return getToken(MySqlParser.Y_FUNCTION, 0); }
		public TerminalNode X_FUNCTION() { return getToken(MySqlParser.X_FUNCTION, 0); }
		public FunctionNameBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionNameBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionNameBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionNameBase(this);
		}
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof MySqlParserVisitor ) return ((MySqlParserVisitor<? extends T>)visitor).visitFunctionNameBase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionNameBaseContext functionNameBase() throws RecognitionException {
		FunctionNameBaseContext _localctx = new FunctionNameBaseContext(_ctx, getState());
		enterRule(_localctx, 636, RULE_functionNameBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6476);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==LEFT || _la==RIGHT || ((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (DATE - 199)) | (1L << (TIME - 199)) | (1L << (TIMESTAMP - 199)) | (1L << (YEAR - 199)) | (1L << (COUNT - 199)) | (1L << (POSITION - 199)))) != 0) || _la==INVISIBLE || ((((_la - 582)) & ~0x3f) == 0 && ((1L << (_la - 582)) & ((1L << (VISIBLE - 582)) | (1L << (QUARTER - 582)) | (1L << (MONTH - 582)) | (1L << (DAY - 582)) | (1L << (HOUR - 582)) | (1L << (MINUTE - 582)) | (1L << (WEEK - 582)) | (1L << (SECOND - 582)) | (1L << (MICROSECOND - 582)) | (1L << (SESSION_VARIABLES_ADMIN - 582)))) != 0) || ((((_la - 695)) & ~0x3f) == 0 && ((1L << (_la - 695)) & ((1L << (GEOMETRYCOLLECTION - 695)) | (1L << (LINESTRING - 695)) | (1L << (MULTILINESTRING - 695)) | (1L << (MULTIPOINT - 695)) | (1L << (MULTIPOLYGON - 695)) | (1L << (POINT - 695)) | (1L << (POLYGON - 695)) | (1L << (ABS - 695)) | (1L << (ACOS - 695)) | (1L << (ADDDATE - 695)) | (1L << (ADDTIME - 695)) | (1L << (AES_DECRYPT - 695)) | (1L << (AES_ENCRYPT - 695)) | (1L << (AREA - 695)) | (1L << (ASBINARY - 695)) | (1L << (ASIN - 695)) | (1L << (ASTEXT - 695)) | (1L << (ASWKB - 695)) | (1L << (ASWKT - 695)) | (1L << (ASYMMETRIC_DECRYPT - 695)) | (1L << (ASYMMETRIC_DERIVE - 695)) | (1L << (ASYMMETRIC_ENCRYPT - 695)) | (1L << (ASYMMETRIC_SIGN - 695)) | (1L << (ASYMMETRIC_VERIFY - 695)) | (1L << (ATAN - 695)) | (1L << (ATAN2 - 695)) | (1L << (BENCHMARK - 695)) | (1L << (BIN - 695)) | (1L << (BIT_COUNT - 695)) | (1L << (BIT_LENGTH - 695)) | (1L << (BUFFER - 695)) | (1L << (CEIL - 695)) | (1L << (CEILING - 695)) | (1L << (CENTROID - 695)) | (1L << (CHARACTER_LENGTH - 695)) | (1L << (CHARSET - 695)) | (1L << (CHAR_LENGTH - 695)) | (1L << (COERCIBILITY - 695)) | (1L << (COLLATION - 695)) | (1L << (COMPRESS - 695)) | (1L << (CONCAT - 695)) | (1L << (CONCAT_WS - 695)) | (1L << (CONNECTION_ID - 695)) | (1L << (CONV - 695)) | (1L << (CONVERT_TZ - 695)) | (1L << (COS - 695)) | (1L << (COT - 695)) | (1L << (CRC32 - 695)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 695)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 695)) | (1L << (CREATE_DH_PARAMETERS - 695)) | (1L << (CREATE_DIGEST - 695)) | (1L << (CROSSES - 695)) | (1L << (DATEDIFF - 695)) | (1L << (DATE_FORMAT - 695)) | (1L << (DAYNAME - 695)) | (1L << (DAYOFMONTH - 695)) | (1L << (DAYOFWEEK - 695)) | (1L << (DAYOFYEAR - 695)) | (1L << (DECODE - 695)) | (1L << (DEGREES - 695)))) != 0) || ((((_la - 759)) & ~0x3f) == 0 && ((1L << (_la - 759)) & ((1L << (DES_DECRYPT - 759)) | (1L << (DES_ENCRYPT - 759)) | (1L << (DIMENSION - 759)) | (1L << (DISJOINT - 759)) | (1L << (ELT - 759)) | (1L << (ENCODE - 759)) | (1L << (ENCRYPT - 759)) | (1L << (ENDPOINT - 759)) | (1L << (ENVELOPE - 759)) | (1L << (EQUALS - 759)) | (1L << (EXP - 759)) | (1L << (EXPORT_SET - 759)) | (1L << (EXTERIORRING - 759)) | (1L << (EXTRACTVALUE - 759)) | (1L << (FIELD - 759)) | (1L << (FIND_IN_SET - 759)) | (1L << (FLOOR - 759)) | (1L << (FORMAT - 759)) | (1L << (FOUND_ROWS - 759)) | (1L << (FROM_BASE64 - 759)) | (1L << (FROM_DAYS - 759)) | (1L << (FROM_UNIXTIME - 759)) | (1L << (GEOMCOLLFROMTEXT - 759)) | (1L << (GEOMCOLLFROMWKB - 759)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 759)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 759)) | (1L << (GEOMETRYFROMTEXT - 759)) | (1L << (GEOMETRYFROMWKB - 759)) | (1L << (GEOMETRYN - 759)) | (1L << (GEOMETRYTYPE - 759)) | (1L << (GEOMFROMTEXT - 759)) | (1L << (GEOMFROMWKB - 759)) | (1L << (GET_FORMAT - 759)) | (1L << (GET_LOCK - 759)) | (1L << (GLENGTH - 759)) | (1L << (GREATEST - 759)) | (1L << (GTID_SUBSET - 759)) | (1L << (GTID_SUBTRACT - 759)) | (1L << (HEX - 759)) | (1L << (IFNULL - 759)) | (1L << (INET6_ATON - 759)) | (1L << (INET6_NTOA - 759)) | (1L << (INET_ATON - 759)) | (1L << (INET_NTOA - 759)) | (1L << (INSTR - 759)) | (1L << (INTERIORRINGN - 759)) | (1L << (INTERSECTS - 759)) | (1L << (ISCLOSED - 759)) | (1L << (ISEMPTY - 759)) | (1L << (ISNULL - 759)) | (1L << (ISSIMPLE - 759)) | (1L << (IS_FREE_LOCK - 759)) | (1L << (IS_IPV4 - 759)) | (1L << (IS_IPV4_COMPAT - 759)) | (1L << (IS_IPV4_MAPPED - 759)) | (1L << (IS_IPV6 - 759)) | (1L << (IS_USED_LOCK - 759)) | (1L << (LAST_INSERT_ID - 759)) | (1L << (LCASE - 759)) | (1L << (LEAST - 759)) | (1L << (LENGTH - 759)) | (1L << (LINEFROMTEXT - 759)) | (1L << (LINEFROMWKB - 759)) | (1L << (LINESTRINGFROMTEXT - 759)))) != 0) || ((((_la - 823)) & ~0x3f) == 0 && ((1L << (_la - 823)) & ((1L << (LINESTRINGFROMWKB - 823)) | (1L << (LN - 823)) | (1L << (LOAD_FILE - 823)) | (1L << (LOCATE - 823)) | (1L << (LOG - 823)) | (1L << (LOG10 - 823)) | (1L << (LOG2 - 823)) | (1L << (LOWER - 823)) | (1L << (LPAD - 823)) | (1L << (LTRIM - 823)) | (1L << (MAKEDATE - 823)) | (1L << (MAKETIME - 823)) | (1L << (MAKE_SET - 823)) | (1L << (MASTER_POS_WAIT - 823)) | (1L << (MBRCONTAINS - 823)) | (1L << (MBRDISJOINT - 823)) | (1L << (MBREQUAL - 823)) | (1L << (MBRINTERSECTS - 823)) | (1L << (MBROVERLAPS - 823)) | (1L << (MBRTOUCHES - 823)) | (1L << (MBRWITHIN - 823)) | (1L << (MD5 - 823)) | (1L << (MLINEFROMTEXT - 823)) | (1L << (MLINEFROMWKB - 823)) | (1L << (MONTHNAME - 823)) | (1L << (MPOINTFROMTEXT - 823)) | (1L << (MPOINTFROMWKB - 823)) | (1L << (MPOLYFROMTEXT - 823)) | (1L << (MPOLYFROMWKB - 823)) | (1L << (MULTILINESTRINGFROMTEXT - 823)) | (1L << (MULTILINESTRINGFROMWKB - 823)) | (1L << (MULTIPOINTFROMTEXT - 823)) | (1L << (MULTIPOINTFROMWKB - 823)) | (1L << (MULTIPOLYGONFROMTEXT - 823)) | (1L << (MULTIPOLYGONFROMWKB - 823)) | (1L << (NAME_CONST - 823)) | (1L << (NULLIF - 823)) | (1L << (NUMGEOMETRIES - 823)) | (1L << (NUMINTERIORRINGS - 823)) | (1L << (NUMPOINTS - 823)) | (1L << (OCT - 823)) | (1L << (OCTET_LENGTH - 823)) | (1L << (ORD - 823)) | (1L << (OVERLAPS - 823)) | (1L << (PERIOD_ADD - 823)) | (1L << (PERIOD_DIFF - 823)) | (1L << (PI - 823)) | (1L << (POINTFROMTEXT - 823)) | (1L << (POINTFROMWKB - 823)) | (1L << (POINTN - 823)) | (1L << (POLYFROMTEXT - 823)) | (1L << (POLYFROMWKB - 823)) | (1L << (POLYGONFROMTEXT - 823)) | (1L << (POLYGONFROMWKB - 823)) | (1L << (POW - 823)) | (1L << (POWER - 823)) | (1L << (QUOTE - 823)) | (1L << (RADIANS - 823)) | (1L << (RAND - 823)) | (1L << (RANDOM_BYTES - 823)) | (1L << (RELEASE_LOCK - 823)) | (1L << (REVERSE - 823)) | (1L << (ROUND - 823)) | (1L << (ROW_COUNT - 823)))) != 0) || ((((_la - 887)) & ~0x3f) == 0 && ((1L << (_la - 887)) & ((1L << (RPAD - 887)) | (1L << (RTRIM - 887)) | (1L << (SEC_TO_TIME - 887)) | (1L << (SESSION_USER - 887)) | (1L << (SHA - 887)) | (1L << (SHA1 - 887)) | (1L << (SHA2 - 887)) | (1L << (SIGN - 887)) | (1L << (SIN - 887)) | (1L << (SLEEP - 887)) | (1L << (SOUNDEX - 887)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 887)) | (1L << (SQRT - 887)) | (1L << (SRID - 887)) | (1L << (STARTPOINT - 887)) | (1L << (STRCMP - 887)) | (1L << (STR_TO_DATE - 887)) | (1L << (ST_AREA - 887)) | (1L << (ST_ASBINARY - 887)) | (1L << (ST_ASTEXT - 887)) | (1L << (ST_ASWKB - 887)) | (1L << (ST_ASWKT - 887)) | (1L << (ST_BUFFER - 887)) | (1L << (ST_CENTROID - 887)) | (1L << (ST_CONTAINS - 887)) | (1L << (ST_CROSSES - 887)) | (1L << (ST_DIFFERENCE - 887)) | (1L << (ST_DIMENSION - 887)) | (1L << (ST_DISJOINT - 887)) | (1L << (ST_DISTANCE - 887)) | (1L << (ST_ENDPOINT - 887)) | (1L << (ST_ENVELOPE - 887)) | (1L << (ST_EQUALS - 887)) | (1L << (ST_EXTERIORRING - 887)) | (1L << (ST_GEOMCOLLFROMTEXT - 887)) | (1L << (ST_GEOMCOLLFROMTXT - 887)) | (1L << (ST_GEOMCOLLFROMWKB - 887)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 887)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 887)) | (1L << (ST_GEOMETRYFROMTEXT - 887)) | (1L << (ST_GEOMETRYFROMWKB - 887)) | (1L << (ST_GEOMETRYN - 887)) | (1L << (ST_GEOMETRYTYPE - 887)) | (1L << (ST_GEOMFROMTEXT - 887)) | (1L << (ST_GEOMFROMWKB - 887)) | (1L << (ST_INTERIORRINGN - 887)) | (1L << (ST_INTERSECTION - 887)) | (1L << (ST_INTERSECTS - 887)) | (1L << (ST_ISCLOSED - 887)) | (1L << (ST_ISEMPTY - 887)) | (1L << (ST_ISSIMPLE - 887)) | (1L << (ST_LINEFROMTEXT - 887)) | (1L << (ST_LINEFROMWKB - 887)) | (1L << (ST_LINESTRINGFROMTEXT - 887)) | (1L << (ST_LINESTRINGFROMWKB - 887)) | (1L << (ST_NUMGEOMETRIES - 887)) | (1L << (ST_NUMINTERIORRING - 887)) | (1L << (ST_NUMINTERIORRINGS - 887)) | (1L << (ST_NUMPOINTS - 887)) | (1L << (ST_OVERLAPS - 887)) | (1L << (ST_POINTFROMTEXT - 887)) | (1L << (ST_POINTFROMWKB - 887)) | (1L << (ST_POINTN - 887)))) != 0) || ((((_la - 951)) & ~0x3f) == 0 && ((1L << (_la - 951)) & ((1L << (ST_POLYFROMTEXT - 951)) | (1L << (ST_POLYFROMWKB - 951)) | (1L << (ST_POLYGONFROMTEXT - 951)) | (1L << (ST_POLYGONFROMWKB - 951)) | (1L << (ST_SRID - 951)) | (1L << (ST_STARTPOINT - 951)) | (1L << (ST_SYMDIFFERENCE - 951)) | (1L << (ST_TOUCHES - 951)) | (1L << (ST_UNION - 951)) | (1L << (ST_WITHIN - 951)) | (1L << (ST_X - 951)) | (1L << (ST_Y - 951)) | (1L << (SUBDATE - 951)) | (1L << (SUBSTRING_INDEX - 951)) | (1L << (SUBTIME - 951)) | (1L << (SYSTEM_USER - 951)) | (1L << (TAN - 951)) | (1L << (TIMEDIFF - 951)) | (1L << (TIMESTAMPADD - 951)) | (1L << (TIMESTAMPDIFF - 951)) | (1L << (TIME_FORMAT - 951)) | (1L << (TIME_TO_SEC - 951)) | (1L << (TOUCHES - 951)) | (1L << (TO_BASE64 - 951)) | (1L << (TO_DAYS - 951)) | (1L << (TO_SECONDS - 951)) | (1L << (UCASE - 951)) | (1L << (UNCOMPRESS - 951)) | (1L << (UNCOMPRESSED_LENGTH - 951)) | (1L << (UNHEX - 951)) | (1L << (UNIX_TIMESTAMP - 951)) | (1L << (UPDATEXML - 951)) | (1L << (UPPER - 951)) | (1L << (UUID - 951)) | (1L << (UUID_SHORT - 951)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 951)) | (1L << (VERSION - 951)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 951)) | (1L << (WEEKDAY - 951)) | (1L << (WEEKOFYEAR - 951)) | (1L << (WEIGHT_STRING - 951)) | (1L << (WITHIN - 951)) | (1L << (YEARWEEK - 951)) | (1L << (Y_FUNCTION - 951)) | (1L << (X_FUNCTION - 951)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 301:
			return expression_sempred((ExpressionContext)_localctx, predIndex);
		case 302:
			return predicate_sempred((PredicateContext)_localctx, predIndex);
		case 303:
			return expressionForUpdate_sempred((ExpressionForUpdateContext)_localctx, predIndex);
		case 304:
			return predicateForUpdate_sempred((PredicateForUpdateContext)_localctx, predIndex);
		case 305:
			return expressionAtomForUpdate_sempred((ExpressionAtomForUpdateContext)_localctx, predIndex);
		case 306:
			return expressionAtom_sempred((ExpressionAtomContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 3);
		}
		return true;
	}
	private boolean predicate_sempred(PredicateContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 7);
		case 2:
			return precpred(_ctx, 5);
		case 3:
			return precpred(_ctx, 4);
		case 4:
			return precpred(_ctx, 2);
		case 5:
			return precpred(_ctx, 9);
		case 6:
			return precpred(_ctx, 8);
		case 7:
			return precpred(_ctx, 6);
		case 8:
			return precpred(_ctx, 3);
		}
		return true;
	}
	private boolean expressionForUpdate_sempred(ExpressionForUpdateContext _localctx, int predIndex) {
		switch (predIndex) {
		case 9:
			return precpred(_ctx, 3);
		case 10:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean predicateForUpdate_sempred(PredicateForUpdateContext _localctx, int predIndex) {
		switch (predIndex) {
		case 11:
			return precpred(_ctx, 7);
		case 12:
			return precpred(_ctx, 5);
		case 13:
			return precpred(_ctx, 4);
		case 14:
			return precpred(_ctx, 9);
		case 15:
			return precpred(_ctx, 8);
		case 16:
			return precpred(_ctx, 6);
		case 17:
			return precpred(_ctx, 3);
		case 18:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean expressionAtomForUpdate_sempred(ExpressionAtomForUpdateContext _localctx, int predIndex) {
		switch (predIndex) {
		case 19:
			return precpred(_ctx, 2);
		case 20:
			return precpred(_ctx, 1);
		case 21:
			return precpred(_ctx, 11);
		}
		return true;
	}
	private boolean expressionAtom_sempred(ExpressionAtomContext _localctx, int predIndex) {
		switch (predIndex) {
		case 22:
			return precpred(_ctx, 2);
		case 23:
			return precpred(_ctx, 1);
		case 24:
			return precpred(_ctx, 11);
		}
		return true;
	}

	private static final int _serializedATNSegments = 3;
	private static final String _serializedATNSegment0 =
		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u041c\u1951\4\2\t"+
		"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
		"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
		",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
		"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
		"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
		"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
		"\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+
		"`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+
		"k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4"+
		"w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080"+
		"\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085"+
		"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089"+
		"\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+
		"\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+
		"\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097"+
		"\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b"+
		"\4\u009c\t\u009c\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0"+
		"\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4"+
		"\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9"+
		"\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad"+
		"\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1\4\u00b2"+
		"\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6"+
		"\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb"+
		"\t\u00bb\4\u00bc\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf"+
		"\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3\t\u00c3\4\u00c4"+
		"\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6\4\u00c7\t\u00c7\4\u00c8\t\u00c8"+
		"\4\u00c9\t\u00c9\4\u00ca\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd"+
		"\t\u00cd\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1\t\u00d1"+
		"\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4\4\u00d5\t\u00d5\4\u00d6"+
		"\t\u00d6\4\u00d7\t\u00d7\4\u00d8\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da"+
		"\4\u00db\t\u00db\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df"+
		"\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3"+
		"\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8"+
		"\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec"+
		"\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\4\u00f0\t\u00f0\4\u00f1"+
		"\t\u00f1\4\u00f2\t\u00f2\4\u00f3\t\u00f3\4\u00f4\t\u00f4\4\u00f5\t\u00f5"+
		"\4\u00f6\t\u00f6\4\u00f7\t\u00f7\4\u00f8\t\u00f8\4\u00f9\t\u00f9\4\u00fa"+
		"\t\u00fa\4\u00fb\t\u00fb\4\u00fc\t\u00fc\4\u00fd\t\u00fd\4\u00fe\t\u00fe"+
		"\4\u00ff\t\u00ff\4\u0100\t\u0100\4\u0101\t\u0101\4\u0102\t\u0102\4\u0103"+
		"\t\u0103\4\u0104\t\u0104\4\u0105\t\u0105\4\u0106\t\u0106\4\u0107\t\u0107"+
		"\4\u0108\t\u0108\4\u0109\t\u0109\4\u010a\t\u010a\4\u010b\t\u010b\4\u010c"+
		"\t\u010c\4\u010d\t\u010d\4\u010e\t\u010e\4\u010f\t\u010f\4\u0110\t\u0110"+
		"\4\u0111\t\u0111\4\u0112\t\u0112\4\u0113\t\u0113\4\u0114\t\u0114\4\u0115"+
		"\t\u0115\4\u0116\t\u0116\4\u0117\t\u0117\4\u0118\t\u0118\4\u0119\t\u0119"+
		"\4\u011a\t\u011a\4\u011b\t\u011b\4\u011c\t\u011c\4\u011d\t\u011d\4\u011e"+
		"\t\u011e\4\u011f\t\u011f\4\u0120\t\u0120\4\u0121\t\u0121\4\u0122\t\u0122"+
		"\4\u0123\t\u0123\4\u0124\t\u0124\4\u0125\t\u0125\4\u0126\t\u0126\4\u0127"+
		"\t\u0127\4\u0128\t\u0128\4\u0129\t\u0129\4\u012a\t\u012a\4\u012b\t\u012b"+
		"\4\u012c\t\u012c\4\u012d\t\u012d\4\u012e\t\u012e\4\u012f\t\u012f\4\u0130"+
		"\t\u0130\4\u0131\t\u0131\4\u0132\t\u0132\4\u0133\t\u0133\4\u0134\t\u0134"+
		"\4\u0135\t\u0135\4\u0136\t\u0136\4\u0137\t\u0137\4\u0138\t\u0138\4\u0139"+
		"\t\u0139\4\u013a\t\u013a\4\u013b\t\u013b\4\u013c\t\u013c\4\u013d\t\u013d"+
		"\4\u013e\t\u013e\4\u013f\t\u013f\4\u0140\t\u0140\3\2\5\2\u0282\n\2\3\2"+
		"\5\2\u0285\n\2\3\2\3\2\3\3\3\3\5\3\u028b\n\3\3\3\5\3\u028e\n\3\3\3\7\3"+
		"\u0291\n\3\f\3\16\3\u0294\13\3\3\3\3\3\5\3\u0298\n\3\3\3\5\3\u029b\n\3"+
		"\3\3\5\3\u029e\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u02a7\n\4\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\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\6\5"+
		"\6\u02ce\n\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u02da\n\7\3\b"+
		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u02e5\n\b\3\t\3\t\3\t\3\t\3\t\3\t"+
		"\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u02f6\n\t\3\n\3\n\3\n\5\n\u02fb"+
		"\n\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u0307\n\13"+
		"\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3"+
		"\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u0322\n\f\3\r\3\r\3\r\3\r\3\r\3\r\3"+
		"\r\5\r\u032b\n\r\3\16\3\16\3\16\5\16\u0330\n\16\3\16\3\16\7\16\u0334\n"+
		"\16\f\16\16\16\u0337\13\16\3\17\3\17\5\17\u033b\n\17\3\17\3\17\5\17\u033f"+
		"\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u0348\n\17\3\17\5\17\u034b"+
		"\n\17\3\17\5\17\u034e\n\17\3\17\3\17\5\17\u0352\n\17\3\17\3\17\3\17\3"+
		"\20\3\20\5\20\u0359\n\20\3\20\5\20\u035c\n\20\3\20\3\20\3\20\5\20\u0361"+
		"\n\20\3\20\3\20\3\20\3\20\7\20\u0367\n\20\f\20\16\20\u036a\13\20\3\20"+
		"\3\20\5\20\u036e\n\20\3\20\3\20\3\20\5\20\u0373\n\20\3\20\7\20\u0376\n"+
		"\20\f\20\16\20\u0379\13\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+
		"\5\21\u0384\n\21\3\21\5\21\u0387\n\21\3\21\3\21\5\21\u038b\n\21\3\21\5"+
		"\21\u038e\n\21\3\21\3\21\5\21\u0392\n\21\3\21\5\21\u0395\n\21\3\21\3\21"+
		"\5\21\u0399\n\21\3\21\5\21\u039c\n\21\3\21\5\21\u039f\n\21\3\21\3\21\5"+
		"\21\u03a3\n\21\3\21\5\21\u03a6\n\21\3\21\3\21\5\21\u03aa\n\21\3\21\3\21"+
		"\3\22\3\22\5\22\u03b0\n\22\3\22\3\22\3\22\3\22\5\22\u03b6\n\22\3\22\3"+
		"\22\7\22\u03ba\n\22\f\22\16\22\u03bd\13\22\3\22\3\22\7\22\u03c1\n\22\f"+
		"\22\16\22\u03c4\13\22\3\22\3\22\3\23\3\23\5\23\u03ca\n\23\3\23\3\23\3"+
		"\23\3\23\5\23\u03d0\n\23\3\23\3\23\7\23\u03d4\n\23\f\23\16\23\u03d7\13"+
		"\23\3\23\3\23\3\23\3\23\7\23\u03dd\n\23\f\23\16\23\u03e0\13\23\3\23\3"+
		"\23\5\23\u03e4\n\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24"+
		"\3\24\3\24\7\24\u03f2\n\24\f\24\16\24\u03f5\13\24\3\24\3\24\3\25\3\25"+
		"\5\25\u03fb\n\25\3\25\3\25\5\25\u03ff\n\25\3\25\3\25\3\25\3\25\3\25\3"+
		"\25\3\25\3\25\5\25\u0409\n\25\3\25\3\25\5\25\u040d\n\25\3\25\3\25\5\25"+
		"\u0411\n\25\3\25\3\25\5\25\u0415\n\25\3\25\3\25\5\25\u0419\n\25\3\25\7"+
		"\25\u041c\n\25\f\25\16\25\u041f\13\25\5\25\u0421\n\25\3\25\5\25\u0424"+
		"\n\25\3\25\5\25\u0427\n\25\3\25\5\25\u042a\n\25\3\25\3\25\3\25\3\25\5"+
		"\25\u0430\n\25\3\25\3\25\5\25\u0434\n\25\3\25\3\25\3\25\3\25\5\25\u043a"+
		"\n\25\3\25\7\25\u043d\n\25\f\25\16\25\u0440\13\25\5\25\u0442\n\25\3\25"+
		"\5\25\u0445\n\25\5\25\u0447\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3"+
		"\26\3\26\5\26\u0452\n\26\3\26\3\26\5\26\u0456\n\26\3\26\5\26\u0459\n\26"+
		"\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27\u0467"+
		"\n\27\3\27\5\27\u046a\n\27\3\27\3\27\5\27\u046e\n\27\3\27\5\27\u0471\n"+
		"\27\3\27\3\27\5\27\u0475\n\27\3\27\5\27\u0478\n\27\3\27\3\27\5\27\u047c"+
		"\n\27\3\27\5\27\u047f\n\27\3\27\3\27\5\27\u0483\n\27\3\27\5\27\u0486\n"+
		"\27\3\27\5\27\u0489\n\27\3\27\3\27\5\27\u048d\n\27\3\27\5\27\u0490\n\27"+
		"\3\27\3\27\5\27\u0494\n\27\3\27\3\27\3\30\3\30\5\30\u049a\n\30\3\30\3"+
		"\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u04a7\n\30\3\30"+
		"\3\30\3\31\3\31\3\31\5\31\u04ae\n\31\3\31\3\31\3\31\5\31\u04b3\n\31\3"+
		"\31\5\31\u04b6\n\31\3\31\3\31\3\31\5\31\u04bb\n\31\3\31\3\31\3\31\3\31"+
		"\3\31\3\31\5\31\u04c3\n\31\3\31\3\31\3\31\3\31\5\31\u04c9\n\31\3\31\3"+
		"\31\5\31\u04cd\n\31\3\32\5\32\u04d0\n\32\3\32\3\32\3\32\5\32\u04d5\n\32"+
		"\3\32\5\32\u04d8\n\32\3\32\3\32\5\32\u04dc\n\32\3\32\5\32\u04df\n\32\3"+
		"\32\3\32\5\32\u04e3\n\32\3\32\5\32\u04e6\n\32\3\33\3\33\3\33\3\33\3\33"+
		"\3\33\5\33\u04ee\n\33\5\33\u04f0\n\33\3\34\3\34\3\34\7\34\u04f5\n\34\f"+
		"\34\16\34\u04f8\13\34\3\34\3\34\3\34\5\34\u04fd\n\34\3\34\3\34\3\34\3"+
		"\34\7\34\u0503\n\34\f\34\16\34\u0506\13\34\5\34\u0508\n\34\3\34\3\34\3"+
		"\34\7\34\u050d\n\34\f\34\16\34\u0510\13\34\5\34\u0512\n\34\5\34\u0514"+
		"\n\34\3\35\3\35\3\35\3\35\5\35\u051a\n\35\3\36\3\36\3\36\3\36\5\36\u0520"+
		"\n\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37"+
		"\3\37\3\37\5\37\u0531\n\37\3 \3 \3 \3 \3 \5 \u0538\n \3!\3!\3!\3\"\3\""+
		"\5\"\u053f\n\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\5\"\u054a\n\"\3#\5"+
		"#\u054d\n#\3#\3#\3#\3$\3$\3$\3%\3%\3%\3%\3%\5%\u055a\n%\3%\3%\3%\3%\3"+
		"%\3%\3%\3%\3%\3%\3%\5%\u0567\n%\3%\3%\3%\5%\u056c\n%\3&\3&\3&\3&\3&\3"+
		"&\3&\3&\3&\3&\3&\3&\3&\3&\5&\u057c\n&\3\'\3\'\3\'\3\'\7\'\u0582\n\'\f"+
		"\'\16\'\u0585\13\'\3\'\3\'\3(\3(\3(\3(\3(\5(\u058e\n(\3)\3)\7)\u0592\n"+
		")\f)\16)\u0595\13)\3*\3*\3*\3*\3*\3*\3*\5*\u059e\n*\3*\5*\u05a1\n*\3*"+
		"\3*\3*\5*\u05a6\n*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\5*\u05b3\n*\3*\3*"+
		"\3*\3*\3*\5*\u05ba\n*\3*\3*\3*\5*\u05bf\n*\3+\3+\5+\u05c3\n+\5+\u05c5"+
		"\n+\3+\3+\3+\5+\u05ca\n+\3+\5+\u05cd\n+\3+\3+\7+\u05d1\n+\f+\16+\u05d4"+
		"\13+\3+\3+\5+\u05d8\n+\5+\u05da\n+\3+\3+\5+\u05de\n+\3+\5+\u05e1\n+\3"+
		"+\5+\u05e4\n+\3+\3+\7+\u05e8\n+\f+\16+\u05eb\13+\3+\3+\5+\u05ef\n+\5+"+
		"\u05f1\n+\3+\3+\3+\5+\u05f6\n+\3+\3+\3+\3+\3+\5+\u05fd\n+\5+\u05ff\n+"+
		"\3+\3+\3+\3+\3+\5+\u0606\n+\3,\3,\3,\5,\u060b\n,\3,\3,\5,\u060f\n,\3,"+
		"\5,\u0612\n,\3-\3-\3-\3-\3-\3-\5-\u061a\n-\3-\3-\3-\3-\3-\3-\5-\u0622"+
		"\n-\5-\u0624\n-\3.\3.\3.\3.\3.\3.\5.\u062c\n.\3/\3/\5/\u0630\n/\3/\5/"+
		"\u0633\n/\3/\3/\7/\u0637\n/\f/\16/\u063a\13/\3/\3/\5/\u063e\n/\3/\5/\u0641"+
		"\n/\3/\3/\7/\u0645\n/\f/\16/\u0648\13/\5/\u064a\n/\3\60\3\60\5\60\u064e"+
		"\n\60\3\60\3\60\3\60\5\60\u0653\n\60\3\60\3\60\3\60\5\60\u0658\n\60\3"+
		"\60\3\60\5\60\u065c\n\60\3\60\3\60\3\60\5\60\u0661\n\60\3\60\5\60\u0664"+
		"\n\60\3\60\3\60\5\60\u0668\n\60\3\60\3\60\5\60\u066c\n\60\3\60\3\60\5"+
		"\60\u0670\n\60\3\60\3\60\5\60\u0674\n\60\3\60\3\60\3\60\5\60\u0679\n\60"+
		"\3\60\3\60\3\60\5\60\u067e\n\60\3\60\3\60\3\60\5\60\u0683\n\60\3\60\3"+
		"\60\3\60\3\60\5\60\u0689\n\60\3\60\3\60\3\60\5\60\u068e\n\60\3\60\3\60"+
		"\3\60\5\60\u0693\n\60\3\60\3\60\3\60\3\60\5\60\u0699\n\60\3\60\3\60\3"+
		"\60\5\60\u069e\n\60\3\60\3\60\3\60\5\60\u06a3\n\60\3\60\3\60\3\60\5\60"+
		"\u06a8\n\60\3\60\3\60\3\60\5\60\u06ad\n\60\3\60\3\60\3\60\5\60\u06b2\n"+
		"\60\3\60\3\60\3\60\5\60\u06b7\n\60\3\60\3\60\3\60\5\60\u06bc\n\60\3\60"+
		"\3\60\3\60\5\60\u06c1\n\60\3\60\3\60\3\60\5\60\u06c6\n\60\3\60\3\60\3"+
		"\60\5\60\u06cb\n\60\3\60\3\60\3\60\3\60\5\60\u06d1\n\60\3\60\3\60\3\60"+
		"\5\60\u06d6\n\60\3\60\3\60\3\60\3\60\5\60\u06dc\n\60\3\61\3\61\3\61\3"+
		"\62\3\62\3\62\3\62\3\62\5\62\u06e6\n\62\3\62\3\62\3\62\3\62\3\62\5\62"+
		"\u06ed\n\62\5\62\u06ef\n\62\3\62\3\62\3\62\3\62\7\62\u06f5\n\62\f\62\16"+
		"\62\u06f8\13\62\3\62\3\62\5\62\u06fc\n\62\3\63\5\63\u06ff\n\63\3\63\3"+
		"\63\3\63\3\63\3\63\3\63\5\63\u0707\n\63\3\63\3\63\3\63\3\63\5\63\u070d"+
		"\n\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63"+
		"\3\63\5\63\u071d\n\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63"+
		"\5\63\u0729\n\63\5\63\u072b\n\63\3\64\5\64\u072e\n\64\3\64\3\64\3\64\3"+
		"\64\3\64\3\64\5\64\u0736\n\64\3\64\3\64\3\64\3\64\5\64\u073c\n\64\3\64"+
		"\3\64\3\64\3\64\5\64\u0742\n\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65"+
		"\3\65\7\65\u074d\n\65\f\65\16\65\u0750\13\65\3\65\3\65\7\65\u0754\n\65"+
		"\f\65\16\65\u0757\13\65\3\65\3\65\3\65\7\65\u075c\n\65\f\65\16\65\u075f"+
		"\13\65\5\65\u0761\n\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\7\65\u076a\n"+
		"\65\f\65\16\65\u076d\13\65\3\65\3\65\3\65\7\65\u0772\n\65\f\65\16\65\u0775"+
		"\13\65\5\65\u0777\n\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\7\65\u0781"+
		"\n\65\f\65\16\65\u0784\13\65\3\65\3\65\7\65\u0788\n\65\f\65\16\65\u078b"+
		"\13\65\3\65\3\65\3\65\7\65\u0790\n\65\f\65\16\65\u0793\13\65\5\65\u0795"+
		"\n\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\7\65\u079f\n\65\f\65\16"+
		"\65\u07a2\13\65\3\65\3\65\7\65\u07a6\n\65\f\65\16\65\u07a9\13\65\3\65"+
		"\3\65\3\65\7\65\u07ae\n\65\f\65\16\65\u07b1\13\65\5\65\u07b3\n\65\3\65"+
		"\3\65\3\65\7\65\u07b8\n\65\f\65\16\65\u07bb\13\65\3\65\3\65\3\65\7\65"+
		"\u07c0\n\65\f\65\16\65\u07c3\13\65\5\65\u07c5\n\65\5\65\u07c7\n\65\3\66"+
		"\3\66\3\66\5\66\u07cc\n\66\3\67\3\67\3\67\3\67\6\67\u07d2\n\67\r\67\16"+
		"\67\u07d3\3\67\3\67\38\38\38\78\u07db\n8\f8\168\u07de\138\39\59\u07e1"+
		"\n9\39\39\59\u07e5\n9\39\39\39\59\u07ea\n9\39\39\39\39\59\u07f0\n9\39"+
		"\39\39\39\59\u07f6\n9\39\39\39\59\u07fb\n9\39\39\39\59\u0800\n9\39\39"+
		"\39\59\u0805\n9\39\39\39\59\u080a\n9\39\59\u080d\n9\3:\3:\3:\5:\u0812"+
		"\n:\3:\6:\u0815\n:\r:\16:\u0816\3:\3:\3:\3:\3:\3:\3:\3:\5:\u0821\n:\3"+
		";\3;\5;\u0825\n;\3;\3;\3;\3;\3;\5;\u082c\n;\3;\3;\3;\5;\u0831\n;\3;\5"+
		";\u0834\n;\3;\3;\3;\5;\u0839\n;\3;\5;\u083c\n;\3;\3;\5;\u0840\n;\3;\3"+
		";\5;\u0844\n;\3<\3<\3<\3<\7<\u084a\n<\f<\16<\u084d\13<\3=\3=\3=\3=\3="+
		"\3=\3=\3>\3>\3>\3>\3>\3>\3>\3>\3>\5>\u085f\n>\3>\5>\u0862\n>\3>\5>\u0865"+
		"\n>\3>\3>\5>\u0869\n>\3>\3>\3?\3?\3?\3?\7?\u0871\n?\f?\16?\u0874\13?\3"+
		"@\3@\3@\3@\3@\3@\3@\3@\7@\u087e\n@\f@\16@\u0881\13@\3@\3@\3A\3A\5A\u0887"+
		"\nA\3A\5A\u088a\nA\3A\3A\3A\3A\3A\7A\u0891\nA\fA\16A\u0894\13A\5A\u0896"+
		"\nA\3A\5A\u0899\nA\3B\3B\3B\3B\3B\3B\3B\3B\3B\5B\u08a4\nB\3B\5B\u08a7"+
		"\nB\3B\3B\5B\u08ab\nB\3B\3B\3C\3C\3C\3C\5C\u08b3\nC\3C\5C\u08b6\nC\3C"+
		"\3C\3C\5C\u08bb\nC\3C\3C\3C\3C\3C\3C\5C\u08c3\nC\3C\3C\3C\3C\5C\u08c9"+
		"\nC\3C\3C\5C\u08cd\nC\3D\3D\5D\u08d1\nD\3D\7D\u08d4\nD\fD\16D\u08d7\13"+
		"D\3D\3D\5D\u08db\nD\3D\3D\3D\3D\3D\5D\u08e2\nD\3D\3D\5D\u08e6\nD\3D\3"+
		"D\3D\3D\3D\3D\3D\7D\u08ef\nD\fD\16D\u08f2\13D\3D\3D\3D\3D\3D\5D\u08f9"+
		"\nD\3D\5D\u08fc\nD\3D\3D\7D\u0900\nD\fD\16D\u0903\13D\3D\3D\3D\5D\u0908"+
		"\nD\5D\u090a\nD\3D\3D\3D\5D\u090f\nD\3D\5D\u0912\nD\3D\3D\7D\u0916\nD"+
		"\fD\16D\u0919\13D\3D\3D\3D\5D\u091e\nD\5D\u0920\nD\3D\3D\5D\u0924\nD\3"+
		"D\5D\u0927\nD\3D\5D\u092a\nD\3D\3D\7D\u092e\nD\fD\16D\u0931\13D\3D\3D"+
		"\3D\5D\u0936\nD\3D\5D\u0939\nD\3D\3D\7D\u093d\nD\fD\16D\u0940\13D\3D\3"+
		"D\3D\5D\u0945\nD\5D\u0947\nD\3D\3D\3D\5D\u094c\nD\3D\3D\3D\3D\3D\3D\5"+
		"D\u0954\nD\5D\u0956\nD\3D\3D\3D\3D\3D\3D\3D\5D\u095f\nD\3D\3D\3D\5D\u0964"+
		"\nD\3D\3D\3D\3D\3D\3D\5D\u096c\nD\3D\3D\5D\u0970\nD\3D\3D\3D\3D\3D\3D"+
		"\5D\u0978\nD\3D\3D\3D\3D\3D\3D\3D\3D\5D\u0982\nD\3D\3D\3D\5D\u0987\nD"+
		"\3D\3D\3D\3D\3D\5D\u098e\nD\3D\3D\5D\u0992\nD\3D\3D\5D\u0996\nD\3D\3D"+
		"\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5D\u09ae"+
		"\nD\3D\3D\5D\u09b2\nD\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5D\u09be\nD\3D\5D"+
		"\u09c1\nD\3D\3D\3D\3D\3D\3D\3D\5D\u09ca\nD\3D\3D\3D\3D\3D\3D\3D\3D\3D"+
		"\3D\3D\3D\3D\7D\u09d9\nD\fD\16D\u09dc\13D\3D\3D\3D\3D\3D\3D\3D\3D\3D\5"+
		"D\u09e7\nD\3D\3D\3D\3D\3D\5D\u09ee\nD\3D\3D\3D\3D\3D\5D\u09f5\nD\3D\3"+
		"D\3D\3D\3D\3D\3D\3D\3D\3D\3D\7D\u0a02\nD\fD\16D\u0a05\13D\3D\3D\3D\3D"+
		"\3D\3D\3D\3D\3D\3D\5D\u0a11\nD\3D\3D\3D\3D\5D\u0a17\nD\3D\3D\3D\3D\5D"+
		"\u0a1d\nD\3D\3D\3D\3D\5D\u0a23\nD\3D\3D\3D\3D\5D\u0a29\nD\3D\3D\3D\3D"+
		"\5D\u0a2f\nD\3D\3D\3D\3D\5D\u0a35\nD\3E\3E\3E\5E\u0a3a\nE\3E\3E\3F\3F"+
		"\3F\5F\u0a41\nF\3F\3F\3G\3G\3G\5G\u0a48\nG\3G\3G\3G\3G\3G\5G\u0a4f\nG"+
		"\3G\3G\3G\5G\u0a54\nG\3G\7G\u0a57\nG\fG\16G\u0a5a\13G\3H\3H\3H\3H\3H\3"+
		"H\3H\3H\3I\3I\3I\5I\u0a67\nI\3I\3I\3J\3J\3J\5J\u0a6e\nJ\3J\3J\3K\3K\3"+
		"K\5K\u0a75\nK\3K\3K\3L\3L\5L\u0a7b\nL\3L\3L\5L\u0a7f\nL\3L\3L\5L\u0a83"+
		"\nL\3M\3M\3M\3M\3M\5M\u0a8a\nM\3M\5M\u0a8d\nM\3N\3N\3N\5N\u0a92\nN\3N"+
		"\3N\3O\3O\3O\5O\u0a99\nO\3O\3O\3O\7O\u0a9e\nO\fO\16O\u0aa1\13O\3O\5O\u0aa4"+
		"\nO\3P\3P\3P\3P\3P\7P\u0aab\nP\fP\16P\u0aae\13P\3Q\3Q\3Q\3Q\3R\3R\5R\u0ab6"+
		"\nR\3R\3R\3S\3S\3S\3S\3S\5S\u0abf\nS\3S\5S\u0ac2\nS\3T\3T\5T\u0ac6\nT"+
		"\3U\3U\3U\3V\3V\3V\3V\5V\u0acf\nV\3W\3W\5W\u0ad3\nW\3W\5W\u0ad6\nW\3W"+
		"\5W\u0ad9\nW\3W\3W\3W\3W\5W\u0adf\nW\3W\5W\u0ae2\nW\3W\3W\3W\3W\5W\u0ae8"+
		"\nW\3W\3W\3W\3W\3W\7W\u0aef\nW\fW\16W\u0af2\13W\5W\u0af4\nW\3W\3W\3W\3"+
		"W\3W\3W\3W\7W\u0afd\nW\fW\16W\u0b00\13W\5W\u0b02\nW\3X\3X\3X\5X\u0b07"+
		"\nX\3X\5X\u0b0a\nX\3X\3X\3X\5X\u0b0f\nX\3X\3X\3X\3X\3X\3X\3X\3X\5X\u0b19"+
		"\nX\3X\3X\3X\5X\u0b1e\nX\3X\3X\6X\u0b22\nX\rX\16X\u0b23\5X\u0b26\nX\3"+
		"X\3X\6X\u0b2a\nX\rX\16X\u0b2b\5X\u0b2e\nX\3X\3X\3X\3X\5X\u0b34\nX\3X\3"+
		"X\3X\3X\7X\u0b3a\nX\fX\16X\u0b3d\13X\3X\3X\5X\u0b41\nX\3X\3X\3X\3X\7X"+
		"\u0b47\nX\fX\16X\u0b4a\13X\5X\u0b4c\nX\3Y\3Y\3Y\5Y\u0b51\nY\3Y\5Y\u0b54"+
		"\nY\3Y\3Y\3Y\5Y\u0b59\nY\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0b61\nY\3Y\3Y\3Y\3Y\3Y"+
		"\3Y\5Y\u0b69\nY\3Y\3Y\3Y\3Y\5Y\u0b6f\nY\3Y\3Y\3Y\3Y\7Y\u0b75\nY\fY\16"+
		"Y\u0b78\13Y\3Y\3Y\5Y\u0b7c\nY\3Y\3Y\3Y\3Y\7Y\u0b82\nY\fY\16Y\u0b85\13"+
		"Y\5Y\u0b87\nY\3Z\3Z\5Z\u0b8b\nZ\3Z\5Z\u0b8e\nZ\3Z\3Z\3Z\3Z\3Z\3Z\5Z\u0b96"+
		"\nZ\3Z\3Z\3Z\3Z\5Z\u0b9c\nZ\3Z\3Z\3Z\3Z\3Z\7Z\u0ba3\nZ\fZ\16Z\u0ba6\13"+
		"Z\5Z\u0ba8\nZ\3[\3[\5[\u0bac\n[\3[\3[\5[\u0bb0\n[\3[\3[\6[\u0bb4\n[\r"+
		"[\16[\u0bb5\3[\3[\5[\u0bba\n[\3[\3[\5[\u0bbe\n[\5[\u0bc0\n[\3[\5[\u0bc3"+
		"\n[\3[\5[\u0bc6\n[\3[\5[\u0bc9\n[\3[\3[\6[\u0bcd\n[\r[\16[\u0bce\3[\3"+
		"[\5[\u0bd3\n[\3[\5[\u0bd6\n[\3[\5[\u0bd9\n[\3[\5[\u0bdc\n[\3[\5[\u0bdf"+
		"\n[\5[\u0be1\n[\3\\\3\\\5\\\u0be5\n\\\3]\3]\3]\3]\5]\u0beb\n]\3]\3]\3"+
		"]\3]\5]\u0bf1\n]\3]\7]\u0bf4\n]\f]\16]\u0bf7\13]\5]\u0bf9\n]\3^\3^\3^"+
		"\3^\5^\u0bff\n^\3_\3_\5_\u0c03\n_\3`\3`\3`\3`\3`\3`\5`\u0c0b\n`\3a\3a"+
		"\5a\u0c0f\na\3a\5a\u0c12\na\3a\5a\u0c15\na\3a\3a\3a\3a\3a\3a\3a\5a\u0c1e"+
		"\na\3a\3a\5a\u0c22\na\3a\5a\u0c25\na\3a\3a\5a\u0c29\na\3b\3b\5b\u0c2d"+
		"\nb\3b\5b\u0c30\nb\3b\5b\u0c33\nb\3b\3b\3b\5b\u0c38\nb\3b\3b\3b\3b\5b"+
		"\u0c3e\nb\7b\u0c40\nb\fb\16b\u0c43\13b\3b\3b\3b\3b\3b\3b\3b\5b\u0c4c\n"+
		"b\3b\3b\3b\3b\5b\u0c52\nb\7b\u0c54\nb\fb\16b\u0c57\13b\3b\3b\3b\5b\u0c5c"+
		"\nb\3b\3b\5b\u0c60\nb\3c\3c\3c\3c\5c\u0c66\nc\3c\5c\u0c69\nc\3d\3d\3d"+
		"\3d\3d\3d\3d\3d\3d\3d\5d\u0c75\nd\3d\3d\5d\u0c79\nd\3d\3d\5d\u0c7d\nd"+
		"\3e\3e\3e\3e\3e\3e\5e\u0c85\ne\3e\3e\5e\u0c89\ne\3f\3f\3f\3f\3g\3g\5g"+
		"\u0c91\ng\3g\5g\u0c94\ng\3g\3g\5g\u0c98\ng\3g\5g\u0c9b\ng\3g\3g\3g\3g"+
		"\7g\u0ca1\ng\fg\16g\u0ca4\13g\3g\3g\5g\u0ca8\ng\3g\5g\u0cab\ng\3g\5g\u0cae"+
		"\ng\3h\3h\5h\u0cb2\nh\3h\5h\u0cb5\nh\3h\3h\3h\3h\3h\7h\u0cbc\nh\fh\16"+
		"h\u0cbf\13h\3h\3h\5h\u0cc3\nh\3i\3i\3i\3i\3i\7i\u0cca\ni\fi\16i\u0ccd"+
		"\13i\3j\3j\5j\u0cd1\nj\3k\3k\3k\7k\u0cd6\nk\fk\16k\u0cd9\13k\3l\3l\7l"+
		"\u0cdd\nl\fl\16l\u0ce0\13l\3l\3l\3l\7l\u0ce5\nl\fl\16l\u0ce8\13l\3l\3"+
		"l\5l\u0cec\nl\3m\3m\3m\3m\3m\3m\5m\u0cf4\nm\3m\5m\u0cf7\nm\3m\5m\u0cfa"+
		"\nm\3m\3m\3m\7m\u0cff\nm\fm\16m\u0d02\13m\5m\u0d04\nm\3m\3m\3m\3m\3m\5"+
		"m\u0d0b\nm\3m\5m\u0d0e\nm\3m\3m\3m\3m\3m\3m\5m\u0d16\nm\3n\3n\3n\3n\5"+
		"n\u0d1c\nn\3n\3n\3n\3n\3o\3o\3o\3o\3o\5o\u0d27\no\3p\5p\u0d2a\np\3p\3"+
		"p\3p\3p\3p\3p\3p\3p\3p\5p\u0d35\np\3p\3p\3p\3p\5p\u0d3b\np\3p\3p\5p\u0d3f"+
		"\np\3p\3p\3p\3p\3p\3p\3p\3p\3p\5p\u0d4a\np\3p\3p\3p\5p\u0d4f\np\5p\u0d51"+
		"\np\3p\3p\5p\u0d55\np\3q\3q\3q\3q\3q\3q\3q\3q\5q\u0d5f\nq\3r\3r\3r\3r"+
		"\3r\3r\3r\3r\5r\u0d69\nr\3s\3s\7s\u0d6d\ns\fs\16s\u0d70\13s\3s\3s\5s\u0d74"+
		"\ns\3s\5s\u0d77\ns\3s\5s\u0d7a\ns\3s\5s\u0d7d\ns\3s\3s\7s\u0d81\ns\fs"+
		"\16s\u0d84\13s\3s\3s\5s\u0d88\ns\3s\5s\u0d8b\ns\3s\5s\u0d8e\ns\3s\5s\u0d91"+
		"\ns\5s\u0d93\ns\3t\3t\7t\u0d97\nt\ft\16t\u0d9a\13t\3t\3t\5t\u0d9e\nt\3"+
		"t\5t\u0da1\nt\3t\5t\u0da4\nt\3u\3u\5u\u0da8\nu\3u\3u\3v\3v\5v\u0dae\n"+
		"v\3v\3v\5v\u0db2\nv\3w\3w\3w\3w\3w\3w\3w\3w\5w\u0dbc\nw\3x\3x\5x\u0dc0"+
		"\nx\3x\3x\7x\u0dc4\nx\fx\16x\u0dc7\13x\3y\3y\3y\3y\3y\3y\5y\u0dcf\ny\3"+
		"y\5y\u0dd2\ny\3y\3y\5y\u0dd6\ny\3y\5y\u0dd9\ny\3y\3y\5y\u0ddd\ny\3y\3"+
		"y\5y\u0de1\ny\3y\5y\u0de4\ny\5y\u0de6\ny\3z\3z\3z\3z\7z\u0dec\nz\fz\16"+
		"z\u0def\13z\3z\3z\3z\3z\3z\3z\3z\3z\3z\5z\u0dfa\nz\3z\3z\6z\u0dfe\nz\r"+
		"z\16z\u0dff\5z\u0e02\nz\3z\3z\6z\u0e06\nz\rz\16z\u0e07\5z\u0e0a\nz\5z"+
		"\u0e0c\nz\3{\3{\3{\3{\5{\u0e12\n{\3{\3{\3{\3{\3{\3{\5{\u0e1a\n{\3|\3|"+
		"\3|\3|\3|\3|\5|\u0e22\n|\3}\3}\3}\3}\5}\u0e28\n}\3}\3}\3}\3}\3}\7}\u0e2f"+
		"\n}\f}\16}\u0e32\13}\3}\3}\5}\u0e36\n}\5}\u0e38\n}\3}\3}\5}\u0e3c\n}\3"+
		"~\3~\5~\u0e40\n~\3\177\3\177\3\177\3\177\5\177\u0e46\n\177\3\177\3\177"+
		"\3\177\3\177\3\177\5\177\u0e4d\n\177\3\u0080\3\u0080\5\u0080\u0e51\n\u0080"+
		"\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\7\u0081\u0e58\n\u0081\f\u0081"+
		"\16\u0081\u0e5b\13\u0081\5\u0081\u0e5d\n\u0081\3\u0082\3\u0082\5\u0082"+
		"\u0e61\n\u0082\3\u0083\3\u0083\5\u0083\u0e65\n\u0083\3\u0083\3\u0083\5"+
		"\u0083\u0e69\n\u0083\3\u0083\5\u0083\u0e6c\n\u0083\3\u0083\5\u0083\u0e6f"+
		"\n\u0083\3\u0083\5\u0083\u0e72\n\u0083\3\u0084\3\u0084\5\u0084\u0e76\n"+
		"\u0084\3\u0084\3\u0084\5\u0084\u0e7a\n\u0084\3\u0084\5\u0084\u0e7d\n\u0084"+
		"\3\u0084\5\u0084\u0e80\n\u0084\3\u0084\5\u0084\u0e83\n\u0084\3\u0085\3"+
		"\u0085\3\u0085\3\u0086\3\u0086\5\u0086\u0e8a\n\u0086\3\u0086\3\u0086\5"+
		"\u0086\u0e8e\n\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3"+
		"\u0088\3\u0088\3\u0088\3\u0088\3\u0088\7\u0088\u0e9b\n\u0088\f\u0088\16"+
		"\u0088\u0e9e\13\u0088\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a"+
		"\3\u008a\3\u008a\3\u008b\3\u008b\5\u008b\u0eaa\n\u008b\3\u008b\3\u008b"+
		"\3\u008b\3\u008b\7\u008b\u0eb0\n\u008b\f\u008b\16\u008b\u0eb3\13\u008b"+
		"\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\5\u008c\u0ebc"+
		"\n\u008c\3\u008d\3\u008d\5\u008d\u0ec0\n\u008d\3\u008d\5\u008d\u0ec3\n"+
		"\u008d\3\u008d\3\u008d\3\u008e\3\u008e\5\u008e\u0ec9\n\u008e\3\u008e\5"+
		"\u008e\u0ecc\n\u008e\3\u008e\5\u008e\u0ecf\n\u008e\3\u008f\3\u008f\3\u008f"+
		"\3\u008f\3\u008f\3\u008f\3\u008f\5\u008f\u0ed8\n\u008f\3\u0090\3\u0090"+
		"\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\5\u0090\u0ee1\n\u0090\3\u0091"+
		"\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\7\u0091\u0ee9\n\u0091\f\u0091"+
		"\16\u0091\u0eec\13\u0091\3\u0091\5\u0091\u0eef\n\u0091\3\u0092\3\u0092"+
		"\3\u0092\3\u0092\3\u0092\3\u0092\7\u0092\u0ef7\n\u0092\f\u0092\16\u0092"+
		"\u0efa\13\u0092\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093"+
		"\5\u0093\u0f03\n\u0093\3\u0094\3\u0094\3\u0094\3\u0095\3\u0095\3\u0095"+
		"\5\u0095\u0f0b\n\u0095\3\u0095\5\u0095\u0f0e\n\u0095\3\u0096\3\u0096\3"+
		"\u0096\3\u0096\3\u0096\7\u0096\u0f15\n\u0096\f\u0096\16\u0096\u0f18\13"+
		"\u0096\5\u0096\u0f1a\n\u0096\3\u0096\3\u0096\5\u0096\u0f1e\n\u0096\3\u0096"+
		"\7\u0096\u0f21\n\u0096\f\u0096\16\u0096\u0f24\13\u0096\3\u0096\5\u0096"+
		"\u0f27\n\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\7\u0097\u0f2e\n"+
		"\u0097\f\u0097\16\u0097\u0f31\13\u0097\5\u0097\u0f33\n\u0097\3\u0098\3"+
		"\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a"+
		"\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a"+
		"\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\7\u009a"+
		"\u0f50\n\u009a\f\u009a\16\u009a\u0f53\13\u009a\5\u009a\u0f55\n\u009a\3"+
		"\u009a\5\u009a\u0f58\n\u009a\3\u009b\3\u009b\3\u009c\3\u009c\3\u009d\3"+
		"\u009d\3\u009e\3\u009e\3\u009e\3\u009e\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f"+
		"\3\u009f\3\u009f\7\u009f\u0f8e\n\u009f\f\u009f\16\u009f\u0f91\13\u009f"+
		"\3\u009f\3\u009f\5\u009f\u0f95\n\u009f\3\u00a0\3\u00a0\3\u00a0\3\u00a0"+
		"\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+
		"\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+
		"\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u0fb1\n\u00a2\3\u00a3\3\u00a3"+
		"\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3"+
		"\3\u00a3\5\u00a3\u0fbf\n\u00a3\3\u00a4\3\u00a4\3\u00a4\7\u00a4\u0fc4\n"+
		"\u00a4\f\u00a4\16\u00a4\u0fc7\13\u00a4\3\u00a4\5\u00a4\u0fca\n\u00a4\3"+
		"\u00a5\3\u00a5\3\u00a5\3\u00a5\5\u00a5\u0fd0\n\u00a5\3\u00a6\3\u00a6\3"+
		"\u00a6\3\u00a6\3\u00a6\3\u00a6\5\u00a6\u0fd8\n\u00a6\5\u00a6\u0fda\n\u00a6"+
		"\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8"+
		"\5\u00a8\u0fe5\n\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa"+
		"\3\u00aa\3\u00aa\5\u00aa\u0fef\n\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab"+
		"\3\u00ab\5\u00ab\u0ff6\n\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ac\5\u00ac"+
		"\u0ffc\n\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae\5\u00ae"+
		"\u1004\n\u00ae\3\u00af\3\u00af\3\u00af\5\u00af\u1009\n\u00af\3\u00af\3"+
		"\u00af\3\u00af\3\u00af\7\u00af\u100f\n\u00af\f\u00af\16\u00af\u1012\13"+
		"\u00af\3\u00af\3\u00af\3\u00af\7\u00af\u1017\n\u00af\f\u00af\16\u00af"+
		"\u101a\13\u00af\3\u00af\3\u00af\3\u00af\7\u00af\u101f\n\u00af\f\u00af"+
		"\16\u00af\u1022\13\u00af\3\u00af\3\u00af\3\u00af\7\u00af\u1027\n\u00af"+
		"\f\u00af\16\u00af\u102a\13\u00af\3\u00af\7\u00af\u102d\n\u00af\f\u00af"+
		"\16\u00af\u1030\13\u00af\5\u00af\u1032\n\u00af\3\u00af\3\u00af\5\u00af"+
		"\u1036\n\u00af\3\u00b0\3\u00b0\3\u00b0\5\u00b0\u103b\n\u00b0\3\u00b0\6"+
		"\u00b0\u103e\n\u00b0\r\u00b0\16\u00b0\u103f\3\u00b0\3\u00b0\6\u00b0\u1044"+
		"\n\u00b0\r\u00b0\16\u00b0\u1045\5\u00b0\u1048\n\u00b0\3\u00b0\3\u00b0"+
		"\3\u00b0\3\u00b1\3\u00b1\3\u00b1\3\u00b1\6\u00b1\u1051\n\u00b1\r\u00b1"+
		"\16\u00b1\u1052\3\u00b1\7\u00b1\u1056\n\u00b1\f\u00b1\16\u00b1\u1059\13"+
		"\u00b1\3\u00b1\3\u00b1\6\u00b1\u105d\n\u00b1\r\u00b1\16\u00b1\u105e\5"+
		"\u00b1\u1061\n\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\3\u00b2\3"+
		"\u00b3\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b4\5\u00b4\u106f\n\u00b4\3"+
		"\u00b4\3\u00b4\6\u00b4\u1073\n\u00b4\r\u00b4\16\u00b4\u1074\3\u00b4\3"+
		"\u00b4\3\u00b4\5\u00b4\u107a\n\u00b4\3\u00b5\3\u00b5\3\u00b5\5\u00b5\u107f"+
		"\n\u00b5\3\u00b5\3\u00b5\6\u00b5\u1083\n\u00b5\r\u00b5\16\u00b5\u1084"+
		"\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\5\u00b5\u108c\n\u00b5\3\u00b6"+
		"\3\u00b6\3\u00b6\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u1094\n\u00b7\3\u00b7"+
		"\3\u00b7\3\u00b7\3\u00b7\6\u00b7\u109a\n\u00b7\r\u00b7\16\u00b7\u109b"+
		"\3\u00b7\3\u00b7\3\u00b7\5\u00b7\u10a1\n\u00b7\3\u00b8\3\u00b8\3\u00b8"+
		"\3\u00b8\5\u00b8\u10a7\n\u00b8\3\u00b8\5\u00b8\u10aa\n\u00b8\3\u00b8\3"+
		"\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\5\u00b8\u10b2\n\u00b8\3\u00b9\3"+
		"\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u10b9\n\u00b9\3\u00ba\3\u00ba\3"+
		"\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba\u10c2\n\u00ba\3\u00ba\5"+
		"\u00ba\u10c5\n\u00ba\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3"+
		"\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc\u10d4\n"+
		"\u00bc\f\u00bc\16\u00bc\u10d7\13\u00bc\3\u00bc\3\u00bc\3\u00bd\3\u00bd"+
		"\3\u00bd\5\u00bd\u10de\n\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd\3\u00bd"+
		"\3\u00bd\5\u00bd\u10e6\n\u00bd\3\u00be\3\u00be\5\u00be\u10ea\n\u00be\3"+
		"\u00be\3\u00be\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u10f1\n\u00bf\3\u00bf\3"+
		"\u00bf\6\u00bf\u10f5\n\u00bf\r\u00bf\16\u00bf\u10f6\3\u00c0\3\u00c0\3"+
		"\u00c0\3\u00c0\6\u00c0\u10fd\n\u00c0\r\u00c0\16\u00c0\u10fe\3\u00c1\3"+
		"\u00c1\3\u00c1\3\u00c1\3\u00c1\7\u00c1\u1106\n\u00c1\f\u00c1\16\u00c1"+
		"\u1109\13\u00c1\3\u00c1\3\u00c1\3\u00c1\5\u00c1\u110e\n\u00c1\3\u00c1"+
		"\3\u00c1\3\u00c1\7\u00c1\u1113\n\u00c1\f\u00c1\16\u00c1\u1116\13\u00c1"+
		"\3\u00c1\3\u00c1\3\u00c1\3\u00c1\5\u00c1\u111c\n\u00c1\3\u00c1\7\u00c1"+
		"\u111f\n\u00c1\f\u00c1\16\u00c1\u1122\13\u00c1\5\u00c1\u1124\n\u00c1\5"+
		"\u00c1\u1126\n\u00c1\3\u00c1\3\u00c1\6\u00c1\u112a\n\u00c1\r\u00c1\16"+
		"\u00c1\u112b\5\u00c1\u112e\n\u00c1\3\u00c1\3\u00c1\7\u00c1\u1132\n\u00c1"+
		"\f\u00c1\16\u00c1\u1135\13\u00c1\5\u00c1\u1137\n\u00c1\3\u00c2\3\u00c2"+
		"\3\u00c2\3\u00c2\3\u00c2\7\u00c2\u113e\n\u00c2\f\u00c2\16\u00c2\u1141"+
		"\13\u00c2\3\u00c2\3\u00c2\3\u00c2\5\u00c2\u1146\n\u00c2\3\u00c2\3\u00c2"+
		"\3\u00c2\7\u00c2\u114b\n\u00c2\f\u00c2\16\u00c2\u114e\13\u00c2\3\u00c2"+
		"\3\u00c2\3\u00c2\3\u00c2\5\u00c2\u1154\n\u00c2\3\u00c2\7\u00c2\u1157\n"+
		"\u00c2\f\u00c2\16\u00c2\u115a\13\u00c2\5\u00c2\u115c\n\u00c2\5\u00c2\u115e"+
		"\n\u00c2\3\u00c2\3\u00c2\6\u00c2\u1162\n\u00c2\r\u00c2\16\u00c2\u1163"+
		"\5\u00c2\u1166\n\u00c2\3\u00c2\3\u00c2\7\u00c2\u116a\n\u00c2\f\u00c2\16"+
		"\u00c2\u116d\13\u00c2\5\u00c2\u116f\n\u00c2\3\u00c3\3\u00c3\3\u00c3\5"+
		"\u00c3\u1174\n\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3\u1179\n\u00c3\f\u00c3"+
		"\16\u00c3\u117c\13\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\7\u00c4\u1182"+
		"\n\u00c4\f\u00c4\16\u00c4\u1185\13\u00c4\3\u00c4\3\u00c4\5\u00c4\u1189"+
		"\n\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\7\u00c4\u1190\n\u00c4"+
		"\f\u00c4\16\u00c4\u1193\13\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\5\u00c4"+
		"\u1199\n\u00c4\3\u00c4\7\u00c4\u119c\n\u00c4\f\u00c4\16\u00c4\u119f\13"+
		"\u00c4\5\u00c4\u11a1\n\u00c4\5\u00c4\u11a3\n\u00c4\3\u00c4\3\u00c4\3\u00c4"+
		"\3\u00c4\7\u00c4\u11a9\n\u00c4\f\u00c4\16\u00c4\u11ac\13\u00c4\5\u00c4"+
		"\u11ae\n\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+
		"\3\u00c5\7\u00c5\u11b8\n\u00c5\f\u00c5\16\u00c5\u11bb\13\u00c5\3\u00c5"+
		"\3\u00c5\3\u00c5\5\u00c5\u11c0\n\u00c5\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+
		"\3\u00c6\7\u00c6\u11c7\n\u00c6\f\u00c6\16\u00c6\u11ca\13\u00c6\3\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\7\u00c7\u11d0\n\u00c7\f\u00c7\16\u00c7\u11d3"+
		"\13\u00c7\3\u00c7\3\u00c7\5\u00c7\u11d7\n\u00c7\3\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\7\u00c7\u11de\n\u00c7\f\u00c7\16\u00c7\u11e1\13\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u11e6\n\u00c7\3\u00c7\3\u00c7\3\u00c7"+
		"\3\u00c7\3\u00c7\3\u00c7\3\u00c7\7\u00c7\u11ef\n\u00c7\f\u00c7\16\u00c7"+
		"\u11f2\13\u00c7\5\u00c7\u11f4\n\u00c7\3\u00c8\3\u00c8\3\u00c8\3\u00c8"+
		"\3\u00c8\3\u00c8\3\u00c8\3\u00c8\7\u00c8\u11fe\n\u00c8\f\u00c8\16\u00c8"+
		"\u1201\13\u00c8\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u1207\n\u00c9"+
		"\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u120c\n\u00c9\3\u00ca\3\u00ca\3\u00ca"+
		"\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb"+
		"\3\u00cb\5\u00cb\u121b\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb"+
		"\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u1226\n\u00cb\3\u00cb\5\u00cb"+
		"\u1229\n\u00cb\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc"+
		"\3\u00cc\5\u00cc\u1233\n\u00cc\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+
		"\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u123d\n\u00cd\3\u00ce\3\u00ce\3\u00ce"+
		"\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u1247\n\u00ce\3\u00cf"+
		"\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d0\3\u00d0\3\u00d0\5\u00d0\u1251"+
		"\n\u00d0\3\u00d1\3\u00d1\5\u00d1\u1255\n\u00d1\3\u00d1\3\u00d1\5\u00d1"+
		"\u1259\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+
		"\5\u00d1\u1262\n\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+
		"\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+
		"\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1\3\u00d1"+
		"\3\u00d1\3\u00d1\5\u00d1\u127e\n\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2"+
		"\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2"+
		"\3\u00d2\3\u00d2\3\u00d2\5\u00d2\u1290\n\u00d2\3\u00d3\3\u00d3\3\u00d3"+
		"\3\u00d3\3\u00d4\3\u00d4\5\u00d4\u1298\n\u00d4\3\u00d4\3\u00d4\3\u00d4"+
		"\3\u00d5\3\u00d5\3\u00d5\3\u00d5\7\u00d5\u12a1\n\u00d5\f\u00d5\16\u00d5"+
		"\u12a4\13\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6\5\u00d6\u12aa\n\u00d6"+
		"\3\u00d7\3\u00d7\5\u00d7\u12ae\n\u00d7\3\u00d7\3\u00d7\3\u00d7\3\u00d8"+
		"\3\u00d8\5\u00d8\u12b5\n\u00d8\3\u00d8\3\u00d8\3\u00d8\5\u00d8\u12ba\n"+
		"\u00d8\3\u00d8\5\u00d8\u12bd\n\u00d8\3\u00d8\5\u00d8\u12c0\n\u00d8\3\u00d9"+
		"\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\5\u00d9\u12c9\n\u00d9"+
		"\3\u00da\3\u00da\5\u00da\u12cd\n\u00da\3\u00da\3\u00da\3\u00da\3\u00da"+
		"\3\u00da\3\u00da\3\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db"+
		"\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+
		"\3\u00dd\3\u00dd\3\u00dd\3\u00dd\7\u00dd\u12e9\n\u00dd\f\u00dd\16\u00dd"+
		"\u12ec\13\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\5\u00dd\u12f2\n\u00dd"+
		"\3\u00dd\3\u00dd\5\u00dd\u12f6\n\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+
		"\3\u00dd\5\u00dd\u12fd\n\u00dd\3\u00dd\5\u00dd\u1300\n\u00dd\3\u00dd\3"+
		"\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+
		"\3\u00dd\3\u00dd\7\u00dd\u130e\n\u00dd\f\u00dd\16\u00dd\u1311\13\u00dd"+
		"\5\u00dd\u1313\n\u00dd\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\3\u00de\3\u00de\5\u00de\u131d\n\u00de\3\u00de\3\u00de\5\u00de\u1321\n"+
		"\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u1327\n\u00de\3\u00de\5"+
		"\u00de\u132a\n\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u132f\n\u00de\3\u00de"+
		"\3\u00de\5\u00de\u1333\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\5\u00de\u133a\n\u00de\3\u00de\5\u00de\u133d\n\u00de\3\u00de\3\u00de\3"+
		"\u00de\3\u00de\5\u00de\u1343\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3"+
		"\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\5\u00de\u135b\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u1368\n\u00de\3\u00de"+
		"\5\u00de\u136b\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\3\u00de\3\u00de\5\u00de\u1375\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\3\u00de\3\u00de\5\u00de\u137d\n\u00de\3\u00de\3\u00de\5\u00de\u1381\n"+
		"\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u1388\n\u00de\3"+
		"\u00de\5\u00de\u138b\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\7"+
		"\u00de\u1392\n\u00de\f\u00de\16\u00de\u1395\13\u00de\3\u00de\3\u00de\3"+
		"\u00de\5\u00de\u139a\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\5\u00de\u13a0"+
		"\n\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de"+
		"\5\u00de\u13aa\n\u00de\5\u00de\u13ac\n\u00de\3\u00df\3\u00df\3\u00df\3"+
		"\u00df\5\u00df\u13b2\n\u00df\3\u00df\5\u00df\u13b5\n\u00df\3\u00df\5\u00df"+
		"\u13b8\n\u00df\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0"+
		"\3\u00e0\3\u00e0\3\u00e0\5\u00e0\u13c4\n\u00e0\3\u00e0\5\u00e0\u13c7\n"+
		"\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\5\u00e1\u13cd\n\u00e1\3\u00e2\5"+
		"\u00e2\u13d0\n\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\5"+
		"\u00e2\u13d8\n\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\5"+
		"\u00e2\u13e0\n\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3\5\u00e3\u13e6\n\u00e3"+
		"\3\u00e3\3\u00e3\5\u00e3\u13ea\n\u00e3\3\u00e4\3\u00e4\3\u00e4\3\u00e4"+
		"\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\5\u00e4"+
		"\u13f8\n\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+
		"\3\u00e6\7\u00e6\u1402\n\u00e6\f\u00e6\16\u00e6\u1405\13\u00e6\3\u00e6"+
		"\3\u00e6\3\u00e6\3\u00e6\5\u00e6\u140b\n\u00e6\3\u00e6\5\u00e6\u140e\n"+
		"\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e7\3\u00e7\5\u00e7\u1415\n\u00e7\3"+
		"\u00e7\3\u00e7\3\u00e7\7\u00e7\u141a\n\u00e7\f\u00e7\16\u00e7\u141d\13"+
		"\u00e7\3\u00e8\3\u00e8\5\u00e8\u1421\n\u00e8\3\u00e8\6\u00e8\u1424\n\u00e8"+
		"\r\u00e8\16\u00e8\u1425\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9"+
		"\3\u00e9\7\u00e9\u142f\n\u00e9\f\u00e9\16\u00e9\u1432\13\u00e9\3\u00ea"+
		"\3\u00ea\3\u00ea\3\u00ea\3\u00eb\3\u00eb\3\u00ec\3\u00ec\5\u00ec\u143c"+
		"\n\u00ec\3\u00ec\3\u00ec\3\u00ec\3\u00ec\5\u00ec\u1442\n\u00ec\3\u00ed"+
		"\3\u00ed\3\u00ed\5\u00ed\u1447\n\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed"+
		"\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\5\u00ed\u1454"+
		"\n\u00ed\5\u00ed\u1456\n\u00ed\3\u00ed\3\u00ed\3\u00ed\5\u00ed\u145b\n"+
		"\u00ed\3\u00ed\3\u00ed\3\u00ed\5\u00ed\u1460\n\u00ed\5\u00ed\u1462\n\u00ed"+
		"\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\5\u00ee\u1469\n\u00ee\3\u00ef"+
		"\3\u00ef\3\u00ef\3\u00ef\3\u00ef\5\u00ef\u1470\n\u00ef\3\u00ef\5\u00ef"+
		"\u1473\n\u00ef\3\u00ef\5\u00ef\u1476\n\u00ef\3\u00ef\3\u00ef\3\u00ef\3"+
		"\u00ef\5\u00ef\u147c\n\u00ef\3\u00ef\3\u00ef\5\u00ef\u1480\n\u00ef\3\u00f0"+
		"\3\u00f0\3\u00f0\3\u00f0\5\u00f0\u1486\n\u00f0\3\u00f1\3\u00f1\3\u00f1"+
		"\3\u00f1\5\u00f1\u148c\n\u00f1\3\u00f1\3\u00f1\3\u00f2\3\u00f2\3\u00f2"+
		"\3\u00f3\3\u00f3\3\u00f3\3\u00f4\3\u00f4\3\u00f4\5\u00f4\u1499\n\u00f4"+
		"\3\u00f4\3\u00f4\3\u00f4\5\u00f4\u149e\n\u00f4\3\u00f4\3\u00f4\3\u00f4"+
		"\3\u00f4\7\u00f4\u14a4\n\u00f4\f\u00f4\16\u00f4\u14a7\13\u00f4\5\u00f4"+
		"\u14a9\n\u00f4\3\u00f5\3\u00f5\3\u00f5\5\u00f5\u14ae\n\u00f5\3\u00f5\3"+
		"\u00f5\3\u00f5\5\u00f5\u14b3\n\u00f5\3\u00f5\3\u00f5\3\u00f5\3\u00f5\7"+
		"\u00f5\u14b9\n\u00f5\f\u00f5\16\u00f5\u14bc\13\u00f5\5\u00f5\u14be\n\u00f5"+
		"\3\u00f6\3\u00f6\3\u00f6\3\u00f6\5\u00f6\u14c4\n\u00f6\3\u00f7\3\u00f7"+
		"\5\u00f7\u14c8\n\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7"+
		"\3\u00f7\3\u00f7\3\u00f7\7\u00f7\u14d3\n\u00f7\f\u00f7\16\u00f7\u14d6"+
		"\13\u00f7\3\u00f7\3\u00f7\3\u00f7\5\u00f7\u14db\n\u00f7\3\u00f7\3\u00f7"+
		"\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7\3\u00f7\7\u00f7\u14e5\n\u00f7"+
		"\f\u00f7\16\u00f7\u14e8\13\u00f7\5\u00f7\u14ea\n\u00f7\3\u00f8\3\u00f8"+
		"\3\u00f9\3\u00f9\3\u00f9\3\u00f9\3\u00f9\5\u00f9\u14f3\n\u00f9\3\u00f9"+
		"\3\u00f9\3\u00f9\5\u00f9\u14f8\n\u00f9\3\u00fa\3\u00fa\3\u00fa\3\u00fa"+
		"\5\u00fa\u14fe\n\u00fa\3\u00fb\3\u00fb\3\u00fc\3\u00fc\3\u00fc\5\u00fc"+
		"\u1505\n\u00fc\5\u00fc\u1507\n\u00fc\3\u00fd\3\u00fd\5\u00fd\u150b\n\u00fd"+
		"\3\u00fd\3\u00fd\3\u00fd\3\u00fd\5\u00fd\u1511\n\u00fd\3\u00fd\5\u00fd"+
		"\u1514\n\u00fd\3\u00fe\3\u00fe\3\u00ff\3\u00ff\3\u0100\3\u0100\3\u0100"+
		"\3\u0100\5\u0100\u151e\n\u0100\3\u0101\3\u0101\5\u0101\u1522\n\u0101\3"+
		"\u0102\3\u0102\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103"+
		"\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\3\u0103\6\u0103\u1534"+
		"\n\u0103\r\u0103\16\u0103\u1535\3\u0104\3\u0104\3\u0104\3\u0104\3\u0104"+
		"\5\u0104\u153d\n\u0104\5\u0104\u153f\n\u0104\3\u0105\3\u0105\3\u0105\6"+
		"\u0105\u1544\n\u0105\r\u0105\16\u0105\u1545\5\u0105\u1548\n\u0105\3\u0106"+
		"\3\u0106\5\u0106\u154c\n\u0106\3\u0107\3\u0107\3\u0107\5\u0107\u1551\n"+
		"\u0107\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108\3\u0108"+
		"\3\u0108\5\u0108\u155c\n\u0108\3\u0109\3\u0109\3\u0109\5\u0109\u1561\n"+
		"\u0109\3\u010a\3\u010a\3\u010b\3\u010b\5\u010b\u1567\n\u010b\3\u010c\5"+
		"\u010c\u156a\n\u010c\3\u010c\3\u010c\5\u010c\u156e\n\u010c\3\u010c\6\u010c"+
		"\u1571\n\u010c\r\u010c\16\u010c\u1572\3\u010c\5\u010c\u1576\n\u010c\3"+
		"\u010c\3\u010c\5\u010c\u157a\n\u010c\3\u010c\3\u010c\5\u010c\u157e\n\u010c"+
		"\5\u010c\u1580\n\u010c\3\u010d\3\u010d\3\u010e\5\u010e\u1585\n\u010e\3"+
		"\u010e\3\u010e\3\u010f\5\u010f\u158a\n\u010f\3\u010f\3\u010f\3\u0110\3"+
		"\u0110\3\u0110\3\u0110\3\u0110\3\u0110\3\u0110\3\u0110\3\u0110\5\u0110"+
		"\u1597\n\u0110\3\u0110\5\u0110\u159a\n\u0110\3\u0111\3\u0111\5\u0111\u159e"+
		"\n\u0111\3\u0111\5\u0111\u15a1\n\u0111\3\u0111\3\u0111\3\u0111\5\u0111"+
		"\u15a6\n\u0111\3\u0111\5\u0111\u15a9\n\u0111\3\u0111\3\u0111\5\u0111\u15ad"+
		"\n\u0111\3\u0111\3\u0111\3\u0111\5\u0111\u15b2\n\u0111\3\u0111\5\u0111"+
		"\u15b5\n\u0111\3\u0111\3\u0111\3\u0111\5\u0111\u15ba\n\u0111\3\u0111\5"+
		"\u0111\u15bd\n\u0111\3\u0111\3\u0111\3\u0111\3\u0111\5\u0111\u15c3\n\u0111"+
		"\3\u0111\5\u0111\u15c6\n\u0111\3\u0111\3\u0111\5\u0111\u15ca\n\u0111\3"+
		"\u0111\5\u0111\u15cd\n\u0111\3\u0111\5\u0111\u15d0\n\u0111\3\u0111\3\u0111"+
		"\5\u0111\u15d4\n\u0111\3\u0111\5\u0111\u15d7\n\u0111\3\u0111\5\u0111\u15da"+
		"\n\u0111\3\u0111\3\u0111\5\u0111\u15de\n\u0111\3\u0111\5\u0111\u15e1\n"+
		"\u0111\3\u0111\5\u0111\u15e4\n\u0111\3\u0111\5\u0111\u15e7\n\u0111\3\u0111"+
		"\3\u0111\5\u0111\u15eb\n\u0111\3\u0111\5\u0111\u15ee\n\u0111\3\u0111\5"+
		"\u0111\u15f1\n\u0111\3\u0111\3\u0111\3\u0111\5\u0111\u15f6\n\u0111\3\u0111"+
		"\3\u0111\3\u0111\5\u0111\u15fb\n\u0111\3\u0111\3\u0111\3\u0111\5\u0111"+
		"\u1600\n\u0111\3\u0111\5\u0111\u1603\n\u0111\3\u0111\5\u0111\u1606\n\u0111"+
		"\3\u0112\3\u0112\3\u0112\3\u0112\7\u0112\u160c\n\u0112\f\u0112\16\u0112"+
		"\u160f\13\u0112\3\u0112\3\u0112\3\u0113\3\u0113\5\u0113\u1615\n\u0113"+
		"\3\u0113\3\u0113\5\u0113\u1619\n\u0113\3\u0113\3\u0113\3\u0113\5\u0113"+
		"\u161e\n\u0113\3\u0113\5\u0113\u1621\n\u0113\3\u0113\3\u0113\3\u0113\5"+
		"\u0113\u1626\n\u0113\3\u0113\3\u0113\5\u0113\u162a\n\u0113\5\u0113\u162c"+
		"\n\u0113\3\u0114\3\u0114\3\u0114\3\u0114\3\u0115\3\u0115\3\u0115\3\u0115"+
		"\3\u0115\3\u0115\3\u0116\3\u0116\3\u0116\3\u0116\5\u0116\u163c\n\u0116"+
		"\3\u0116\3\u0116\3\u0117\3\u0117\3\u0117\7\u0117\u1643\n\u0117\f\u0117"+
		"\16\u0117\u1646\13\u0117\3\u0118\3\u0118\3\u0118\7\u0118\u164b\n\u0118"+
		"\f\u0118\16\u0118\u164e\13\u0118\3\u0119\3\u0119\3\u0119\3\u0119\7\u0119"+
		"\u1654\n\u0119\f\u0119\16\u0119\u1657\13\u0119\3\u0119\3\u0119\3\u011a"+
		"\3\u011a\3\u011a\7\u011a\u165e\n\u011a\f\u011a\16\u011a\u1661\13\u011a"+
		"\3\u011b\3\u011b\3\u011b\7\u011b\u1666\n\u011b\f\u011b\16\u011b\u1669"+
		"\13\u011b\3\u011c\3\u011c\3\u011c\7\u011c\u166e\n\u011c\f\u011c\16\u011c"+
		"\u1671\13\u011c\3\u011d\3\u011d\3\u011d\7\u011d\u1676\n\u011d\f\u011d"+
		"\16\u011d\u1679\13\u011d\3\u011e\3\u011e\3\u011e\7\u011e\u167e\n\u011e"+
		"\f\u011e\16\u011e\u1681\13\u011e\3\u011f\3\u011f\3\u011f\7\u011f\u1686"+
		"\n\u011f\f\u011f\16\u011f\u1689\13\u011f\3\u0120\3\u0120\5\u0120\u168d"+
		"\n\u0120\3\u0120\3\u0120\3\u0120\3\u0120\3\u0120\5\u0120\u1694\n\u0120"+
		"\5\u0120\u1696\n\u0120\3\u0121\3\u0121\3\u0121\5\u0121\u169b\n\u0121\3"+
		"\u0121\5\u0121\u169e\n\u0121\3\u0121\3\u0121\3\u0121\5\u0121\u16a3\n\u0121"+
		"\3\u0121\5\u0121\u16a6\n\u0121\3\u0122\3\u0122\5\u0122\u16aa\n\u0122\3"+
		"\u0123\3\u0123\3\u0123\3\u0124\3\u0124\3\u0124\3\u0124\3\u0125\3\u0125"+
		"\3\u0125\3\u0125\3\u0125\5\u0125\u16b8\n\u0125\3\u0125\3\u0125\3\u0125"+
		"\3\u0125\3\u0125\5\u0125\u16bf\n\u0125\3\u0125\3\u0125\3\u0125\5\u0125"+
		"\u16c4\n\u0125\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\6\u0126\u16e4\n\u0126\r\u0126"+
		"\16\u0126\u16e5\3\u0126\3\u0126\5\u0126\u16ea\n\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\6\u0126\u16f0\n\u0126\r\u0126\16\u0126\u16f1\3\u0126"+
		"\3\u0126\5\u0126\u16f6\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\5\u0126\u16ff\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\5\u0126\u1707\n\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u170c\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u1714\n\u0126\3\u0126\3\u0126\3\u0126\5\u0126\u1719\n\u0126\3\u0126\3"+
		"\u0126\3\u0126\5\u0126\u171e\n\u0126\5\u0126\u1720\n\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126\u1729\n\u0126\3\u0126"+
		"\3\u0126\3\u0126\5\u0126\u172e\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126"+
		"\3\u0126\3\u0126\5\u0126\u1736\n\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u173b\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u1743\n\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u174b\n\u0126\3\u0126\5\u0126\u174e\n\u0126\3\u0126\3\u0126\3\u0126\3"+
		"\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126\u1758\n\u0126\3\u0126\3"+
		"\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\3\u0126\5\u0126"+
		"\u1763\n\u0126\3\u0127\3\u0127\3\u0127\3\u0127\3\u0127\3\u0128\3\u0128"+
		"\3\u0128\3\u0128\7\u0128\u176e\n\u0128\f\u0128\16\u0128\u1771\13\u0128"+
		"\3\u0128\3\u0128\3\u0128\3\u0128\3\u0128\5\u0128\u1778\n\u0128\3\u0129"+
		"\3\u0129\5\u0129\u177c\n\u0129\3\u012a\3\u012a\3\u012a\5\u012a\u1781\n"+
		"\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\5\u012a"+
		"\u178a\n\u012a\3\u012a\5\u012a\u178d\n\u012a\3\u012a\3\u012a\3\u012a\3"+
		"\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\5\u012a\u1799\n"+
		"\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\5\u012a\u17a1\n"+
		"\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\3\u012a\7\u012a\u17a9\n"+
		"\u012a\f\u012a\16\u012a\u17ac\13\u012a\5\u012a\u17ae\n\u012a\3\u012a\3"+
		"\u012a\5\u012a\u17b2\n\u012a\3\u012a\3\u012a\5\u012a\u17b6\n\u012a\3\u012b"+
		"\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b"+
		"\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b\3\u012b"+
		"\3\u012b\3\u012b\3\u012b\3\u012b\5\u012b\u17cf\n\u012b\3\u012c\3\u012c"+
		"\3\u012c\3\u012c\3\u012c\3\u012d\3\u012d\3\u012d\3\u012d\5\u012d\u17da"+
		"\n\u012d\3\u012d\3\u012d\3\u012d\3\u012d\3\u012d\5\u012d\u17e1\n\u012d"+
		"\7\u012d\u17e3\n\u012d\f\u012d\16\u012d\u17e6\13\u012d\3\u012e\3\u012e"+
		"\3\u012e\3\u012e\5\u012e\u17ec\n\u012e\3\u012f\3\u012f\3\u012f\3\u012f"+
		"\3\u012f\3\u012f\5\u012f\u17f4\n\u012f\3\u012f\3\u012f\3\u012f\5\u012f"+
		"\u17f9\n\u012f\3\u012f\3\u012f\3\u012f\3\u012f\7\u012f\u17ff\n\u012f\f"+
		"\u012f\16\u012f\u1802\13\u012f\3\u0130\3\u0130\3\u0130\5\u0130\u1807\n"+
		"\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130"+
		"\5\u0130\u1811\n\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130"+
		"\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\5\u0130\u181e\n\u0130\3\u0130"+
		"\3\u0130\3\u0130\3\u0130\5\u0130\u1824\n\u0130\3\u0130\3\u0130\3\u0130"+
		"\3\u0130\5\u0130\u182a\n\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130"+
		"\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130\3\u0130"+
		"\5\u0130\u183a\n\u0130\3\u0130\3\u0130\3\u0130\3\u0130\5\u0130\u1840\n"+
		"\u0130\7\u0130\u1842\n\u0130\f\u0130\16\u0130\u1845\13\u0130\3\u0131\3"+
		"\u0131\3\u0131\3\u0131\5\u0131\u184b\n\u0131\3\u0131\3\u0131\3\u0131\3"+
		"\u0131\3\u0131\3\u0131\3\u0131\5\u0131\u1854\n\u0131\3\u0131\7\u0131\u1857"+
		"\n\u0131\f\u0131\16\u0131\u185a\13\u0131\3\u0132\3\u0132\3\u0132\5\u0132"+
		"\u185f\n\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132"+
		"\3\u0132\5\u0132\u1869\n\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132"+
		"\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\5\u0132\u1876\n\u0132"+
		"\3\u0132\3\u0132\3\u0132\3\u0132\5\u0132\u187c\n\u0132\3\u0132\3\u0132"+
		"\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132\3\u0132"+
		"\3\u0132\3\u0132\3\u0132\5\u0132\u188c\n\u0132\3\u0132\3\u0132\3\u0132"+
		"\3\u0132\5\u0132\u1892\n\u0132\3\u0132\3\u0132\5\u0132\u1896\n\u0132\3"+
		"\u0132\3\u0132\7\u0132\u189a\n\u0132\f\u0132\16\u0132\u189d\13\u0132\3"+
		"\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133"+
		"\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\7\u0133\u18ad\n\u0133\f\u0133"+
		"\16\u0133\u18b0\13\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133"+
		"\3\u0133\6\u0133\u18b9\n\u0133\r\u0133\16\u0133\u18ba\3\u0133\3\u0133"+
		"\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133"+
		"\3\u0133\3\u0133\3\u0133\3\u0133\5\u0133\u18cc\n\u0133\3\u0133\3\u0133"+
		"\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133\3\u0133"+
		"\7\u0133\u18d9\n\u0133\f\u0133\16\u0133\u18dc\13\u0133\3\u0134\3\u0134"+
		"\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134"+
		"\3\u0134\3\u0134\3\u0134\7\u0134\u18ec\n\u0134\f\u0134\16\u0134\u18ef"+
		"\13\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\6\u0134"+
		"\u18f8\n\u0134\r\u0134\16\u0134\u18f9\3\u0134\3\u0134\3\u0134\3\u0134"+
		"\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134"+
		"\3\u0134\3\u0134\5\u0134\u190b\n\u0134\3\u0134\3\u0134\3\u0134\3\u0134"+
		"\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\3\u0134\7\u0134\u1918"+
		"\n\u0134\f\u0134\16\u0134\u191b\13\u0134\3\u0135\3\u0135\3\u0136\3\u0136"+
		"\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136\3\u0136"+
		"\3\u0136\3\u0136\3\u0136\5\u0136\u192d\n\u0136\3\u0137\3\u0137\3\u0137"+
		"\3\u0137\3\u0137\3\u0137\3\u0137\5\u0137\u1936\n\u0137\3\u0138\3\u0138"+
		"\3\u0138\3\u0138\3\u0138\3\u0138\3\u0138\5\u0138\u193f\n\u0138\3\u0139"+
		"\3\u0139\3\u013a\3\u013a\3\u013b\3\u013b\3\u013c\3\u013c\3\u013d\3\u013d"+
		"\3\u013e\3\u013e\3\u013f\3\u013f\3\u0140\3\u0140\3\u0140\2\b\u025c\u025e"+
		"\u0260\u0262\u0264\u0266\u0141\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36"+
		" \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082"+
		"\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a"+
		"\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2"+
		"\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca"+
		"\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2"+
		"\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa"+
		"\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112"+
		"\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a"+
		"\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142"+
		"\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a"+
		"\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172"+
		"\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a"+
		"\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2"+
		"\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba"+
		"\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2"+
		"\u01d4\u01d6\u01d8\u01da\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea"+
		"\u01ec\u01ee\u01f0\u01f2\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202"+
		"\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a"+
		"\u021c\u021e\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232"+
		"\u0234\u0236\u0238\u023a\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a"+
		"\u024c\u024e\u0250\u0252\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262"+
		"\u0264\u0266\u0268\u026a\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a"+
		"\u027c\u027e\2\177\4\2%%\u0089\u0089\4\2\u01c6\u01c6\u01cc\u01cc\5\2@"+
		"@\u0090\u0090\u00a5\u00a5\5\2((\u0142\u0142\u0181\u0181\6\2((\u0162\u0162"+
		"\u01c5\u01c5\u020c\u020c\4\2\u01bc\u01bc\u040f\u040f\4\2HH\u0081\u0081"+
		"\4\2\17\17\u0112\u0112\5\2**NN\u00a8\u00a8\4\2\u016f\u016f\u01de\u01de"+
		"\5\2\u01b4\u01b4\u0232\u0232\u0239\u0239\4\2\u0149\u0149\u0186\u0186\4"+
		"\2\u0124\u0124\u0194\u0194\4\2\u0122\u0122\u0178\u0178\5\2IIMMrr\5\2("+
		"(\u0153\u0153\u016d\u016d\5\2((\u014f\u014f\u02ae\u02ae\4\2\u0226\u0226"+
		"\u0247\u0247\4\2JJTT\5\2\u0171\u0171\u01d5\u01d5\u020e\u020e\4\2@@\u0090"+
		"\u0090\3\2\u0128\u0129\3\2\u0405\u0406\4\2\u040f\u040f\u0417\u0417\5\2"+
		"\u016c\u016c\u018f\u018f\u01c3\u01c3\4\2((\u0405\u0406\b\2((\u0135\u0135"+
		"\u0137\u0137\u0153\u0153\u016d\u016d\u01eb\u01eb\3\2\u0406\u0407\4\2\7"+
		"\7\61\61\4\2\r\r\u009f\u009f\4\2\u00b0\u00b0\u024b\u024b\4\2\24\24\u0084"+
		"\u0084\5\2))FFaa\4\2aa\u0139\u0139\4\2\u0130\u0130\u0169\u0169\4\2]]\u0204"+
		"\u0204\4\2))aa\4\2\b\b//\4\2\u00ac\u00ac\u0244\u0244\6\2\u016c\u016c\u018f"+
		"\u018f\u01c2\u01c2\u01e1\u01e1\4\2\u016c\u016c\u01c2\u01c2\4\2\16\16+"+
		"+\5\2==HH\u00aa\u00aa\4\2!!LL\4\2YY\u0087\u0087\4\2\b\b/\60\3\2\u021b"+
		"\u021c\4\2\u0174\u0174\u020a\u020a\4\2\u00d2\u00d2\u0197\u0197\7\2bb\u019c"+
		"\u019d\u019f\u019f\u01a3\u01ab\u01ed\u01ed\6\2\u0199\u019a\u019e\u019e"+
		"\u01a0\u01a1\u01ee\u01ee\5\2cc\u0198\u0198\u01a2\u01a2\4\2\u0188\u0188"+
		"\u021d\u021d\4\2\u0217\u0217\u0219\u0219\4\2\u011c\u011c\u021e\u021e\4"+
		"\2SS\u01fc\u01fc\4\2\61\61\u0147\u0147\5\2\36\3688\u00a3\u00a3\5\2ww\u009c"+
		"\u009c\u0172\u0172\4\2__\u00a6\u00a6\4\2\u012c\u012c\u020f\u020f\4\2&"+
		"&\u0246\u0246\4\2ii\u0194\u0194\4\2\u0165\u0165\u01e7\u01e7\6\2\u00be"+
		"\u00be\u00c0\u00c0\u00c6\u00c6\u0227\u0227\4\2\u03e6\u03e6\u03f7\u03f7"+
		"\4\2\u011d\u011d\u01ef\u01ef\4\2??II\b\2ww\u009c\u009c\u00a1\u00a1\u015e"+
		"\u015e\u0172\u0172\u0246\u0246\4\2\u01bb\u01bb\u0223\u0223\4\2\u015b\u015b"+
		"\u024a\u024a\4\2ww\u0172\u0172\5\2JJUU\u017f\u017f\5\2\u0174\u0174\u0194"+
		"\u0194\u020a\u020a\4\2\u0223\u0223\u0245\u0245\4\2\u013a\u013a\u01e6\u01e6"+
		"\b\2\u00d2\u00d2\u0158\u0158\u015a\u015a\u0173\u0173\u01ec\u01ec\u0210"+
		"\u0210\4\2+,99\5\2\u0165\u0165\u01d7\u01d7\u030a\u030a\4\2\u018c\u018c"+
		"\u0234\u0234\f\2\u012b\u012b\u0132\u0132\u013c\u013e\u0144\u0144\u01b5"+
		"\u01b5\u01bd\u01bd\u0228\u0228\u022f\u022f\u02da\u02da\u0380\u0380\4\2"+
		"\"\"\u0099\u0099\4\2kk\u0378\u0378\r\2\u012b\u012b\u0132\u0132\u013c\u013e"+
		"\u0144\u0144\u01b5\u01b5\u01bd\u01bd\u01fd\u01fd\u0228\u0228\u022f\u022f"+
		"\u02da\u02da\u0380\u0380\5\2\u040f\u040f\u0417\u0417\u0419\u0419\3\2\u041a"+
		"\u041b\5\2\u02a9\u02b4\u040f\u040f\u0417\u0418\4\2\u0405\u0407\u0410\u0410"+
		"\4\2::\u00a2\u00a2\4\2jj\u0413\u0413\6\2\30\30\u00ce\u00d0\u00d9\u00dc"+
		"\u01c0\u01c0\4\2\30\30\u00cf\u00cf\4\2\30\30\u00ce\u00ce\5\2\u00b4\u00b6"+
		"\u00b8\u00b8\u00be\u00bf\4\2\u00a7\u00a7\u020d\u020d\5\2\u00c3\u00c3\u00c6"+
		"\u00c8\u016d\u016d\7\2\u00c9\u00c9\u00d4\u00d6\u00d8\u00d8\u00df\u00df"+
		"\u0120\u0121\5\2\u00ca\u00cd\u00d2\u00d3\u011e\u011e\4\2\u008c\u008c\u00dd"+
		"\u00dd\4\2\u018c\u018c\u02b9\u02c1\4\2\u00d2\u00d2\u01c0\u01c0\5\2\u00c9"+
		"\u00ca\u00cc\u00cc\u018c\u018c\4\2\u00ff\u0100\u0106\u0106\4\2##\u00fd"+
		"\u0100\3\2\u0109\u010a\5\2\21\21WW\u00a0\u00a0\4\2\u00ce\u00ce\u00d2\u00d2"+
		"\4\2\u00c9\u00ca\u00cc\u00cc\5\2\16\16++\u0376\u0376\5\2\u00ed\u00ed\u00f3"+
		"\u00f4\u00f9\u00f9\5\2\u00ee\u00f0\u00f5\u00f8\u00fa\u00fc\4\2\u01ca\u01ca"+
		"\u01d8\u01d8\4\2hh\u03fa\u03fa\5\2::\u00a2\u00a2\u023d\u023d\4\2}}\u0088"+
		"\u0088\5\2\b\b\u0115\u0115\u0213\u0213\6\2hh\u03f2\u03f2\u03f4\u03f4\u03fa"+
		"\u03fb\3\2\u03ef\u03f6\3\2\u0281\u02a8\3\2\u02b5\u02b8\3\2\u025e\u0266"+
		"\3\2\u0256\u025d\5\2\u00c9\u00cd\u00da\u00da\u00dd\u00dd\23\2\"\"..kk"+
		"\u0099\u0099\u00df\u00df\u0110\u0184\u0186\u01b2\u01b4\u01c7\u01c9\u01fe"+
		"\u0200\u0225\u0227\u0235\u0237\u0246\u0249\u0250\u0255\u0255\u02ae\u02ae"+
		"\u02da\u02da\u0380\u0380\21\2%%YY\u0087\u0087\u00c9\u00cb\u00cd\u00cd"+
		"\u00f1\u00f1\u0108\u0108\u0185\u0185\u0248\u0248\u0256\u025d\u027a\u027a"+
		"\u02b9\u02b9\u02bc\u02d9\u02db\u037f\u0381\u03e5\2\u1dad\2\u0281\3\2\2"+
		"\2\4\u0292\3\2\2\2\6\u02a6\3\2\2\2\b\u02a8\3\2\2\2\n\u02cd\3\2\2\2\f\u02d9"+
		"\3\2\2\2\16\u02e4\3\2\2\2\20\u02f5\3\2\2\2\22\u02fa\3\2\2\2\24\u0306\3"+
		"\2\2\2\26\u0321\3\2\2\2\30\u032a\3\2\2\2\32\u032c\3\2\2\2\34\u0338\3\2"+
		"\2\2\36\u0356\3\2\2\2 \u037a\3\2\2\2\"\u03ad\3\2\2\2$\u03c7\3\2\2\2&\u03e5"+
		"\3\2\2\2(\u0446\3\2\2\2*\u0448\3\2\2\2,\u045a\3\2\2\2.\u0497\3\2\2\2\60"+
		"\u04aa\3\2\2\2\62\u04e5\3\2\2\2\64\u04e7\3\2\2\2\66\u0513\3\2\2\28\u0519"+
		"\3\2\2\2:\u051b\3\2\2\2<\u0530\3\2\2\2>\u0537\3\2\2\2@\u0539\3\2\2\2B"+
		"\u0549\3\2\2\2D\u054c\3\2\2\2F\u0551\3\2\2\2H\u056b\3\2\2\2J\u057b\3\2"+
		"\2\2L\u057d\3\2\2\2N\u058d\3\2\2\2P\u058f\3\2\2\2R\u05be\3\2\2\2T\u0605"+
		"\3\2\2\2V\u0607\3\2\2\2X\u0623\3\2\2\2Z\u062b\3\2\2\2\\\u0649\3\2\2\2"+
		"^\u06db\3\2\2\2`\u06dd\3\2\2\2b\u06e0\3\2\2\2d\u072a\3\2\2\2f\u0741\3"+
		"\2\2\2h\u07c6\3\2\2\2j\u07cb\3\2\2\2l\u07cd\3\2\2\2n\u07d7\3\2\2\2p\u080c"+
		"\3\2\2\2r\u0820\3\2\2\2t\u0822\3\2\2\2v\u0845\3\2\2\2x\u084e\3\2\2\2z"+
		"\u0855\3\2\2\2|\u086c\3\2\2\2~\u0875\3\2\2\2\u0080\u0884\3\2\2\2\u0082"+
		"\u089a\3\2\2\2\u0084\u08ae\3\2\2\2\u0086\u0a34\3\2\2\2\u0088\u0a36\3\2"+
		"\2\2\u008a\u0a3d\3\2\2\2\u008c\u0a44\3\2\2\2\u008e\u0a5b\3\2\2\2\u0090"+
		"\u0a63\3\2\2\2\u0092\u0a6a\3\2\2\2\u0094\u0a71\3\2\2\2\u0096\u0a78\3\2"+
		"\2\2\u0098\u0a84\3\2\2\2\u009a\u0a8e\3\2\2\2\u009c\u0a95\3\2\2\2\u009e"+
		"\u0aa5\3\2\2\2\u00a0\u0aaf\3\2\2\2\u00a2\u0ab3\3\2\2\2\u00a4\u0ab9\3\2"+
		"\2\2\u00a6\u0ac5\3\2\2\2\u00a8\u0ac7\3\2\2\2\u00aa\u0ace\3\2\2\2\u00ac"+
		"\u0ad0\3\2\2\2\u00ae\u0b03\3\2\2\2\u00b0\u0b4d\3\2\2\2\u00b2\u0b88\3\2"+
		"\2\2\u00b4\u0be0\3\2\2\2\u00b6\u0be4\3\2\2\2\u00b8\u0bf8\3\2\2\2\u00ba"+
		"\u0bfa\3\2\2\2\u00bc\u0c02\3\2\2\2\u00be\u0c0a\3\2\2\2\u00c0\u0c0c\3\2"+
		"\2\2\u00c2\u0c2a\3\2\2\2\u00c4\u0c61\3\2\2\2\u00c6\u0c6a\3\2\2\2\u00c8"+
		"\u0c7e\3\2\2\2\u00ca\u0c8a\3\2\2\2\u00cc\u0c8e\3\2\2\2\u00ce\u0caf\3\2"+
		"\2\2\u00d0\u0cc4\3\2\2\2\u00d2\u0cce\3\2\2\2\u00d4\u0cd2\3\2\2\2\u00d6"+
		"\u0ceb\3\2\2\2\u00d8\u0d15\3\2\2\2\u00da\u0d17\3\2\2\2\u00dc\u0d26\3\2"+
		"\2\2\u00de\u0d54\3\2\2\2\u00e0\u0d5e\3\2\2\2\u00e2\u0d68\3\2\2\2\u00e4"+
		"\u0d92\3\2\2\2\u00e6\u0d94\3\2\2\2\u00e8\u0da5\3\2\2\2\u00ea\u0dab\3\2"+
		"\2\2\u00ec\u0dbb\3\2\2\2\u00ee\u0dbf\3\2\2\2\u00f0\u0de5\3\2\2\2\u00f2"+
		"\u0e0b\3\2\2\2\u00f4\u0e19\3\2\2\2\u00f6\u0e21\3\2\2\2\u00f8\u0e23\3\2"+
		"\2\2\u00fa\u0e3d\3\2\2\2\u00fc\u0e41\3\2\2\2\u00fe\u0e50\3\2\2\2\u0100"+
		"\u0e52\3\2\2\2\u0102\u0e5e\3\2\2\2\u0104\u0e62\3\2\2\2\u0106\u0e73\3\2"+
		"\2\2\u0108\u0e84\3\2\2\2\u010a\u0e87\3\2\2\2\u010c\u0e91\3\2\2\2\u010e"+
		"\u0e95\3\2\2\2\u0110\u0e9f\3\2\2\2\u0112\u0ea2\3\2\2\2\u0114\u0ea7\3\2"+
		"\2\2\u0116\u0ebb\3\2\2\2\u0118\u0ebd\3\2\2\2\u011a\u0ece\3\2\2\2\u011c"+
		"\u0ed7\3\2\2\2\u011e\u0ee0\3\2\2\2\u0120\u0ee2\3\2\2\2\u0122\u0ef0\3\2"+
		"\2\2\u0124\u0efb\3\2\2\2\u0126\u0f04\3\2\2\2\u0128\u0f07\3\2\2\2\u012a"+
		"\u0f0f\3\2\2\2\u012c\u0f28\3\2\2\2\u012e\u0f34\3\2\2\2\u0130\u0f37\3\2"+
		"\2\2\u0132\u0f57\3\2\2\2\u0134\u0f59\3\2\2\2\u0136\u0f5b\3\2\2\2\u0138"+
		"\u0f5d\3\2\2\2\u013a\u0f5f\3\2\2\2\u013c\u0f94\3\2\2\2\u013e\u0f96\3\2"+
		"\2\2\u0140\u0f9c\3\2\2\2\u0142\u0fb0\3\2\2\2\u0144\u0fbe\3\2\2\2\u0146"+
		"\u0fc9\3\2\2\2\u0148\u0fcb\3\2\2\2\u014a\u0fd1\3\2\2\2\u014c\u0fdb\3\2"+
		"\2\2\u014e\u0fdf\3\2\2\2\u0150\u0fe6\3\2\2\2\u0152\u0fea\3\2\2\2\u0154"+
		"\u0ff0\3\2\2\2\u0156\u0ff7\3\2\2\2\u0158\u0ffd\3\2\2\2\u015a\u1003\3\2"+
		"\2\2\u015c\u1008\3\2\2\2\u015e\u1037\3\2\2\2\u0160\u104c\3\2\2\2\u0162"+
		"\u1065\3\2\2\2\u0164\u1068\3\2\2\2\u0166\u106e\3\2\2\2\u0168\u107e\3\2"+
		"\2\2\u016a\u108d\3\2\2\2\u016c\u1093\3\2\2\2\u016e\u10b1\3\2\2\2\u0170"+
		"\u10b3\3\2\2\2\u0172\u10ba\3\2\2\2\u0174\u10c6\3\2\2\2\u0176\u10cc\3\2"+
		"\2\2\u0178\u10e5\3\2\2\2\u017a\u10e9\3\2\2\2\u017c\u10ed\3\2\2\2\u017e"+
		"\u10f8\3\2\2\2\u0180\u1136\3\2\2\2\u0182\u116e\3\2\2\2\u0184\u1170\3\2"+
		"\2\2\u0186\u117d\3\2\2\2\u0188\u11af\3\2\2\2\u018a\u11c1\3\2\2\2\u018c"+
		"\u11f3\3\2\2\2\u018e\u11f5\3\2\2\2\u0190\u1202\3\2\2\2\u0192\u120d\3\2"+
		"\2\2\u0194\u1228\3\2\2\2\u0196\u1232\3\2\2\2\u0198\u123c\3\2\2\2\u019a"+
		"\u123e\3\2\2\2\u019c\u1248\3\2\2\2\u019e\u124b\3\2\2\2\u01a0\u127d\3\2"+
		"\2\2\u01a2\u128f\3\2\2\2\u01a4\u1291\3\2\2\2\u01a6\u1295\3\2\2\2\u01a8"+
		"\u129c\3\2\2\2\u01aa\u12a5\3\2\2\2\u01ac\u12ab\3\2\2\2\u01ae\u12b2\3\2"+
		"\2\2\u01b0\u12c8\3\2\2\2\u01b2\u12ca\3\2\2\2\u01b4\u12d5\3\2\2\2\u01b6"+
		"\u12db\3\2\2\2\u01b8\u1312\3\2\2\2\u01ba\u13ab\3\2\2\2\u01bc\u13b7\3\2"+
		"\2\2\u01be\u13c6\3\2\2\2\u01c0\u13cc\3\2\2\2\u01c2\u13df\3\2\2\2\u01c4"+
		"\u13e9\3\2\2\2\u01c6\u13f7\3\2\2\2\u01c8\u13f9\3\2\2\2\u01ca\u13fc\3\2"+
		"\2\2\u01cc\u1412\3\2\2\2\u01ce\u141e\3\2\2\2\u01d0\u1427\3\2\2\2\u01d2"+
		"\u1433\3\2\2\2\u01d4\u1437\3\2\2\2\u01d6\u1439\3\2\2\2\u01d8\u1461\3\2"+
		"\2\2\u01da\u1468\3\2\2\2\u01dc\u146a\3\2\2\2\u01de\u1481\3\2\2\2\u01e0"+
		"\u1487\3\2\2\2\u01e2\u148f\3\2\2\2\u01e4\u1492\3\2\2\2\u01e6\u1495\3\2"+
		"\2\2\u01e8\u14aa\3\2\2\2\u01ea\u14bf\3\2\2\2\u01ec\u14c5\3\2\2\2\u01ee"+
		"\u14eb\3\2\2\2\u01f0\u14f7\3\2\2\2\u01f2\u14f9\3\2\2\2\u01f4\u14ff\3\2"+
		"\2\2\u01f6\u1501\3\2\2\2\u01f8\u150a\3\2\2\2\u01fa\u1515\3\2\2\2\u01fc"+
		"\u1517\3\2\2\2\u01fe\u151d\3\2\2\2\u0200\u1521\3\2\2\2\u0202\u1523\3\2"+
		"\2\2\u0204\u1525\3\2\2\2\u0206\u1537\3\2\2\2\u0208\u1547\3\2\2\2\u020a"+
		"\u154b\3\2\2\2\u020c\u1550\3\2\2\2\u020e\u155b\3\2\2\2\u0210\u1560\3\2"+
		"\2\2\u0212\u1562\3\2\2\2\u0214\u1566\3\2\2\2\u0216\u157f\3\2\2\2\u0218"+
		"\u1581\3\2\2\2\u021a\u1584\3\2\2\2\u021c\u1589\3\2\2\2\u021e\u1599\3\2"+
		"\2\2\u0220\u1605\3\2\2\2\u0222\u1607\3\2\2\2\u0224\u162b\3\2\2\2\u0226"+
		"\u162d\3\2\2\2\u0228\u1631\3\2\2\2\u022a\u1637\3\2\2\2\u022c\u163f\3\2"+
		"\2\2\u022e\u1647\3\2\2\2\u0230\u164f\3\2\2\2\u0232\u165a\3\2\2\2\u0234"+
		"\u1662\3\2\2\2\u0236\u166a\3\2\2\2\u0238\u1672\3\2\2\2\u023a\u167a\3\2"+
		"\2\2\u023c\u1682\3\2\2\2\u023e\u1695\3\2\2\2\u0240\u16a5\3\2\2\2\u0242"+
		"\u16a9\3\2\2\2\u0244\u16ab\3\2\2\2\u0246\u16ae\3\2\2\2\u0248\u16c3\3\2"+
		"\2\2\u024a\u1762\3\2\2\2\u024c\u1764\3\2\2\2\u024e\u1777\3\2\2\2\u0250"+
		"\u1779\3\2\2\2\u0252\u17b5\3\2\2\2\u0254\u17ce\3\2\2\2\u0256\u17d0\3\2"+
		"\2\2\u0258\u17d9\3\2\2\2\u025a\u17eb\3\2\2\2\u025c\u17f8\3\2\2\2\u025e"+
		"\u1803\3\2\2\2\u0260\u184a\3\2\2\2\u0262\u185b\3\2\2\2\u0264\u18cb\3\2"+
		"\2\2\u0266\u190a\3\2\2\2\u0268\u191c\3\2\2\2\u026a\u192c\3\2\2\2\u026c"+
		"\u1935\3\2\2\2\u026e\u193e\3\2\2\2\u0270\u1940\3\2\2\2\u0272\u1942\3\2"+
		"\2\2\u0274\u1944\3\2\2\2\u0276\u1946\3\2\2\2\u0278\u1948\3\2\2\2\u027a"+
		"\u194a\3\2\2\2\u027c\u194c\3\2\2\2\u027e\u194e\3\2\2\2\u0280\u0282\5\4"+
		"\3\2\u0281\u0280\3\2\2\2\u0281\u0282\3\2\2\2\u0282\u0284\3\2\2\2\u0283"+
		"\u0285\7\u03f3\2\2\u0284\u0283\3\2\2\2\u0284\u0285\3\2\2\2\u0285\u0286"+
		"\3\2\2\2\u0286\u0287\7\2\2\3\u0287\3\3\2\2\2\u0288\u028a\5\6\4\2\u0289"+
		"\u028b\7\u03f3\2\2\u028a\u0289\3\2\2\2\u028a\u028b\3\2\2\2\u028b\u028d"+
		"\3\2\2\2\u028c\u028e\7\u0403\2\2\u028d\u028c\3\2\2\2\u028d\u028e\3\2\2"+
		"\2\u028e\u0291\3\2\2\2\u028f\u0291\5\b\5\2\u0290\u0288\3\2\2\2\u0290\u028f"+
		"\3\2\2\2\u0291\u0294\3\2\2\2\u0292\u0290\3\2\2\2\u0292\u0293\3\2\2\2\u0293"+
		"\u029d\3\2\2\2\u0294\u0292\3\2\2\2\u0295\u029a\5\6\4\2\u0296\u0298\7\u03f3"+
		"\2\2\u0297\u0296\3\2\2\2\u0297\u0298\3\2\2\2\u0298\u0299\3\2\2\2\u0299"+
		"\u029b\7\u0403\2\2\u029a\u0297\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029e"+
		"\3\2\2\2\u029c\u029e\5\b\5\2\u029d\u0295\3\2\2\2\u029d\u029c\3\2\2\2\u029e"+
		"\5\3\2\2\2\u029f\u02a7\5\n\6\2\u02a0\u02a7\5\f\7\2\u02a1\u02a7\5\16\b"+
		"\2\u02a2\u02a7\5\20\t\2\u02a3\u02a7\5\22\n\2\u02a4\u02a7\5\26\f\2\u02a5"+
		"\u02a7\5\30\r\2\u02a6\u029f\3\2\2\2\u02a6\u02a0\3\2\2\2\u02a6\u02a1\3"+
		"\2\2\2\u02a6\u02a2\3\2\2\2\u02a6\u02a3\3\2\2\2\u02a6\u02a4\3\2\2\2\u02a6"+
		"\u02a5\3\2\2\2\u02a7\7\3\2\2\2\u02a8\u02a9\7\u0403\2\2\u02a9\t\3\2\2\2"+
		"\u02aa\u02ce\5\32\16\2\u02ab\u02ce\5\34\17\2\u02ac\u02ce\5\36\20\2\u02ad"+
		"\u02ce\5 \21\2\u02ae\u02ce\5\"\22\2\u02af\u02ce\5$\23\2\u02b0\u02ce\5"+
		"&\24\2\u02b1\u02ce\5(\25\2\u02b2\u02ce\5*\26\2\u02b3\u02ce\5,\27\2\u02b4"+
		"\u02ce\5.\30\2\u02b5\u02ce\5\60\31\2\u02b6\u02ce\5r:\2\u02b7\u02ce\5t"+
		";\2\u02b8\u02ce\5v<\2\u02b9\u02ce\5x=\2\u02ba\u02ce\5z>\2\u02bb\u02ce"+
		"\5|?\2\u02bc\u02ce\5~@\2\u02bd\u02ce\5\u0080A\2\u02be\u02ce\5\u0082B\2"+
		"\u02bf\u02ce\5\u0084C\2\u02c0\u02ce\5\u0088E\2\u02c1\u02ce\5\u008aF\2"+
		"\u02c2\u02ce\5\u008cG\2\u02c3\u02ce\5\u008eH\2\u02c4\u02ce\5\u0090I\2"+
		"\u02c5\u02ce\5\u0092J\2\u02c6\u02ce\5\u0094K\2\u02c7\u02ce\5\u0096L\2"+
		"\u02c8\u02ce\5\u0098M\2\u02c9\u02ce\5\u009aN\2\u02ca\u02ce\5\u009cO\2"+
		"\u02cb\u02ce\5\u009eP\2\u02cc\u02ce\5\u00a2R\2\u02cd\u02aa\3\2\2\2\u02cd"+
		"\u02ab\3\2\2\2\u02cd\u02ac\3\2\2\2\u02cd\u02ad\3\2\2\2\u02cd\u02ae\3\2"+
		"\2\2\u02cd\u02af\3\2\2\2\u02cd\u02b0\3\2\2\2\u02cd\u02b1\3\2\2\2\u02cd"+
		"\u02b2\3\2\2\2\u02cd\u02b3\3\2\2\2\u02cd\u02b4\3\2\2\2\u02cd\u02b5\3\2"+
		"\2\2\u02cd\u02b6\3\2\2\2\u02cd\u02b7\3\2\2\2\u02cd\u02b8\3\2\2\2\u02cd"+
		"\u02b9\3\2\2\2\u02cd\u02ba\3\2\2\2\u02cd\u02bb\3\2\2\2\u02cd\u02bc\3\2"+
		"\2\2\u02cd\u02bd\3\2\2\2\u02cd\u02be\3\2\2\2\u02cd\u02bf\3\2\2\2\u02cd"+
		"\u02c0\3\2\2\2\u02cd\u02c1\3\2\2\2\u02cd\u02c2\3\2\2\2\u02cd\u02c3\3\2"+
		"\2\2\u02cd\u02c4\3\2\2\2\u02cd\u02c5\3\2\2\2\u02cd\u02c6\3\2\2\2\u02cd"+
		"\u02c7\3\2\2\2\u02cd\u02c8\3\2\2\2\u02cd\u02c9\3\2\2\2\u02cd\u02ca\3\2"+
		"\2\2\u02cd\u02cb\3\2\2\2\u02cd\u02cc\3\2\2\2\u02ce\13\3\2\2\2\u02cf\u02da"+
		"\5\u00b4[\2\u02d0\u02da\5\u00acW\2\u02d1\u02da\5\u00b6\\\2\u02d2\u02da"+
		"\5\u00a6T\2\u02d3\u02da\5\u00b2Z\2\u02d4\u02da\5\u00a4S\2\u02d5\u02da"+
		"\5\u00aeX\2\u02d6\u02da\5\u00b0Y\2\u02d7\u02da\5\u00a8U\2\u02d8\u02da"+
		"\5\u00aaV\2\u02d9\u02cf\3\2\2\2\u02d9\u02d0\3\2\2\2\u02d9\u02d1\3\2\2"+
		"\2\u02d9\u02d2\3\2\2\2\u02d9\u02d3\3\2\2\2\u02d9\u02d4\3\2\2\2\u02d9\u02d5"+
		"\3\2\2\2\u02d9\u02d6\3\2\2\2\u02d9\u02d7\3\2\2\2\u02d9\u02d8\3\2\2\2\u02da"+
		"\r\3\2\2\2\u02db\u02e5\5\u0100\u0081\2\u02dc\u02e5\5\u0102\u0082\2\u02dd"+
		"\u02e5\5\u0104\u0083\2\u02de\u02e5\5\u0106\u0084\2\u02df\u02e5\5\u0108"+
		"\u0085\2\u02e0\u02e5\5\u010a\u0086\2\u02e1\u02e5\5\u010c\u0087\2\u02e2"+
		"\u02e5\5\u010e\u0088\2\u02e3\u02e5\5\u0110\u0089\2\u02e4\u02db\3\2\2\2"+
		"\u02e4\u02dc\3\2\2\2\u02e4\u02dd\3\2\2\2\u02e4\u02de\3\2\2\2\u02e4\u02df"+
		"\3\2\2\2\u02e4\u02e0\3\2\2\2\u02e4\u02e1\3\2\2\2\u02e4\u02e2\3\2\2\2\u02e4"+
		"\u02e3\3\2\2\2\u02e5\17\3\2\2\2\u02e6\u02f6\5\u0120\u0091\2\u02e7\u02f6"+
		"\5\u0122\u0092\2\u02e8\u02f6\5\u0124\u0093\2\u02e9\u02f6\5\u0126\u0094"+
		"\2\u02ea\u02f6\5\u0128\u0095\2\u02eb\u02f6\5\u012a\u0096\2\u02ec\u02f6"+
		"\5\u012c\u0097\2\u02ed\u02f6\5\u012e\u0098\2\u02ee\u02f6\5\u0130\u0099"+
		"\2\u02ef\u02f6\5\u0148\u00a5\2\u02f0\u02f6\5\u014a\u00a6\2\u02f1\u02f6"+
		"\5\u014c\u00a7\2\u02f2\u02f6\5\u014e\u00a8\2\u02f3\u02f6\5\u0150\u00a9"+
		"\2\u02f4\u02f6\5\u0152\u00aa\2\u02f5\u02e6\3\2\2\2\u02f5\u02e7\3\2\2\2"+
		"\u02f5\u02e8\3\2\2\2\u02f5\u02e9\3\2\2\2\u02f5\u02ea\3\2\2\2\u02f5\u02eb"+
		"\3\2\2\2\u02f5\u02ec\3\2\2\2\u02f5\u02ed\3\2\2\2\u02f5\u02ee\3\2\2\2\u02f5"+
		"\u02ef\3\2\2\2\u02f5\u02f0\3\2\2\2\u02f5\u02f1\3\2\2\2\u02f5\u02f2\3\2"+
		"\2\2\u02f5\u02f3\3\2\2\2\u02f5\u02f4\3\2\2\2\u02f6\21\3\2\2\2\u02f7\u02fb"+
		"\5\u0154\u00ab\2\u02f8\u02fb\5\u0156\u00ac\2\u02f9\u02fb\5\u0158\u00ad"+
		"\2\u02fa\u02f7\3\2\2\2\u02fa\u02f8\3\2\2\2\u02fa\u02f9\3\2\2\2\u02fb\23"+
		"\3\2\2\2\u02fc\u0307\5\u015c\u00af\2\u02fd\u0307\5\u015e\u00b0\2\u02fe"+
		"\u0307\5\u0160\u00b1\2\u02ff\u0307\5\u0164\u00b3\2\u0300\u0307\5\u0166"+
		"\u00b4\2\u0301\u0307\5\u0168\u00b5\2\u0302\u0307\5\u016c\u00b7\2\u0303"+
		"\u0307\5\u0162\u00b2\2\u0304\u0307\5\u016a\u00b6\2\u0305\u0307\5\u016e"+
		"\u00b8\2\u0306\u02fc\3\2\2\2\u0306\u02fd\3\2\2\2\u0306\u02fe\3\2\2\2\u0306"+
		"\u02ff\3\2\2\2\u0306\u0300\3\2\2\2\u0306\u0301\3\2\2\2\u0306\u0302\3\2"+
		"\2\2\u0306\u0303\3\2\2\2\u0306\u0304\3\2\2\2\u0306\u0305\3\2\2\2\u0307"+
		"\25\3\2\2\2\u0308\u0322\5\u0180\u00c1\2\u0309\u0322\5\u0182\u00c2\2\u030a"+
		"\u0322\5\u0184\u00c3\2\u030b\u0322\5\u0186\u00c4\2\u030c\u0322\5\u0188"+
		"\u00c5\2\u030d\u0322\5\u018a\u00c6\2\u030e\u0322\5\u018c\u00c7\2\u030f"+
		"\u0322\5\u018e\u00c8\2\u0310\u0322\5\u01a6\u00d4\2\u0311\u0322\5\u01a8"+
		"\u00d5\2\u0312\u0322\5\u01aa\u00d6\2\u0313\u0322\5\u01ac\u00d7\2\u0314"+
		"\u0322\5\u01ae\u00d8\2\u0315\u0322\5\u01b2\u00da\2\u0316\u0322\5\u01b4"+
		"\u00db\2\u0317\u0322\5\u01b6\u00dc\2\u0318\u0322\5\u01b8\u00dd\2\u0319"+
		"\u0322\5\u01ba\u00de\2\u031a\u0322\5\u01c8\u00e5\2\u031b\u0322\5\u01ca"+
		"\u00e6\2\u031c\u0322\5\u01cc\u00e7\2\u031d\u0322\5\u01ce\u00e8\2\u031e"+
		"\u0322\5\u01d0\u00e9\2\u031f\u0322\5\u01d2\u00ea\2\u0320\u0322\5\u01d4"+
		"\u00eb\2\u0321\u0308\3\2\2\2\u0321\u0309\3\2\2\2\u0321\u030a\3\2\2\2\u0321"+
		"\u030b\3\2\2\2\u0321\u030c\3\2\2\2\u0321\u030d\3\2\2\2\u0321\u030e\3\2"+
		"\2\2\u0321\u030f\3\2\2\2\u0321\u0310\3\2\2\2\u0321\u0311\3\2\2\2\u0321"+
		"\u0312\3\2\2\2\u0321\u0313\3\2\2\2\u0321\u0314\3\2\2\2\u0321\u0315\3\2"+
		"\2\2\u0321\u0316\3\2\2\2\u0321\u0317\3\2\2\2\u0321\u0318\3\2\2\2\u0321"+
		"\u0319\3\2\2\2\u0321\u031a\3\2\2\2\u0321\u031b\3\2\2\2\u0321\u031c\3\2"+
		"\2\2\u0321\u031d\3\2\2\2\u0321\u031e\3\2\2\2\u0321\u031f\3\2\2\2\u0321"+
		"\u0320\3\2\2\2\u0322\27\3\2\2\2\u0323\u032b\5\u01de\u00f0\2\u0324\u032b"+
		"\5\u01e0\u00f1\2\u0325\u032b\5\u01e2\u00f2\2\u0326\u032b\5\u01e4\u00f3"+
		"\2\u0327\u032b\5\u01e6\u00f4\2\u0328\u032b\5\u01e8\u00f5\2\u0329\u032b"+
		"\5\u01ec\u00f7\2\u032a\u0323\3\2\2\2\u032a\u0324\3\2\2\2\u032a\u0325\3"+
		"\2\2\2\u032a\u0326\3\2\2\2\u032a\u0327\3\2\2\2\u032a\u0328\3\2\2\2\u032a"+
		"\u0329\3\2\2\2\u032b\31\3\2\2\2\u032c\u032d\7 \2\2\u032d\u032f\t\2\2\2"+
		"\u032e\u0330\5\u0246\u0124\2\u032f\u032e\3\2\2\2\u032f\u0330\3\2\2\2\u0330"+
		"\u0331\3\2\2\2\u0331\u0335\5\u020c\u0107\2\u0332\u0334\5\62\32\2\u0333"+
		"\u0332\3\2\2\2\u0334\u0337\3\2\2\2\u0335\u0333\3\2\2\2\u0335\u0336\3\2"+
		"\2\2\u0336\33\3\2\2\2\u0337\u0335\3\2\2\2\u0338\u033a\7 \2\2\u0339\u033b"+
		"\5\64\33\2\u033a\u0339\3\2\2\2\u033a\u033b\3\2\2\2\u033b\u033c\3\2\2\2"+
		"\u033c\u033e\7\u015e\2\2\u033d\u033f\5\u0246\u0124\2\u033e\u033d\3\2\2"+
		"\2\u033e\u033f\3\2\2\2\u033f\u0340\3\2\2\2\u0340\u0341\5\u01f2\u00fa\2"+
		"\u0341\u0342\7l\2\2\u0342\u0343\7\u0207\2\2\u0343\u034a\5\66\34\2\u0344"+
		"\u0345\7l\2\2\u0345\u0347\7\u0136\2\2\u0346\u0348\7h\2\2\u0347\u0346\3"+
		"\2\2\2\u0347\u0348\3\2\2\2\u0348\u0349\3\2\2\2\u0349\u034b\7\u01e0\2\2"+
		"\u034a\u0344\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u034d\3\2\2\2\u034c\u034e"+
		"\5> \2\u034d\u034c\3\2\2\2\u034d\u034e\3\2\2\2\u034e\u0351\3\2\2\2\u034f"+
		"\u0350\7\u0133\2\2\u0350\u0352\7\u040f\2\2\u0351\u034f\3\2\2\2\u0351\u0352"+
		"\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0354\7\u0150\2\2\u0354\u0355\5\u015a"+
		"\u00ae\2\u0355\35\3\2\2\2\u0356\u0358\7 \2\2\u0357\u0359\t\3\2\2\u0358"+
		"\u0357\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u035b\3\2\2\2\u035a\u035c\t\4"+
		"\2\2\u035b\u035a\3\2\2\2\u035b\u035c\3\2\2\2\u035c\u035d\3\2\2\2\u035d"+
		"\u035e\7J\2\2\u035e\u0360\5\u020c\u0107\2\u035f\u0361\5@!\2\u0360\u035f"+
		"\3\2\2\2\u0360\u0361\3\2\2\2\u0361\u0362\3\2\2\2\u0362\u0363\7l\2\2\u0363"+
		"\u0364\5\u01f4\u00fb\2\u0364\u0368\5\u0230\u0119\2\u0365\u0367\5B\"\2"+
		"\u0366\u0365\3\2\2\2\u0367\u036a\3\2\2\2\u0368\u0366\3\2\2\2\u0368\u0369"+
		"\3\2\2\2\u0369\u0377\3\2\2\2\u036a\u0368\3\2\2\2\u036b\u036d\7\u0114\2"+
		"\2\u036c\u036e\7\u03f7\2\2\u036d\u036c\3\2\2\2\u036d\u036e\3\2\2\2\u036e"+
		"\u036f\3\2\2\2\u036f\u0376\t\5\2\2\u0370\u0372\7_\2\2\u0371\u0373\7\u03f7"+
		"\2\2\u0372\u0371\3\2\2\2\u0372\u0373\3\2\2\2\u0373\u0374\3\2\2\2\u0374"+
		"\u0376\t\6\2\2\u0375\u036b\3\2\2\2\u0375\u0370\3\2\2\2\u0376\u0379\3\2"+
		"\2\2\u0377\u0375\3\2\2\2\u0377\u0378\3\2\2\2\u0378\37\3\2\2\2\u0379\u0377"+
		"\3\2\2\2\u037a\u037b\7 \2\2\u037b\u037c\7\u0195\2\2\u037c\u037d\7D\2\2"+
		"\u037d\u037e\5\u020c\u0107\2\u037e\u037f\7\7\2\2\u037f\u0380\7\u023a\2"+
		"\2\u0380\u0386\7\u040f\2\2\u0381\u0383\7\u0180\2\2\u0382\u0384\7\u03f7"+
		"\2\2\u0383\u0382\3\2\2\2\u0383\u0384\3\2\2\2\u0384\u0385\3\2\2\2\u0385"+
		"\u0387\5\u0214\u010b\2\u0386\u0381\3\2\2\2\u0386\u0387\3\2\2\2\u0387\u038d"+
		"\3\2\2\2\u0388\u038a\7\u023b\2\2\u0389\u038b\7\u03f7\2\2\u038a\u0389\3"+
		"\2\2\2\u038a\u038b\3\2\2\2\u038b\u038c\3\2\2\2\u038c\u038e\5\u0214\u010b"+
		"\2\u038d\u0388\3\2\2\2\u038d\u038e\3\2\2\2\u038e\u0394\3\2\2\2\u038f\u0391"+
		"\7\u01ea\2\2\u0390\u0392\7\u03f7\2\2\u0391\u0390\3\2\2\2\u0391\u0392\3"+
		"\2\2\2\u0392\u0393\3\2\2\2\u0393\u0395\5\u0214\u010b\2\u0394\u038f\3\2"+
		"\2\2\u0394\u0395\3\2\2\2\u0395\u039b\3\2\2\2\u0396\u0398\7\u01c4\2\2\u0397"+
		"\u0399\7\u03f7\2\2\u0398\u0397\3\2\2\2\u0398\u0399\3\2\2\2\u0399\u039a"+
		"\3\2\2\2\u039a\u039c\5\u020c\u0107\2\u039b\u0396\3\2\2\2\u039b\u039c\3"+
		"\2\2\2\u039c\u039e\3\2\2\2\u039d\u039f\7\u0249\2\2\u039e\u039d\3\2\2\2"+
		"\u039e\u039f\3\2\2\2\u039f\u03a5\3\2\2\2\u03a0\u03a2\7\u0133\2\2\u03a1"+
		"\u03a3\7\u03f7\2\2\u03a2\u03a1\3\2\2\2\u03a2\u03a3\3\2\2\2\u03a3\u03a4"+
		"\3\2\2\2\u03a4\u03a6\7\u040f\2\2\u03a5\u03a0\3\2\2\2\u03a5\u03a6\3\2\2"+
		"\2\u03a6\u03a7\3\2\2\2\u03a7\u03a9\7\u0158\2\2\u03a8\u03aa\7\u03f7\2\2"+
		"\u03a9\u03a8\3\2\2\2\u03a9\u03aa\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab\u03ac"+
		"\5\u0202\u0102\2\u03ac!\3\2\2\2\u03ad\u03af\7 \2\2\u03ae\u03b0\5\64\33"+
		"\2\u03af\u03ae\3\2\2\2\u03af\u03b0\3\2\2\2\u03b0\u03b1\3\2\2\2\u03b1\u03b2"+
		"\7w\2\2\u03b2\u03b3\5\u01f2\u00fa\2\u03b3\u03b5\7\u0400\2\2\u03b4\u03b6"+
		"\5D#\2\u03b5\u03b4\3\2\2\2\u03b5\u03b6\3\2\2\2\u03b6\u03bb\3\2\2\2\u03b7"+
		"\u03b8\7\u0402\2\2\u03b8\u03ba\5D#\2\u03b9\u03b7\3\2\2\2\u03ba\u03bd\3"+
		"\2\2\2\u03bb\u03b9\3\2\2\2\u03bb\u03bc\3\2\2\2\u03bc\u03be\3\2\2\2\u03bd"+
		"\u03bb\3\2\2\2\u03be\u03c2\7\u0401\2\2\u03bf\u03c1\5H%\2\u03c0\u03bf\3"+
		"\2\2\2\u03c1\u03c4\3\2\2\2\u03c2\u03c0\3\2\2\2\u03c2\u03c3\3\2\2\2\u03c3"+
		"\u03c5\3\2\2\2\u03c4\u03c2\3\2\2\2\u03c5\u03c6\5\u015a\u00ae\2\u03c6#"+
		"\3\2\2\2\u03c7\u03c9\7 \2\2\u03c8\u03ca\5\64\33\2\u03c9\u03c8\3\2\2\2"+
		"\u03c9\u03ca\3\2\2\2\u03ca\u03cb\3\2\2\2\u03cb\u03cc\7\u0172\2\2\u03cc"+
		"\u03cd\5\u01f2\u00fa\2\u03cd\u03cf\7\u0400\2\2\u03ce\u03d0\5F$\2\u03cf"+
		"\u03ce\3\2\2\2\u03cf\u03d0\3\2\2\2\u03d0\u03d5\3\2\2\2\u03d1\u03d2\7\u0402"+
		"\2\2\u03d2\u03d4\5F$\2\u03d3\u03d1\3\2\2\2\u03d4\u03d7\3\2\2\2\u03d5\u03d3"+
		"\3\2\2\2\u03d5\u03d6\3\2\2\2\u03d6\u03d8\3\2\2\2\u03d7\u03d5\3\2\2\2\u03d8"+
		"\u03d9\7\u0401\2\2\u03d9\u03da\7\u01fe\2\2\u03da\u03de\5\u0220\u0111\2"+
		"\u03db\u03dd\5H%\2\u03dc\u03db\3\2\2\2\u03dd\u03e0\3\2\2\2\u03de\u03dc"+
		"\3\2\2\2\u03de\u03df\3\2\2\2\u03df\u03e3\3\2\2\2\u03e0\u03de\3\2\2\2\u03e1"+
		"\u03e4\5\u015a\u00ae\2\u03e2\u03e4\5\u016a\u00b6\2\u03e3\u03e1\3\2\2\2"+
		"\u03e3\u03e2\3\2\2\2\u03e4%\3\2\2\2\u03e5\u03e6\7 \2\2\u03e6\u03e7\7\u0209"+
		"\2\2\u03e7\u03e8\5\u020c\u0107\2\u03e8\u03e9\7>\2\2\u03e9\u03ea\7\u0145"+
		"\2\2\u03ea\u03eb\7\u024d\2\2\u03eb\u03ec\t\7\2\2\u03ec\u03ed\7\u01d0\2"+
		"\2\u03ed\u03ee\7\u0400\2\2\u03ee\u03f3\5J&\2\u03ef\u03f0\7\u0402\2\2\u03f0"+
		"\u03f2\5J&\2\u03f1\u03ef\3\2\2\2\u03f2\u03f5\3\2\2\2\u03f3\u03f1\3\2\2"+
		"\2\u03f3\u03f4\3\2\2\2\u03f4\u03f6\3\2\2\2\u03f5\u03f3\3\2\2\2\u03f6\u03f7"+
		"\7\u0401\2\2\u03f7\'\3\2\2\2\u03f8\u03fa\7 \2\2\u03f9\u03fb\7\u0231\2"+
		"\2\u03fa\u03f9\3\2\2\2\u03fa\u03fb\3\2\2\2\u03fb\u03fc\3\2\2\2\u03fc\u03fe"+
		"\7\u009c\2\2\u03fd\u03ff\5\u0246\u0124\2\u03fe\u03fd\3\2\2\2\u03fe\u03ff"+
		"\3\2\2\2\u03ff\u0400\3\2\2\2\u0400\u0408\5\u01f4\u00fb\2\u0401\u0402\7"+
		"Z\2\2\u0402\u0409\5\u01f4\u00fb\2\u0403\u0404\7\u0400\2\2\u0404\u0405"+
		"\7Z\2\2\u0405\u0406\5\u01f4\u00fb\2\u0406\u0407\7\u0401\2\2\u0407\u0409"+
		"\3\2\2\2\u0408\u0401\3\2\2\2\u0408\u0403\3\2\2\2\u0409\u0447\3\2\2\2\u040a"+
		"\u040c\7 \2\2\u040b\u040d\7\u0231\2\2\u040c\u040b\3\2\2\2\u040c\u040d"+
		"\3\2\2\2\u040d\u040e\3\2\2\2\u040e\u0410\7\u009c\2\2\u040f\u0411\5\u0246"+
		"\u0124\2\u0410\u040f\3\2\2\2\u0410\u0411\3\2\2\2\u0411\u0412\3\2\2\2\u0412"+
		"\u0414\5\u01f4\u00fb\2\u0413\u0415\5L\'\2\u0414\u0413\3\2\2\2\u0414\u0415"+
		"\3\2\2\2\u0415\u0420\3\2\2\2\u0416\u041d\5^\60\2\u0417\u0419\7\u0402\2"+
		"\2\u0418\u0417\3\2\2\2\u0418\u0419\3\2\2\2\u0419\u041a\3\2\2\2\u041a\u041c"+
		"\5^\60\2\u041b\u0418\3\2\2\2\u041c\u041f\3\2\2\2\u041d\u041b\3\2\2\2\u041d"+
		"\u041e\3\2\2\2\u041e\u0421\3\2\2\2\u041f\u041d\3\2\2\2\u0420\u0416\3\2"+
		"\2\2\u0420\u0421\3\2\2\2\u0421\u0423\3\2\2\2\u0422\u0424\5b\62\2\u0423"+
		"\u0422\3\2\2\2\u0423\u0424\3\2\2\2\u0424\u0426\3\2\2\2\u0425\u0427\t\b"+
		"\2\2\u0426\u0425\3\2\2\2\u0426\u0427\3\2\2\2\u0427\u0429\3\2\2\2\u0428"+
		"\u042a\7\r\2\2\u0429\u0428\3\2\2\2\u0429\u042a\3\2\2\2\u042a\u042b\3\2"+
		"\2\2\u042b\u042c\5\u00b4[\2\u042c\u0447\3\2\2\2\u042d\u042f\7 \2\2\u042e"+
		"\u0430\7\u0231\2\2\u042f\u042e\3\2\2\2\u042f\u0430\3\2\2\2\u0430\u0431"+
		"\3\2\2\2\u0431\u0433\7\u009c\2\2\u0432\u0434\5\u0246\u0124\2\u0433\u0432"+
		"\3\2\2\2\u0433\u0434\3\2\2\2\u0434\u0435\3\2\2\2\u0435\u0436\5\u01f4\u00fb"+
		"\2\u0436\u0441\5L\'\2\u0437\u043e\5^\60\2\u0438\u043a\7\u0402\2\2\u0439"+
		"\u0438\3\2\2\2\u0439\u043a\3\2\2\2\u043a\u043b\3\2\2\2\u043b\u043d\5^"+
		"\60\2\u043c\u0439\3\2\2\2\u043d\u0440\3\2\2\2\u043e\u043c\3\2\2\2\u043e"+
		"\u043f\3\2\2\2\u043f\u0442\3\2\2\2\u0440\u043e\3\2\2\2\u0441\u0437\3\2"+
		"\2\2\u0441\u0442\3\2\2\2\u0442\u0444\3\2\2\2\u0443\u0445\5b\62\2\u0444"+
		"\u0443\3\2\2\2\u0444\u0445\3\2\2\2\u0445\u0447\3\2\2\2\u0446\u03f8\3\2"+
		"\2\2\u0446\u040a\3\2\2\2\u0446\u042d\3\2\2\2\u0447)\3\2\2\2\u0448\u0449"+
		"\7 \2\2\u0449\u044a\7\u0230\2\2\u044a\u044b\5\u020c\u0107\2\u044b\u044c"+
		"\7\7\2\2\u044c\u044d\7\u0146\2\2\u044d\u0451\7\u040f\2\2\u044e\u044f\7"+
		"\u016a\2\2\u044f\u0450\7\u03f7\2\2\u0450\u0452\5\u0214\u010b\2\u0451\u044e"+
		"\3\2\2\2\u0451\u0452\3\2\2\2\u0452\u0458\3\2\2\2\u0453\u0455\7\u0158\2"+
		"\2\u0454\u0456\7\u03f7\2\2\u0455\u0454\3\2\2\2\u0455\u0456\3\2\2\2\u0456"+
		"\u0457\3\2\2\2\u0457\u0459\5\u0202\u0102\2\u0458\u0453\3\2\2\2\u0458\u0459"+
		"\3\2\2\2\u0459+\3\2\2\2\u045a\u045b\7 \2\2\u045b\u045c\7\u0230\2\2\u045c"+
		"\u045d\5\u020c\u0107\2\u045d\u045e\7\7\2\2\u045e\u045f\7\u0146\2\2\u045f"+
		"\u0460\7\u040f\2\2\u0460\u0461\7\u00aa\2\2\u0461\u0462\7\u0195\2\2\u0462"+
		"\u0463\7D\2\2\u0463\u0469\5\u020c\u0107\2\u0464\u0466\7\u0166\2\2\u0465"+
		"\u0467\7\u03f7\2\2\u0466\u0465\3\2\2\2\u0466\u0467\3\2\2\2\u0467\u0468"+
		"\3\2\2\2\u0468\u046a\5\u0214\u010b\2\u0469\u0464\3\2\2\2\u0469\u046a\3"+
		"\2\2\2\u046a\u0470\3\2\2\2\u046b\u046d\7\u0180\2\2\u046c\u046e\7\u03f7"+
		"\2\2\u046d\u046c\3\2\2\2\u046d\u046e\3\2\2\2\u046e\u046f\3\2\2\2\u046f"+
		"\u0471\5\u0214\u010b\2\u0470\u046b\3\2\2\2\u0470\u0471\3\2\2\2\u0471\u0477"+
		"\3\2\2\2\u0472\u0474\7\u0119\2\2\u0473\u0475\7\u03f7\2\2\u0474\u0473\3"+
		"\2\2\2\u0474\u0475\3\2\2\2\u0475\u0476\3\2\2\2\u0476\u0478\5\u0214\u010b"+
		"\2\u0477\u0472\3\2\2\2\u0477\u0478\3\2\2\2\u0478\u047e\3\2\2\2\u0479\u047b"+
		"\7\u01af\2\2\u047a\u047c\7\u03f7\2\2\u047b\u047a\3\2\2\2\u047b\u047c\3"+
		"\2\2\2\u047c\u047d\3\2\2\2\u047d\u047f\5\u0214\u010b\2\u047e\u0479\3\2"+
		"\2\2\u047e\u047f\3\2\2\2\u047f\u0485\3\2\2\2\u0480\u0482\7\u01c4\2\2\u0481"+
		"\u0483\7\u03f7\2\2\u0482\u0481\3\2\2\2\u0482\u0483\3\2\2\2\u0483\u0484"+
		"\3\2\2\2\u0484\u0486\5\u020c\u0107\2\u0485\u0480\3\2\2\2\u0485\u0486\3"+
		"\2\2\2\u0486\u0488\3\2\2\2\u0487\u0489\7\u0249\2\2\u0488\u0487\3\2\2\2"+
		"\u0488\u0489\3\2\2\2\u0489\u048f\3\2\2\2\u048a\u048c\7\u0133\2\2\u048b"+
		"\u048d\7\u03f7\2\2\u048c\u048b\3\2\2\2\u048c\u048d\3\2\2\2\u048d\u048e"+
		"\3\2\2\2\u048e\u0490\7\u040f\2\2\u048f\u048a\3\2\2\2\u048f\u0490\3\2\2"+
		"\2\u0490\u0491\3\2\2\2\u0491\u0493\7\u0158\2\2\u0492\u0494\7\u03f7\2\2"+
		"\u0493\u0492\3\2\2\2\u0493\u0494\3\2\2\2\u0494\u0495\3\2\2\2\u0495\u0496"+
		"\5\u0202\u0102\2\u0496-\3\2\2\2\u0497\u0499\7 \2\2\u0498\u049a\5\64\33"+
		"\2\u0499\u0498\3\2\2\2\u0499\u049a\3\2\2\2\u049a\u049b\3\2\2\2\u049b\u049c"+
		"\7\u00a1\2\2\u049c\u049d\5\u01f2\u00fa\2\u049d\u049e\t\t\2\2\u049e\u049f"+
		"\t\n\2\2\u049f\u04a0\7l\2\2\u04a0\u04a1\5\u01f4\u00fb\2\u04a1\u04a2\7"+
		"<\2\2\u04a2\u04a3\7\62\2\2\u04a3\u04a6\7\u0203\2\2\u04a4\u04a5\t\13\2"+
		"\2\u04a5\u04a7\5\u01f2\u00fa\2\u04a6\u04a4\3\2\2\2\u04a6\u04a7\3\2\2\2"+
		"\u04a7\u04a8\3\2\2\2\u04a8\u04a9\5\u015a\u00ae\2\u04a9/\3\2\2\2\u04aa"+
		"\u04ad\7 \2\2\u04ab\u04ac\7p\2\2\u04ac\u04ae\7\u0081\2\2\u04ad\u04ab\3"+
		"\2\2\2\u04ad\u04ae\3\2\2\2\u04ae\u04b2\3\2\2\2\u04af\u04b0\7\u0114\2\2"+
		"\u04b0\u04b1\7\u03f7\2\2\u04b1\u04b3\t\f\2\2\u04b2\u04af\3\2\2\2\u04b2"+
		"\u04b3\3\2\2\2\u04b3\u04b5\3\2\2\2\u04b4\u04b6\5\64\33\2\u04b5\u04b4\3"+
		"\2";
	private static final String _serializedATNSegment1 =
		"\2\2\u04b5\u04b6\3\2\2\2\u04b6\u04ba\3\2\2\2\u04b7\u04b8\7\u0091\2\2\u04b8"+
		"\u04b9\7\u0208\2\2\u04b9\u04bb\t\r\2\2\u04ba\u04b7\3\2\2\2\u04ba\u04bb"+
		"\3\2\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd\7\u0246\2\2\u04bd\u04c2\5\u01f2"+
		"\u00fa\2\u04be\u04bf\7\u0400\2\2\u04bf\u04c0\5\u022c\u0117\2\u04c0\u04c1"+
		"\7\u0401\2\2\u04c1\u04c3\3\2\2\2\u04c2\u04be\3\2\2\2\u04c2\u04c3\3\2\2"+
		"\2\u04c3\u04c4\3\2\2\2\u04c4\u04c5\7\r\2\2\u04c5\u04cc\5\u00b4[\2\u04c6"+
		"\u04c8\7\u00b0\2\2\u04c7\u04c9\t\16\2\2\u04c8\u04c7\3\2\2\2\u04c8\u04c9"+
		"\3\2\2\2\u04c9\u04ca\3\2\2\2\u04ca\u04cb\7\31\2\2\u04cb\u04cd\7n\2\2\u04cc"+
		"\u04c6\3\2\2\2\u04cc\u04cd\3\2\2\2\u04cd\61\3\2\2\2\u04ce\u04d0\7(\2\2"+
		"\u04cf\u04ce\3\2\2\2\u04cf\u04d0\3\2\2\2\u04d0\u04d4\3\2\2\2\u04d1\u04d2"+
		"\7\30\2\2\u04d2\u04d5\7\u008c\2\2\u04d3\u04d5\7\u02df\2\2\u04d4\u04d1"+
		"\3\2\2\2\u04d4\u04d3\3\2\2\2\u04d5\u04d7\3\2\2\2\u04d6\u04d8\7\u03f7\2"+
		"\2\u04d7\u04d6\3\2\2\2\u04d7\u04d8\3\2\2\2\u04d8\u04db\3\2\2\2\u04d9\u04dc"+
		"\5\u01fe\u0100\2\u04da\u04dc\7(\2\2\u04db\u04d9\3\2\2\2\u04db\u04da\3"+
		"\2\2\2\u04dc\u04e6\3\2\2\2\u04dd\u04df\7(\2\2\u04de\u04dd\3\2\2\2\u04de"+
		"\u04df\3\2\2\2\u04df\u04e0\3\2\2\2\u04e0\u04e2\7\32\2\2\u04e1\u04e3\7"+
		"\u03f7\2\2\u04e2\u04e1\3\2\2\2\u04e2\u04e3\3\2\2\2\u04e3\u04e4\3\2\2\2"+
		"\u04e4\u04e6\5\u0200\u0101\2\u04e5\u04cf\3\2\2\2\u04e5\u04de\3\2\2\2\u04e6"+
		"\63\3\2\2\2\u04e7\u04e8\7\u0149\2\2\u04e8\u04ef\7\u03f7\2\2\u04e9\u04f0"+
		"\5\u01fa\u00fe\2\u04ea\u04ed\7#\2\2\u04eb\u04ec\7\u0400\2\2\u04ec\u04ee"+
		"\7\u0401\2\2\u04ed\u04eb\3\2\2\2\u04ed\u04ee\3\2\2\2\u04ee\u04f0\3\2\2"+
		"\2\u04ef\u04e9\3\2\2\2\u04ef\u04ea\3\2\2\2\u04f0\65\3\2\2\2\u04f1\u04f2"+
		"\7\u0116\2\2\u04f2\u04f6\58\35\2\u04f3\u04f5\5:\36\2\u04f4\u04f3\3\2\2"+
		"\2\u04f5\u04f8\3\2\2\2\u04f6\u04f4\3\2\2\2\u04f6\u04f7\3\2\2\2\u04f7\u0514"+
		"\3\2\2\2\u04f8\u04f6\3\2\2\2\u04f9\u04fc\7\u0160\2\2\u04fa\u04fd\5\u0212"+
		"\u010a\2\u04fb\u04fd\5\u025c\u012f\2\u04fc\u04fa\3\2\2\2\u04fc\u04fb\3"+
		"\2\2\2\u04fd\u04fe\3\2\2\2\u04fe\u0507\5<\37\2\u04ff\u0500\7\u021f\2\2"+
		"\u0500\u0504\58\35\2\u0501\u0503\5:\36\2\u0502\u0501\3\2\2\2\u0503\u0506"+
		"\3\2\2\2\u0504\u0502\3\2\2\2\u0504\u0505\3\2\2\2\u0505\u0508\3\2\2\2\u0506"+
		"\u0504\3\2\2\2\u0507\u04ff\3\2\2\2\u0507\u0508\3\2\2\2\u0508\u0511\3\2"+
		"\2\2\u0509\u050a\7\u0157\2\2\u050a\u050e\58\35\2\u050b\u050d\5:\36\2\u050c"+
		"\u050b\3\2\2\2\u050d\u0510\3\2\2\2\u050e\u050c\3\2\2\2\u050e\u050f\3\2"+
		"\2\2\u050f\u0512\3\2\2\2\u0510\u050e\3\2\2\2\u0511\u0509\3\2\2\2\u0511"+
		"\u0512\3\2\2\2\u0512\u0514\3\2\2\2\u0513\u04f1\3\2\2\2\u0513\u04f9\3\2"+
		"\2\2\u0514\67\3\2\2\2\u0515\u051a\7\u00ff\2\2\u0516\u051a\5\u0216\u010c"+
		"\2\u0517\u051a\5\u0212\u010a\2\u0518\u051a\5\u025c\u012f\2\u0519\u0515"+
		"\3\2\2\2\u0519\u0516\3\2\2\2\u0519\u0517\3\2\2\2\u0519\u0518\3\2\2\2\u051a"+
		"9\3\2\2\2\u051b\u051c\7\u03f2\2\2\u051c\u051f\7O\2\2\u051d\u0520\5\u0212"+
		"\u010a\2\u051e\u0520\5\u025c\u012f\2\u051f\u051d\3\2\2\2\u051f\u051e\3"+
		"\2\2\2\u0520\u0521\3\2\2\2\u0521\u0522\5<\37\2\u0522;\3\2\2\2\u0523\u0531"+
		"\5\u0278\u013d\2\u0524\u0531\7\u00cd\2\2\u0525\u0531\7\u00e0\2\2\u0526"+
		"\u0531\7\u00e1\2\2\u0527\u0531\7\u00e2\2\2\u0528\u0531\7\u00e3\2\2\u0529"+
		"\u0531\7\u00e4\2\2\u052a\u0531\7\u00e5\2\2\u052b\u0531\7\u00e6\2\2\u052c"+
		"\u0531\7\u00e7\2\2\u052d\u0531\7\u00e8\2\2\u052e\u0531\7\u00e9\2\2\u052f"+
		"\u0531\7\u00ea\2\2\u0530\u0523\3\2\2\2\u0530\u0524\3\2\2\2\u0530\u0525"+
		"\3\2\2\2\u0530\u0526\3\2\2\2\u0530\u0527\3\2\2\2\u0530\u0528\3\2\2\2\u0530"+
		"\u0529\3\2\2\2\u0530\u052a\3\2\2\2\u0530\u052b\3\2\2\2\u0530\u052c\3\2"+
		"\2\2\u0530\u052d\3\2\2\2\u0530\u052e\3\2\2\2\u0530\u052f\3\2\2\2\u0531"+
		"=\3\2\2\2\u0532\u0538\7\u0154\2\2\u0533\u0538\7\u014d\2\2\u0534\u0535"+
		"\7\u014d\2\2\u0535\u0536\7l\2\2\u0536\u0538\7\u020f\2\2\u0537\u0532\3"+
		"\2\2\2\u0537\u0533\3\2\2\2\u0537\u0534\3\2\2\2\u0538?\3\2\2\2\u0539\u053a"+
		"\7\u00ab\2\2\u053a\u053b\t\17\2\2\u053bA\3\2\2\2\u053c\u053e\7\u018d\2"+
		"\2\u053d\u053f\7\u03f7\2\2\u053e\u053d\3\2\2\2\u053e\u053f\3\2\2\2\u053f"+
		"\u0540\3\2\2\2\u0540\u054a\5\u0214\u010b\2\u0541\u054a\5@!\2\u0542\u0543"+
		"\7\u00b0\2\2\u0543\u0544\7\u01d4\2\2\u0544\u054a\5\u020c\u0107\2\u0545"+
		"\u0546\7\u0133\2\2\u0546\u054a\7\u040f\2\2\u0547\u054a\7\u0185\2\2\u0548"+
		"\u054a\7\u0248\2\2\u0549\u053c\3\2\2\2\u0549\u0541\3\2\2\2\u0549\u0542"+
		"\3\2\2\2\u0549\u0545\3\2\2\2\u0549\u0547\3\2\2\2\u0549\u0548\3\2\2\2\u054a"+
		"C\3\2\2\2\u054b\u054d\t\20\2\2\u054c\u054b\3\2\2\2\u054c\u054d\3\2\2\2"+
		"\u054d\u054e\3\2\2\2\u054e\u054f\5\u020c\u0107\2\u054f\u0550\5\u0220\u0111"+
		"\2\u0550E\3\2\2\2\u0551\u0552\5\u020c\u0107\2\u0552\u0553\5\u0220\u0111"+
		"\2\u0553G\3\2\2\2\u0554\u0555\7\u0133\2\2\u0555\u056c\7\u040f\2\2\u0556"+
		"\u0557\7\u018e\2\2\u0557\u056c\7\u0091\2\2\u0558\u055a\7h\2\2\u0559\u0558"+
		"\3\2\2\2\u0559\u055a\3\2\2\2\u055a\u055b\3\2\2\2\u055b\u056c\7-\2\2\u055c"+
		"\u055d\7\u013f\2\2\u055d\u0567\7\u0091\2\2\u055e\u055f\7\u01c3\2\2\u055f"+
		"\u0567\7\u0091\2\2\u0560\u0561\7{\2\2\u0561\u0562\7\u0091\2\2\u0562\u0567"+
		"\7\u0145\2\2\u0563\u0564\7f\2\2\u0564\u0565\7\u0091\2\2\u0565\u0567\7"+
		"\u0145\2\2\u0566\u055c\3\2\2\2\u0566\u055e\3\2\2\2\u0566\u0560\3\2\2\2"+
		"\u0566\u0563\3\2\2\2\u0567\u056c\3\2\2\2\u0568\u0569\7\u0091\2\2\u0569"+
		"\u056a\7\u0208\2\2\u056a\u056c\t\r\2\2\u056b\u0554\3\2\2\2\u056b\u0556"+
		"\3\2\2\2\u056b\u0559\3\2\2\2\u056b\u0566\3\2\2\2\u056b\u0568\3\2\2\2\u056c"+
		"I\3\2\2\2\u056d\u056e\7\u017a\2\2\u056e\u057c\7\u040f\2\2\u056f\u0570"+
		"\7%\2\2\u0570\u057c\7\u040f\2\2\u0571\u0572\7\u0240\2\2\u0572\u057c\7"+
		"\u040f\2\2\u0573\u0574\7\u01d8\2\2\u0574\u057c\7\u040f\2\2\u0575\u0576"+
		"\7\u0212\2\2\u0576\u057c\7\u040f\2\2\u0577\u0578\7\u01d1\2\2\u0578\u057c"+
		"\7\u040f\2\2\u0579\u057a\7\u01dd\2\2\u057a\u057c\5\u0212\u010a\2\u057b"+
		"\u056d\3\2\2\2\u057b\u056f\3\2\2\2\u057b\u0571\3\2\2\2\u057b\u0573\3\2"+
		"\2\2\u057b\u0575\3\2\2\2\u057b\u0577\3\2\2\2\u057b\u0579\3\2\2\2\u057c"+
		"K\3\2\2\2\u057d\u057e\7\u0400\2\2\u057e\u0583\5N(\2\u057f\u0580\7\u0402"+
		"\2\2\u0580\u0582\5N(\2\u0581\u057f\3\2\2\2\u0582\u0585\3\2\2\2\u0583\u0581"+
		"\3\2\2\2\u0583\u0584\3\2\2\2\u0584\u0586\3\2\2\2\u0585\u0583\3\2\2\2\u0586"+
		"\u0587\7\u0401\2\2\u0587M\3\2\2\2\u0588\u0589\5\u020c\u0107\2\u0589\u058a"+
		"\5P)\2\u058a\u058e\3\2\2\2\u058b\u058e\5T+\2\u058c\u058e\5\\/\2\u058d"+
		"\u0588\3\2\2\2\u058d\u058b\3\2\2\2\u058d\u058c\3\2\2\2\u058eO\3\2\2\2"+
		"\u058f\u0593\5\u0220\u0111\2\u0590\u0592\5R*\2\u0591\u0590\3\2\2\2\u0592"+
		"\u0595\3\2\2\2\u0593\u0591\3\2\2\2\u0593\u0594\3\2\2\2\u0594Q\3\2\2\2"+
		"\u0595\u0593\3\2\2\2\u0596\u05bf\5\u021c\u010f\2\u0597\u0598\7(\2\2\u0598"+
		"\u05bf\5\u023e\u0120\2\u0599\u059e\7\u011a\2\2\u059a\u059b\7l\2\2\u059b"+
		"\u059c\7\u00a8\2\2\u059c\u059e\5\u0240\u0121\2\u059d\u0599\3\2\2\2\u059d"+
		"\u059a\3\2\2\2\u059e\u05bf\3\2\2\2\u059f\u05a1\7v\2\2\u05a0\u059f\3\2"+
		"\2\2\u05a0\u05a1\3\2\2\2\u05a1\u05a2\3\2\2\2\u05a2\u05bf\7T\2\2\u05a3"+
		"\u05a5\7\u00a5\2\2\u05a4\u05a6\7T\2\2\u05a5\u05a4\3\2\2\2\u05a5\u05a6"+
		"\3\2\2\2\u05a6\u05bf\3\2\2\2\u05a7\u05a8\7\u0133\2\2\u05a8\u05bf\7\u040f"+
		"\2\2\u05a9\u05aa\7\u0131\2\2\u05aa\u05bf\t\21\2\2\u05ab\u05ac\7\u0225"+
		"\2\2\u05ac\u05bf\t\22\2\2\u05ad\u05bf\5V,\2\u05ae\u05af\7\32\2\2\u05af"+
		"\u05bf\5\u0200\u0101\2\u05b0\u05b1\7A\2\2\u05b1\u05b3\7\n\2\2\u05b2\u05b0"+
		"\3\2\2\2\u05b2\u05b3\3\2\2\2\u05b3\u05b4\3\2\2\2\u05b4\u05b5\7\r\2\2\u05b5"+
		"\u05b6\7\u0400\2\2\u05b6\u05b7\5\u025c\u012f\2\u05b7\u05b9\7\u0401\2\2"+
		"\u05b8\u05ba\t\23\2\2\u05b9\u05b8\3\2\2\2\u05b9\u05ba\3\2\2\2\u05ba\u05bf"+
		"\3\2\2\2\u05bb\u05bc\7\u00df\2\2\u05bc\u05bd\7(\2\2\u05bd\u05bf\7\u0244"+
		"\2\2\u05be\u0596\3\2\2\2\u05be\u0597\3\2\2\2\u05be\u059d\3\2\2\2\u05be"+
		"\u05a0\3\2\2\2\u05be\u05a3\3\2\2\2\u05be\u05a7\3\2\2\2\u05be\u05a9\3\2"+
		"\2\2\u05be\u05ab\3\2\2\2\u05be\u05ad\3\2\2\2\u05be\u05ae\3\2\2\2\u05be"+
		"\u05b2\3\2\2\2\u05be\u05bb\3\2\2\2\u05bfS\3\2\2\2\u05c0\u05c2\7\35\2\2"+
		"\u05c1\u05c3\5\u020c\u0107\2\u05c2\u05c1\3\2\2\2\u05c2\u05c3\3\2\2\2\u05c3"+
		"\u05c5\3\2\2\2\u05c4\u05c0\3\2\2\2\u05c4\u05c5\3\2\2\2\u05c5\u05c6\3\2"+
		"\2\2\u05c6\u05c7\7v\2\2\u05c7\u05c9\7T\2\2\u05c8\u05ca\5\u020c\u0107\2"+
		"\u05c9\u05c8\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05cc\3\2\2\2\u05cb\u05cd"+
		"\5@!\2\u05cc\u05cb\3\2\2\2\u05cc\u05cd\3\2\2\2\u05cd\u05ce\3\2\2\2\u05ce"+
		"\u05d2\5\u0230\u0119\2\u05cf\u05d1\5B\"\2\u05d0\u05cf\3\2\2\2\u05d1\u05d4"+
		"\3\2\2\2\u05d2\u05d0\3\2\2\2\u05d2\u05d3\3\2\2\2\u05d3\u0606\3\2\2\2\u05d4"+
		"\u05d2\3\2\2\2\u05d5\u05d7\7\35\2\2\u05d6\u05d8\5\u020c\u0107\2\u05d7"+
		"\u05d6\3\2\2\2\u05d7\u05d8\3\2\2\2\u05d8\u05da\3\2\2\2\u05d9\u05d5\3\2"+
		"\2\2\u05d9\u05da\3\2\2\2\u05da\u05db\3\2\2\2\u05db\u05dd\7\u00a5\2\2\u05dc"+
		"\u05de\t\24\2\2\u05dd\u05dc\3\2\2\2\u05dd\u05de\3\2\2\2\u05de\u05e0\3"+
		"\2\2\2\u05df\u05e1\5\u020c\u0107\2\u05e0\u05df\3\2\2\2\u05e0\u05e1\3\2"+
		"\2\2\u05e1\u05e3\3\2\2\2\u05e2\u05e4\5@!\2\u05e3\u05e2\3\2\2\2\u05e3\u05e4"+
		"\3\2\2\2\u05e4\u05e5\3\2\2\2\u05e5\u05e9\5\u0230\u0119\2\u05e6\u05e8\5"+
		"B\"\2\u05e7\u05e6\3\2\2\2\u05e8\u05eb\3\2\2\2\u05e9\u05e7\3\2\2\2\u05e9"+
		"\u05ea\3\2\2\2\u05ea\u0606\3\2\2\2\u05eb\u05e9\3\2\2\2\u05ec\u05ee\7\35"+
		"\2\2\u05ed\u05ef\5\u020c\u0107\2\u05ee\u05ed\3\2\2\2\u05ee\u05ef\3\2\2"+
		"\2\u05ef\u05f1\3\2\2\2\u05f0\u05ec\3\2\2\2\u05f0\u05f1\3\2\2\2\u05f1\u05f2"+
		"\3\2\2\2\u05f2\u05f3\7>\2\2\u05f3\u05f5\7T\2\2\u05f4\u05f6\5\u020c\u0107"+
		"\2\u05f5\u05f4\3\2\2\2\u05f5\u05f6\3\2\2\2\u05f6\u05f7\3\2\2\2\u05f7\u05f8"+
		"\5\u0230\u0119\2\u05f8\u05f9\5V,\2\u05f9\u0606\3\2\2\2\u05fa\u05fc\7\35"+
		"\2\2\u05fb\u05fd\5\u020c\u0107\2\u05fc\u05fb\3\2\2\2\u05fc\u05fd\3\2\2"+
		"\2\u05fd\u05ff\3\2\2\2\u05fe\u05fa\3\2\2\2\u05fe\u05ff\3\2\2\2\u05ff\u0600"+
		"\3\2\2\2\u0600\u0601\7\31\2\2\u0601\u0602\7\u0400\2\2\u0602\u0603\5\u025c"+
		"\u012f\2\u0603\u0604\7\u0401\2\2\u0604\u0606\3\2\2\2\u0605\u05c4\3\2\2"+
		"\2\u0605\u05d9\3\2\2\2\u0605\u05f0\3\2\2\2\u0605\u05fe\3\2\2\2\u0606U"+
		"\3\2\2\2\u0607\u0608\7|\2\2\u0608\u060a\5\u01f4\u00fb\2\u0609\u060b\5"+
		"\u0230\u0119\2\u060a\u0609\3\2\2\2\u060a\u060b\3\2\2\2\u060b\u060e\3\2"+
		"\2\2\u060c\u060d\7d\2\2\u060d\u060f\t\25\2\2\u060e\u060c\3\2\2\2\u060e"+
		"\u060f\3\2\2\2\u060f\u0611\3\2\2\2\u0610\u0612\5X-\2\u0611\u0610\3\2\2"+
		"\2\u0611\u0612\3\2\2\2\u0612W\3\2\2\2\u0613\u0614\7l\2\2\u0614\u0615\7"+
		"*\2\2\u0615\u0619\5Z.\2\u0616\u0617\7l\2\2\u0617\u0618\7\u00a8\2\2\u0618"+
		"\u061a\5Z.\2\u0619\u0616\3\2\2\2\u0619\u061a\3\2\2\2\u061a\u0624\3\2\2"+
		"\2\u061b\u061c\7l\2\2\u061c\u061d\7\u00a8\2\2\u061d\u0621\5Z.\2\u061e"+
		"\u061f\7l\2\2\u061f\u0620\7*\2\2\u0620\u0622\5Z.\2\u0621\u061e\3\2\2\2"+
		"\u0621\u0622\3\2\2\2\u0622\u0624\3\2\2\2\u0623\u0613\3\2\2\2\u0623\u061b"+
		"\3\2\2\2\u0624Y\3\2\2\2\u0625\u062c\7\u0084\2\2\u0626\u062c\7\24\2\2\u0627"+
		"\u0628\7\u008c\2\2\u0628\u062c\7j\2\2\u0629\u062a\7\u01c3\2\2\u062a\u062c"+
		"\7\u0111\2\2\u062b\u0625\3\2\2\2\u062b\u0626\3\2\2\2\u062b\u0627\3\2\2"+
		"\2\u062b\u0629\3\2\2\2\u062c[\3\2\2\2\u062d\u062f\t\24\2\2\u062e\u0630"+
		"\5\u020c\u0107\2\u062f\u062e\3\2\2\2\u062f\u0630\3\2\2\2\u0630\u0632\3"+
		"\2\2\2\u0631\u0633\5@!\2\u0632\u0631\3\2\2\2\u0632\u0633\3\2\2\2\u0633"+
		"\u0634\3\2\2\2\u0634\u0638\5\u0230\u0119\2\u0635\u0637\5B\"\2\u0636\u0635"+
		"\3\2\2\2\u0637\u063a\3\2\2\2\u0638\u0636\3\2\2\2\u0638\u0639\3\2\2\2\u0639"+
		"\u064a\3\2\2\2\u063a\u0638\3\2\2\2\u063b\u063d\t\26\2\2\u063c\u063e\t"+
		"\24\2\2\u063d\u063c\3\2\2\2\u063d\u063e\3\2\2\2\u063e\u0640\3\2\2\2\u063f"+
		"\u0641\5\u020c\u0107\2\u0640\u063f\3\2\2\2\u0640\u0641\3\2\2\2\u0641\u0642"+
		"\3\2\2\2\u0642\u0646\5\u0230\u0119\2\u0643\u0645\5B\"\2\u0644\u0643\3"+
		"\2\2\2\u0645\u0648\3\2\2\2\u0646\u0644\3\2\2\2\u0646\u0647\3\2\2\2\u0647"+
		"\u064a\3\2\2\2\u0648\u0646\3\2\2\2\u0649\u062d\3\2\2\2\u0649\u063b\3\2"+
		"\2\2\u064a]\3\2\2\2\u064b\u064d\7\u0158\2\2\u064c\u064e\7\u03f7\2\2\u064d"+
		"\u064c\3\2\2\2\u064d\u064e\3\2\2\2\u064e\u064f\3\2\2\2\u064f\u06dc\5\u0202"+
		"\u0102\2\u0650\u0652\7\u011a\2\2\u0651\u0653\7\u03f7\2\2\u0652\u0651\3"+
		"\2\2\2\u0652\u0653\3\2\2\2\u0653\u0654\3\2\2\2\u0654\u06dc\5\u0212\u010a"+
		"\2\u0655\u0657\7\u011b\2\2\u0656\u0658\7\u03f7\2\2\u0657\u0656\3\2\2\2"+
		"\u0657\u0658\3\2\2\2\u0658\u0659\3\2\2\2\u0659\u06dc\5\u0212\u010a\2\u065a"+
		"\u065c\7(\2\2\u065b\u065a\3\2\2\2\u065b\u065c\3\2\2\2\u065c\u0660\3\2"+
		"\2\2\u065d\u065e\7\30\2\2\u065e\u0661\7\u008c\2\2\u065f\u0661\7\u02df"+
		"\2\2\u0660\u065d\3\2\2\2\u0660\u065f\3\2\2\2\u0661\u0663\3\2\2\2\u0662"+
		"\u0664\7\u03f7\2\2\u0663\u0662\3\2\2\2\u0663\u0664\3\2\2\2\u0664\u0667"+
		"\3\2\2\2\u0665\u0668\5\u01fe\u0100\2\u0666\u0668\7(\2\2\u0667\u0665\3"+
		"\2\2\2\u0667\u0666\3\2\2\2\u0668\u06dc\3\2\2\2\u0669\u066b\t\27\2\2\u066a"+
		"\u066c\7\u03f7\2\2\u066b\u066a\3\2\2\2\u066b\u066c\3\2\2\2\u066c\u066d"+
		"\3\2\2\2\u066d\u06dc\t\30\2\2\u066e\u0670\7(\2\2\u066f\u066e\3\2\2\2\u066f"+
		"\u0670\3\2\2\2\u0670\u0671\3\2\2\2\u0671\u0673\7\32\2\2\u0672\u0674\7"+
		"\u03f7\2\2\u0673\u0672\3\2\2\2\u0673\u0674\3\2\2\2\u0674\u0675\3\2\2\2"+
		"\u0675\u06dc\5\u0200\u0101\2\u0676\u0678\7\u0133\2\2\u0677\u0679\7\u03f7"+
		"\2\2\u0678\u0677\3\2\2\2\u0678\u0679\3\2\2\2\u0679\u067a\3\2\2\2\u067a"+
		"\u06dc\7\u040f\2\2\u067b\u067d\7\u0138\2\2\u067c\u067e\7\u03f7\2\2\u067d"+
		"\u067c\3\2\2\2\u067d\u067e\3\2\2\2\u067e\u067f\3\2\2\2\u067f\u06dc\t\31"+
		"\2\2\u0680\u0682\7\u013a\2\2\u0681\u0683\7\u03f7\2\2\u0682\u0681\3\2\2"+
		"\2\u0682\u0683\3\2\2\2\u0683\u0684\3\2\2\2\u0684\u06dc\7\u040f\2\2\u0685"+
		"\u0686\7\u0145\2\2\u0686\u0688\7\u014c\2\2\u0687\u0689\7\u03f7\2\2\u0688"+
		"\u0687\3\2\2\2\u0688\u0689\3\2\2\2\u0689\u068a\3\2\2\2\u068a\u06dc\7\u040f"+
		"\2\2\u068b\u068d\7\u014a\2\2\u068c\u068e\7\u03f7\2\2\u068d\u068c\3\2\2"+
		"\2\u068d\u068e\3\2\2\2\u068e\u068f\3\2\2\2\u068f\u06dc\t\30\2\2\u0690"+
		"\u0692\7\u0155\2\2\u0691\u0693\7\u03f7\2\2\u0692\u0691\3\2\2\2\u0692\u0693"+
		"\3\2\2\2\u0693\u0694\3\2\2\2\u0694\u06dc\7\u040f\2\2\u0695\u0696\7J\2"+
		"\2\u0696\u0698\7\u014c\2\2\u0697\u0699\7\u03f7\2\2\u0698\u0697\3\2\2\2"+
		"\u0698\u0699\3\2\2\2\u0699\u069a\3\2\2\2\u069a\u06dc\7\u040f\2\2\u069b"+
		"\u069d\7\u0182\2\2\u069c\u069e\7\u03f7\2\2\u069d\u069c\3\2\2\2\u069d\u069e"+
		"\3\2\2\2\u069e\u069f\3\2\2\2\u069f\u06dc\t\32\2\2\u06a0\u06a2\7\u018d"+
		"\2\2\u06a1\u06a3\7\u03f7\2\2\u06a2\u06a1\3\2\2\2\u06a2\u06a3\3\2\2\2\u06a3"+
		"\u06a4\3\2\2\2\u06a4\u06dc\5\u0214\u010b\2\u06a5\u06a7\7\u01ae\2\2\u06a6"+
		"\u06a8\7\u03f7\2\2\u06a7\u06a6\3\2\2\2\u06a7\u06a8\3\2\2\2\u06a8\u06a9"+
		"\3\2\2\2\u06a9\u06dc\5\u0212\u010a\2\u06aa\u06ac\7\u01b8\2\2\u06ab\u06ad"+
		"\7\u03f7\2\2\u06ac\u06ab\3\2\2\2\u06ac\u06ad\3\2\2\2\u06ad\u06ae\3\2\2"+
		"\2\u06ae\u06dc\5\u0212\u010a\2\u06af\u06b1\7\u01d2\2\2\u06b0\u06b2\7\u03f7"+
		"\2\2\u06b1\u06b0\3\2\2\2\u06b1\u06b2\3\2\2\2\u06b2\u06b3\3\2\2\2\u06b3"+
		"\u06dc\t\33\2\2\u06b4\u06b6\7\u01d8\2\2\u06b5\u06b7\7\u03f7\2\2\u06b6"+
		"\u06b5\3\2\2\2\u06b6\u06b7\3\2\2\2\u06b7\u06b8\3\2\2\2\u06b8\u06dc\7\u040f"+
		"\2\2\u06b9\u06bb\7\u0205\2\2\u06ba\u06bc\7\u03f7\2\2\u06bb\u06ba\3\2\2"+
		"\2\u06bb\u06bc\3\2\2\2\u06bc\u06bd\3\2\2\2\u06bd\u06dc\t\34\2\2\u06be"+
		"\u06c0\7\u0220\2\2\u06bf\u06c1\7\u03f7\2\2\u06c0\u06bf\3\2\2\2\u06c0\u06c1"+
		"\3\2\2\2\u06c1\u06c2\3\2\2\2\u06c2\u06dc\t\33\2\2\u06c3\u06c5\7\u0221"+
		"\2\2\u06c4\u06c6\7\u03f7\2\2\u06c5\u06c4\3\2\2\2\u06c5\u06c6\3\2\2\2\u06c6"+
		"\u06c7\3\2\2\2\u06c7\u06dc\t\33\2\2\u06c8\u06ca\7\u0222\2\2\u06c9\u06cb"+
		"\7\u03f7\2\2\u06ca\u06c9\3\2\2\2\u06ca\u06cb\3\2\2\2\u06cb\u06cc\3\2\2"+
		"\2\u06cc\u06dc\5\u0212\u010a\2\u06cd\u06ce\7\u0230\2\2\u06ce\u06d0\5\u020c"+
		"\u0107\2\u06cf\u06d1\5`\61\2\u06d0\u06cf\3\2\2\2\u06d0\u06d1\3\2\2\2\u06d1"+
		"\u06dc\3\2\2\2\u06d2\u06dc\5`\61\2\u06d3\u06d5\7\u00a4\2\2\u06d4\u06d6"+
		"\7\u03f7\2\2\u06d5\u06d4\3\2\2\2\u06d5\u06d6\3\2\2\2\u06d6\u06d7\3\2\2"+
		"\2\u06d7\u06d8\7\u0400\2\2\u06d8\u06d9\5\u022e\u0118\2\u06d9\u06da\7\u0401"+
		"\2\2\u06da\u06dc\3\2\2\2\u06db\u064b\3\2\2\2\u06db\u0650\3\2\2\2\u06db"+
		"\u0655\3\2\2\2\u06db\u065b\3\2\2\2\u06db\u0669\3\2\2\2\u06db\u066f\3\2"+
		"\2\2\u06db\u0676\3\2\2\2\u06db\u067b\3\2\2\2\u06db\u0680\3\2\2\2\u06db"+
		"\u0685\3\2\2\2\u06db\u068b\3\2\2\2\u06db\u0690\3\2\2\2\u06db\u0695\3\2"+
		"\2\2\u06db\u069b\3\2\2\2\u06db\u06a0\3\2\2\2\u06db\u06a5\3\2\2\2\u06db"+
		"\u06aa\3\2\2\2\u06db\u06af\3\2\2\2\u06db\u06b4\3\2\2\2\u06db\u06b9\3\2"+
		"\2\2\u06db\u06be\3\2\2\2\u06db\u06c3\3\2\2\2\u06db\u06c8\3\2\2\2\u06db"+
		"\u06cd\3\2\2\2\u06db\u06d2\3\2\2\2\u06db\u06d3\3\2\2\2\u06dc_\3\2\2\2"+
		"\u06dd\u06de\7\u0225\2\2\u06de\u06df\t\22\2\2\u06dfa\3\2\2\2\u06e0\u06e1"+
		"\7u\2\2\u06e1\u06e2\7\22\2\2\u06e2\u06e5\5d\63\2\u06e3\u06e4\7\u01d7\2"+
		"\2\u06e4\u06e6\5\u0212\u010a\2\u06e5\u06e3\3\2\2\2\u06e5\u06e6\3\2\2\2"+
		"\u06e6\u06ee\3\2\2\2\u06e7\u06e8\7\u022a\2\2\u06e8\u06e9\7\22\2\2\u06e9"+
		"\u06ec\5f\64\2\u06ea\u06eb\7\u022b\2\2\u06eb\u06ed\5\u0212\u010a\2\u06ec"+
		"\u06ea\3\2\2\2\u06ec\u06ed\3\2\2\2\u06ed\u06ef\3\2\2\2\u06ee\u06e7\3\2"+
		"\2\2\u06ee\u06ef\3\2\2\2\u06ef\u06fb\3\2\2\2\u06f0\u06f1\7\u0400\2\2\u06f1"+
		"\u06f6\5h\65\2\u06f2\u06f3\7\u0402\2\2\u06f3\u06f5\5h\65\2\u06f4\u06f2"+
		"\3\2\2\2\u06f5\u06f8\3\2\2\2\u06f6\u06f4\3\2\2\2\u06f6\u06f7\3\2\2\2\u06f7"+
		"\u06f9\3\2\2\2\u06f8\u06f6\3\2\2\2\u06f9\u06fa\7\u0401\2\2\u06fa\u06fc"+
		"\3\2\2\2\u06fb\u06f0\3\2\2\2\u06fb\u06fc\3\2\2\2\u06fcc\3\2\2\2\u06fd"+
		"\u06ff\7\\\2\2\u06fe\u06fd\3\2\2\2\u06fe\u06ff\3\2\2\2\u06ff\u0700\3\2"+
		"\2\2\u0700\u0701\7\u0178\2\2\u0701\u0702\7\u0400\2\2\u0702\u0703\5\u025c"+
		"\u012f\2\u0703\u0704\7\u0401\2\2\u0704\u072b\3\2\2\2\u0705\u0707\7\\\2"+
		"\2\u0706\u0705\3\2\2\2\u0706\u0707\3\2\2\2\u0707\u0708\3\2\2\2\u0708\u070c"+
		"\7T\2\2\u0709\u070a\7\u0114\2\2\u070a\u070b\7\u03f7\2\2\u070b\u070d\t"+
		"\35\2\2\u070c\u0709\3\2\2\2\u070c\u070d\3\2\2\2\u070d\u070e\3\2\2\2\u070e"+
		"\u070f\7\u0400\2\2\u070f\u0710\5\u022c\u0117\2\u0710\u0711\7\u0401\2\2"+
		"\u0711\u072b\3\2\2\2\u0712\u071c\7y\2\2\u0713\u0714\7\u0400\2\2\u0714"+
		"\u0715\5\u025c\u012f\2\u0715\u0716\7\u0401\2\2\u0716\u071d\3\2\2\2\u0717"+
		"\u0718\7\u0130\2\2\u0718\u0719\7\u0400\2\2\u0719\u071a\5\u022c\u0117\2"+
		"\u071a\u071b\7\u0401\2\2\u071b\u071d\3\2\2\2\u071c\u0713\3\2\2\2\u071c"+
		"\u0717\3\2\2\2\u071d\u072b\3\2\2\2\u071e\u0728\7\u0193\2\2\u071f\u0720"+
		"\7\u0400\2\2\u0720\u0721\5\u025c\u012f\2\u0721\u0722\7\u0401\2\2\u0722"+
		"\u0729\3\2\2\2\u0723\u0724\7\u0130\2\2\u0724\u0725\7\u0400\2\2\u0725\u0726"+
		"\5\u022c\u0117\2\u0726\u0727\7\u0401\2\2\u0727\u0729\3\2\2\2\u0728\u071f"+
		"\3\2\2\2\u0728\u0723\3\2\2\2\u0729\u072b\3\2\2\2\u072a\u06fe\3\2\2\2\u072a"+
		"\u0706\3\2\2\2\u072a\u0712\3\2\2\2\u072a\u071e\3\2\2\2\u072be\3\2\2\2"+
		"\u072c\u072e\7\\\2\2\u072d\u072c\3\2\2\2\u072d\u072e\3\2\2\2\u072e\u072f"+
		"\3\2\2\2\u072f\u0730\7\u0178\2\2\u0730\u0731\7\u0400\2\2\u0731\u0732\5"+
		"\u025c\u012f\2\u0732\u0733\7\u0401\2\2\u0733\u0742\3\2\2\2\u0734\u0736"+
		"\7\\\2\2\u0735\u0734\3\2\2\2\u0735\u0736\3\2\2\2\u0736\u0737\3\2\2\2\u0737"+
		"\u073b\7T\2\2\u0738\u0739\7\u0114\2\2\u0739\u073a\7\u03f7\2\2\u073a\u073c"+
		"\t\35\2\2\u073b\u0738\3\2\2\2\u073b\u073c\3\2\2\2\u073c\u073d\3\2\2\2"+
		"\u073d\u073e\7\u0400\2\2\u073e\u073f\5\u022c\u0117\2\u073f\u0740\7\u0401"+
		"\2\2\u0740\u0742\3\2\2\2\u0741\u072d\3\2\2\2\u0741\u0735\3\2\2\2\u0742"+
		"g\3\2\2\2\u0743\u0744\7u\2\2\u0744\u0745\5\u020c\u0107\2\u0745\u0746\7"+
		"\u00ac\2\2\u0746\u0747\7\u0191\2\2\u0747\u0748\7\u0233\2\2\u0748\u0749"+
		"\7\u0400\2\2\u0749\u074e\5j\66\2\u074a\u074b\7\u0402\2\2\u074b\u074d\5"+
		"j\66\2\u074c\u074a\3\2\2\2\u074d\u0750\3\2\2\2\u074e\u074c\3\2\2\2\u074e"+
		"\u074f\3\2\2\2\u074f\u0751\3\2\2\2\u0750\u074e\3\2\2\2\u0751\u0755\7\u0401"+
		"\2\2\u0752\u0754\5p9\2\u0753\u0752\3\2\2\2\u0754\u0757\3\2\2\2\u0755\u0753"+
		"\3\2\2\2\u0755\u0756\3\2\2\2\u0756\u0760\3\2\2\2\u0757\u0755\3\2\2\2\u0758"+
		"\u075d\5n8\2\u0759\u075a\7\u0402\2\2\u075a\u075c\5n8\2\u075b\u0759\3\2"+
		"\2\2\u075c\u075f\3\2\2\2\u075d\u075b\3\2\2\2\u075d\u075e\3\2\2\2\u075e"+
		"\u0761\3\2\2\2\u075f\u075d\3\2\2\2\u0760\u0758\3\2\2\2\u0760\u0761\3\2"+
		"\2\2\u0761\u07c7\3\2\2\2\u0762\u0763\7u\2\2\u0763\u0764\5\u020c\u0107"+
		"\2\u0764\u0765\7\u00ac\2\2\u0765\u0766\7\u0191\2\2\u0766\u0767\7\u0233"+
		"\2\2\u0767\u076b\5j\66\2\u0768\u076a\5p9\2\u0769\u0768\3\2\2\2\u076a\u076d"+
		"\3\2\2\2\u076b\u0769\3\2\2\2\u076b\u076c\3\2\2\2\u076c\u0776\3\2\2\2\u076d"+
		"\u076b\3\2\2\2\u076e\u0773\5n8\2\u076f\u0770\7\u0402\2\2\u0770\u0772\5"+
		"n8\2\u0771\u076f\3\2\2\2\u0772\u0775\3\2\2\2\u0773\u0771\3\2\2\2\u0773"+
		"\u0774\3\2\2\2\u0774\u0777\3\2\2\2\u0775\u0773\3\2\2\2\u0776\u076e\3\2"+
		"\2\2\u0776\u0777\3\2\2\2\u0777\u07c7\3\2\2\2\u0778\u0779\7u\2\2\u0779"+
		"\u077a\5\u020c\u0107\2\u077a\u077b\7\u00ac\2\2\u077b\u077c\7I\2\2\u077c"+
		"\u077d\7\u0400\2\2\u077d\u0782\5j\66\2\u077e\u077f\7\u0402\2\2\u077f\u0781"+
		"\5j\66\2\u0780\u077e\3\2\2\2\u0781\u0784\3\2\2\2\u0782\u0780\3\2\2\2\u0782"+
		"\u0783\3\2\2\2\u0783\u0785\3\2\2\2\u0784\u0782\3\2\2\2\u0785\u0789\7\u0401"+
		"\2\2\u0786\u0788\5p9\2\u0787\u0786\3\2\2\2\u0788\u078b\3\2\2\2\u0789\u0787"+
		"\3\2\2\2\u0789\u078a\3\2\2\2\u078a\u0794\3\2\2\2\u078b\u0789\3\2\2\2\u078c"+
		"\u0791\5n8\2\u078d\u078e\7\u0402\2\2\u078e\u0790\5n8\2\u078f\u078d\3\2"+
		"\2\2\u0790\u0793\3\2\2\2\u0791\u078f\3\2\2\2\u0791\u0792\3\2\2\2\u0792"+
		"\u0795\3\2\2\2\u0793\u0791\3\2\2\2\u0794\u078c\3\2\2\2\u0794\u0795\3\2"+
		"\2\2\u0795\u07c7\3\2\2\2\u0796\u0797\7u\2\2\u0797\u0798\5\u020c\u0107"+
		"\2\u0798\u0799\7\u00ac\2\2\u0799\u079a\7I\2\2\u079a\u079b\7\u0400\2\2"+
		"\u079b\u07a0\5l\67\2\u079c\u079d\7\u0402\2\2\u079d\u079f\5l\67\2\u079e"+
		"\u079c\3\2\2\2\u079f\u07a2\3\2\2\2\u07a0\u079e\3\2\2\2\u07a0\u07a1\3\2"+
		"\2\2\u07a1\u07a3\3\2\2\2\u07a2\u07a0\3\2\2\2\u07a3\u07a7\7\u0401\2\2\u07a4"+
		"\u07a6\5p9\2\u07a5\u07a4\3\2\2\2\u07a6\u07a9\3\2\2\2\u07a7\u07a5\3\2\2"+
		"\2\u07a7\u07a8\3\2\2\2\u07a8\u07b2\3\2\2\2\u07a9\u07a7\3\2\2\2\u07aa\u07af"+
		"\5n8\2\u07ab\u07ac\7\u0402\2\2\u07ac\u07ae\5n8\2\u07ad\u07ab\3\2\2\2\u07ae"+
		"\u07b1\3\2\2\2\u07af\u07ad\3\2\2\2\u07af\u07b0\3\2\2\2\u07b0\u07b3\3\2"+
		"\2\2\u07b1\u07af\3\2\2\2\u07b2\u07aa\3\2\2\2\u07b2\u07b3\3\2\2\2\u07b3"+
		"\u07c7\3\2\2\2\u07b4\u07b5\7u\2\2\u07b5\u07b9\5\u020c\u0107\2\u07b6\u07b8"+
		"\5p9\2\u07b7\u07b6\3\2\2\2\u07b8\u07bb\3\2\2\2\u07b9\u07b7\3\2\2\2\u07b9"+
		"\u07ba\3\2\2\2\u07ba\u07c4\3\2\2\2\u07bb\u07b9\3\2\2\2\u07bc\u07c1\5n"+
		"8\2\u07bd\u07be\7\u0402\2\2\u07be\u07c0\5n8\2\u07bf\u07bd\3\2\2\2\u07c0"+
		"\u07c3\3\2\2\2\u07c1\u07bf\3\2\2\2\u07c1\u07c2\3\2\2\2\u07c2\u07c5\3\2"+
		"\2\2\u07c3\u07c1\3\2\2\2\u07c4\u07bc\3\2\2\2\u07c4\u07c5\3\2\2\2\u07c5"+
		"\u07c7\3\2\2\2\u07c6\u0743\3\2\2\2\u07c6\u0762\3\2\2\2\u07c6\u0778\3\2"+
		"\2\2\u07c6\u0796\3\2\2\2\u07c6\u07b4\3\2\2\2\u07c7i\3\2\2\2\u07c8\u07cc"+
		"\5\u021e\u0110\2\u07c9\u07cc\5\u025c\u012f\2\u07ca\u07cc\7e\2\2\u07cb"+
		"\u07c8\3\2\2\2\u07cb\u07c9\3\2\2\2\u07cb\u07ca\3\2\2\2\u07cck\3\2\2\2"+
		"\u07cd\u07ce\7\u0400\2\2\u07ce\u07d1\5j\66\2\u07cf\u07d0\7\u0402\2\2\u07d0"+
		"\u07d2\5j\66\2\u07d1\u07cf\3\2\2\2\u07d2\u07d3\3\2\2\2\u07d3\u07d1\3\2"+
		"\2\2\u07d3\u07d4\3\2\2\2\u07d4\u07d5\3\2\2\2\u07d5\u07d6\7\u0401\2\2\u07d6"+
		"m\3\2\2\2\u07d7\u07d8\7\u022a\2\2\u07d8\u07dc\5\u020c\u0107\2\u07d9\u07db"+
		"\5p9\2\u07da\u07d9\3\2\2\2\u07db\u07de\3\2\2\2\u07dc\u07da\3\2\2\2\u07dc"+
		"\u07dd\3\2\2\2\u07ddo\3\2\2\2\u07de\u07dc\3\2\2\2\u07df\u07e1\7\u0225"+
		"\2\2\u07e0\u07df\3\2\2\2\u07e0\u07e1\3\2\2\2\u07e1\u07e2\3\2\2\2\u07e2"+
		"\u07e4\7\u0158\2\2\u07e3\u07e5\7\u03f7\2\2\u07e4\u07e3\3\2\2\2\u07e4\u07e5"+
		"\3\2\2\2\u07e5\u07e6\3\2\2\2\u07e6\u080d\5\u0202\u0102\2\u07e7\u07e9\7"+
		"\u0133\2\2\u07e8\u07ea\7\u03f7\2\2\u07e9\u07e8\3\2\2\2\u07e9\u07ea\3\2"+
		"\2\2\u07ea\u07eb\3\2\2\2\u07eb\u080d\7\u040f\2\2\u07ec\u07ed\7\u0145\2"+
		"\2\u07ed\u07ef\7\u014c\2\2\u07ee\u07f0\7\u03f7\2\2\u07ef\u07ee\3\2\2\2"+
		"\u07ef\u07f0\3\2\2\2\u07f0\u07f1\3\2\2\2\u07f1\u080d\7\u040f\2\2\u07f2"+
		"\u07f3\7J\2\2\u07f3\u07f5\7\u014c\2\2\u07f4\u07f6\7\u03f7\2\2\u07f5\u07f4"+
		"\3\2\2\2\u07f5\u07f6\3\2\2\2\u07f6\u07f7\3\2\2\2\u07f7\u080d\7\u040f\2"+
		"\2\u07f8\u07fa\7\u01ae\2\2\u07f9\u07fb\7\u03f7\2\2\u07fa\u07f9\3\2\2\2"+
		"\u07fa\u07fb\3\2\2\2\u07fb\u07fc\3\2\2\2\u07fc\u080d\5\u0212\u010a\2\u07fd"+
		"\u07ff\7\u01b8\2\2\u07fe\u0800\7\u03f7\2\2\u07ff\u07fe\3\2\2\2\u07ff\u0800"+
		"\3\2\2\2\u0800\u0801\3\2\2\2\u0801\u080d\5\u0212\u010a\2\u0802\u0804\7"+
		"\u0230\2\2\u0803\u0805\7\u03f7\2\2\u0804\u0803\3\2\2\2\u0804\u0805\3\2"+
		"\2\2\u0805\u0806\3\2\2\2\u0806\u080d\5\u020c\u0107\2\u0807\u0809\7\u01c4"+
		"\2\2\u0808\u080a\7\u03f7\2\2\u0809\u0808\3\2\2\2\u0809\u080a\3\2\2\2\u080a"+
		"\u080b\3\2\2\2\u080b\u080d\5\u020c\u0107\2\u080c\u07e0\3\2\2\2\u080c\u07e7"+
		"\3\2\2\2\u080c\u07ec\3\2\2\2\u080c\u07f2\3\2\2\2\u080c\u07f8\3\2\2\2\u080c"+
		"\u07fd\3\2\2\2\u080c\u0802\3\2\2\2\u080c\u0807\3\2\2\2\u080dq\3\2\2\2"+
		"\u080e\u080f\7\t\2\2\u080f\u0811\t\2\2\2\u0810\u0812\5\u020c\u0107\2\u0811"+
		"\u0810\3\2\2\2\u0811\u0812\3\2\2\2\u0812\u0814\3\2\2\2\u0813\u0815\5\62"+
		"\32\2\u0814\u0813\3\2\2\2\u0815\u0816\3\2\2\2\u0816\u0814\3\2\2\2\u0816"+
		"\u0817\3\2\2\2\u0817\u0821\3\2\2\2\u0818\u0819\7\t\2\2\u0819\u081a\t\2"+
		"\2\2\u081a\u081b\5\u020c\u0107\2\u081b\u081c\7\u023f\2\2\u081c\u081d\7"+
		"\u0145\2\2\u081d\u081e\7\u014c\2\2\u081e\u081f\7\u01be\2\2\u081f\u0821"+
		"\3\2\2\2\u0820\u080e\3\2\2\2\u0820\u0818\3\2\2\2\u0821s\3\2\2\2\u0822"+
		"\u0824\7\t\2\2\u0823\u0825\5\64\33\2\u0824\u0823\3\2\2\2\u0824\u0825\3"+
		"\2\2\2\u0825\u0826\3\2\2\2\u0826\u0827\7\u015e\2\2\u0827\u082b\5\u01f2"+
		"\u00fa\2\u0828\u0829\7l\2\2\u0829\u082a\7\u0207\2\2\u082a\u082c\5\66\34"+
		"\2\u082b\u0828\3\2\2\2\u082b\u082c\3\2\2\2\u082c\u0833\3\2\2\2\u082d\u082e"+
		"\7l\2\2\u082e\u0830\7\u0136\2\2\u082f\u0831\7h\2\2\u0830\u082f\3\2\2\2"+
		"\u0830\u0831\3\2\2\2\u0831\u0832\3\2\2\2\u0832\u0834\7\u01e0\2\2\u0833"+
		"\u082d\3\2\2\2\u0833\u0834\3\2\2\2\u0834\u0838\3\2\2\2\u0835\u0836\7\177"+
		"\2\2\u0836\u0837\7\u009f\2\2\u0837\u0839\5\u01f2\u00fa\2\u0838\u0835\3"+
		"\2\2\2\u0838\u0839\3\2\2\2\u0839\u083b\3\2\2\2\u083a\u083c\5> \2\u083b"+
		"\u083a\3\2\2\2\u083b\u083c\3\2\2\2\u083c\u083f\3\2\2\2\u083d\u083e\7\u0133"+
		"\2\2\u083e\u0840\7\u040f\2\2\u083f\u083d\3\2\2\2\u083f\u0840\3\2\2\2\u0840"+
		"\u0843\3\2\2\2\u0841\u0842\7\u0150\2\2\u0842\u0844\5\u015a\u00ae\2\u0843"+
		"\u0841\3\2\2\2\u0843\u0844\3\2\2\2\u0844u\3\2\2\2\u0845\u0846\7\t\2\2"+
		"\u0846\u0847\7\u0172\2\2\u0847\u084b\5\u01f2\u00fa\2\u0848\u084a\5H%\2"+
		"\u0849\u0848\3\2\2\2\u084a\u084d\3\2\2\2\u084b\u0849\3\2\2\2\u084b\u084c"+
		"\3\2\2\2\u084cw\3\2\2\2\u084d\u084b\3\2\2\2\u084e\u084f\7\t\2\2\u084f"+
		"\u0850\7\u0184\2\2\u0850\u0851\7\u0202\2\2\u0851\u0852\7\u02ad\2\2\u0852"+
		"\u0853\7\u0197\2\2\u0853\u0854\7T\2\2\u0854y\3\2\2\2\u0855\u0856\7\t\2"+
		"\2\u0856\u0857\7\u0195\2\2\u0857\u0858\7D\2\2\u0858\u0859\5\u020c\u0107"+
		"\2\u0859\u085a\7\7\2\2\u085a\u085b\7\u023a\2\2\u085b\u0861\7\u040f\2\2"+
		"\u085c\u085e\7\u0180\2\2\u085d\u085f\7\u03f7\2\2\u085e\u085d\3\2\2\2\u085e"+
		"\u085f\3\2\2\2\u085f\u0860\3\2\2\2\u0860\u0862\5\u0214\u010b\2\u0861\u085c"+
		"\3\2\2\2\u0861\u0862\3\2\2\2\u0862\u0864\3\2\2\2\u0863\u0865\7\u0249\2"+
		"\2\u0864\u0863\3\2\2\2\u0864\u0865\3\2\2\2\u0865\u0866\3\2\2\2\u0866\u0868"+
		"\7\u0158\2\2\u0867\u0869\7\u03f7\2\2\u0868\u0867\3\2\2\2\u0868\u0869\3"+
		"\2\2\2\u0869\u086a\3\2\2\2\u086a\u086b\5\u0202\u0102\2\u086b{\3\2\2\2"+
		"\u086c\u086d\7\t\2\2\u086d\u086e\7w\2\2\u086e\u0872\5\u01f2\u00fa\2\u086f"+
		"\u0871\5H%\2\u0870\u086f\3\2\2\2\u0871\u0874\3\2\2\2\u0872\u0870\3\2\2"+
		"\2\u0872\u0873\3\2\2\2\u0873}\3\2\2\2\u0874\u0872\3\2\2\2\u0875\u0876"+
		"\7\t\2\2\u0876\u0877\7\u0209\2\2\u0877\u0878\5\u020c\u0107\2\u0878\u0879"+
		"\7\u01d0\2\2\u0879\u087a\7\u0400\2\2\u087a\u087f\5J&\2\u087b\u087c\7\u0402"+
		"\2\2\u087c\u087e\5J&\2\u087d\u087b\3\2\2\2\u087e\u0881\3\2\2\2\u087f\u087d"+
		"\3\2\2\2\u087f\u0880\3\2\2\2\u0880\u0882\3\2\2\2\u0881\u087f\3\2\2\2\u0882"+
		"\u0883\7\u0401\2\2\u0883\177\3\2\2\2\u0884\u0886\7\t\2\2\u0885\u0887\t"+
		"\3\2\2\u0886\u0885\3\2\2\2\u0886\u0887\3\2\2\2\u0887\u0889\3\2\2\2\u0888"+
		"\u088a\7H\2\2\u0889\u0888\3\2\2\2\u0889\u088a\3\2\2\2\u088a\u088b\3\2"+
		"\2\2\u088b\u088c\7\u009c\2\2\u088c\u0895\5\u01f4\u00fb\2\u088d\u0892\5"+
		"\u0086D\2\u088e\u088f\7\u0402\2\2\u088f\u0891\5\u0086D\2\u0890\u088e\3"+
		"\2\2\2\u0891\u0894\3\2\2\2\u0892\u0890\3\2\2\2\u0892\u0893\3\2\2\2\u0893"+
		"\u0896\3\2\2\2\u0894\u0892\3\2\2\2\u0895\u088d\3\2\2\2\u0895\u0896\3\2"+
		"\2\2\u0896\u0898\3\2\2\2\u0897\u0899\5b\62\2\u0898\u0897\3\2\2\2\u0898"+
		"\u0899\3\2\2\2\u0899\u0081\3\2\2\2\u089a\u089b\7\t\2\2\u089b\u089c\7\u0230"+
		"\2\2\u089c\u089d\5\u020c\u0107\2\u089d\u089e\t\36\2\2\u089e\u089f\7\u0146"+
		"\2\2\u089f\u08a3\7\u040f\2\2\u08a0\u08a1\7\u0180\2\2\u08a1\u08a2\7\u03f7"+
		"\2\2\u08a2\u08a4\5\u0214\u010b\2\u08a3\u08a0\3\2\2\2\u08a3\u08a4\3\2\2"+
		"\2\u08a4\u08a6\3\2\2\2\u08a5\u08a7\7\u0249\2\2\u08a6\u08a5\3\2\2\2\u08a6"+
		"\u08a7\3\2\2\2\u08a7\u08a8\3\2\2\2\u08a8\u08aa\7\u0158\2\2\u08a9\u08ab"+
		"\7\u03f7\2\2\u08aa\u08a9\3\2\2\2\u08aa\u08ab\3\2\2\2\u08ab\u08ac\3\2\2"+
		"\2\u08ac\u08ad\5\u0202\u0102\2\u08ad\u0083\3\2\2\2\u08ae\u08b2\7\t\2\2"+
		"\u08af\u08b0\7\u0114\2\2\u08b0\u08b1\7\u03f7\2\2\u08b1\u08b3\t\f\2\2\u08b2"+
		"\u08af\3\2\2\2\u08b2\u08b3\3\2\2\2\u08b3\u08b5\3\2\2\2\u08b4\u08b6\5\64"+
		"\33\2\u08b5\u08b4\3\2\2\2\u08b5\u08b6\3\2\2\2\u08b6\u08ba\3\2\2\2\u08b7"+
		"\u08b8\7\u0091\2\2\u08b8\u08b9\7\u0208\2\2\u08b9\u08bb\t\r\2\2\u08ba\u08b7"+
		"\3\2\2\2\u08ba\u08bb\3\2\2\2\u08bb\u08bc\3\2\2\2\u08bc\u08bd\7\u0246\2"+
		"\2\u08bd\u08c2\5\u01f2\u00fa\2\u08be\u08bf\7\u0400\2\2\u08bf\u08c0\5\u022c"+
		"\u0117\2\u08c0\u08c1\7\u0401\2\2\u08c1\u08c3\3\2\2\2\u08c2\u08be\3\2\2"+
		"\2\u08c2\u08c3\3\2\2\2\u08c3\u08c4\3\2\2\2\u08c4\u08c5\7\r\2\2\u08c5\u08cc"+
		"\5\u00b4[\2\u08c6\u08c8\7\u00b0\2\2\u08c7\u08c9\t\16\2\2\u08c8\u08c7\3"+
		"\2\2\2\u08c8\u08c9\3\2\2\2\u08c9\u08ca\3\2\2\2\u08ca\u08cb\7\31\2\2\u08cb"+
		"\u08cd\7n\2\2\u08cc\u08c6\3\2\2\2\u08cc\u08cd\3\2\2\2\u08cd\u0085\3\2"+
		"\2\2\u08ce\u08d5\5^\60\2\u08cf\u08d1\7\u0402\2\2\u08d0\u08cf\3\2\2\2\u08d0"+
		"\u08d1\3\2\2\2\u08d1\u08d2\3\2\2\2\u08d2\u08d4\5^\60\2\u08d3\u08d0\3\2"+
		"\2\2\u08d4\u08d7\3\2\2\2\u08d5\u08d3\3\2\2\2\u08d5\u08d6\3\2\2\2\u08d6"+
		"\u0a35\3\2\2\2\u08d7\u08d5\3\2\2\2\u08d8\u08da\7\7\2\2\u08d9\u08db\7\33"+
		"\2\2\u08da\u08d9\3\2\2\2\u08da\u08db\3\2\2\2\u08db\u08dc\3\2\2\2\u08dc"+
		"\u08dd\5\u020c\u0107\2\u08dd\u08e1\5P)\2\u08de\u08e2\7\u016c\2\2\u08df"+
		"\u08e0\7\u0112\2\2\u08e0\u08e2\5\u020c\u0107\2\u08e1\u08de\3\2\2\2\u08e1"+
		"\u08df\3\2\2\2\u08e1\u08e2\3\2\2\2\u08e2\u0a35\3\2\2\2\u08e3\u08e5\7\7"+
		"\2\2\u08e4\u08e6\7\33\2\2\u08e5\u08e4\3\2\2\2\u08e5\u08e6\3\2\2\2\u08e6"+
		"\u08e7\3\2\2\2\u08e7\u08e8\7\u0400\2\2\u08e8\u08e9\5\u020c\u0107\2\u08e9"+
		"\u08f0\5P)\2\u08ea\u08eb\7\u0402\2\2\u08eb\u08ec\5\u020c\u0107\2\u08ec"+
		"\u08ed\5P)\2\u08ed\u08ef\3\2\2\2\u08ee\u08ea\3\2\2\2\u08ef\u08f2\3\2\2"+
		"\2\u08f0\u08ee\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u08f3\3\2\2\2\u08f2\u08f0"+
		"\3\2\2\2\u08f3\u08f4\7\u0401\2\2\u08f4\u0a35\3\2\2\2\u08f5\u08f6\7\7\2"+
		"\2\u08f6\u08f8\t\24\2\2\u08f7\u08f9\5\u020c\u0107\2\u08f8\u08f7\3\2\2"+
		"\2\u08f8\u08f9\3\2\2\2\u08f9\u08fb\3\2\2\2\u08fa\u08fc\5@!\2\u08fb\u08fa"+
		"\3\2\2\2\u08fb\u08fc\3\2\2\2\u08fc\u08fd\3\2\2\2\u08fd\u0901\5\u0230\u0119"+
		"\2\u08fe\u0900\5B\"\2\u08ff\u08fe\3\2\2\2\u0900\u0903\3\2\2\2\u0901\u08ff"+
		"\3\2\2\2\u0901\u0902\3\2\2\2\u0902\u0a35\3\2\2\2\u0903\u0901\3\2\2\2\u0904"+
		"\u0909\7\7\2\2\u0905\u0907\7\35\2\2\u0906\u0908\5\u020c\u0107\2\u0907"+
		"\u0906\3\2\2\2\u0907\u0908\3\2\2\2\u0908\u090a\3\2\2\2\u0909\u0905\3\2"+
		"\2\2\u0909\u090a\3\2\2\2\u090a\u090b\3\2\2\2\u090b\u090c\7v\2\2\u090c"+
		"\u090e\7T\2\2\u090d\u090f\5\u020c\u0107\2\u090e\u090d\3\2\2\2\u090e\u090f"+
		"\3\2\2\2\u090f\u0911\3\2\2\2\u0910\u0912\5@!\2\u0911\u0910\3\2\2\2\u0911"+
		"\u0912\3\2\2\2\u0912\u0913\3\2\2\2\u0913\u0917\5\u0230\u0119\2\u0914\u0916"+
		"\5B\"\2\u0915\u0914\3\2\2\2\u0916\u0919\3\2\2\2\u0917\u0915\3\2\2\2\u0917"+
		"\u0918\3\2\2\2\u0918\u0a35\3\2\2\2\u0919\u0917\3\2\2\2\u091a\u091f\7\7"+
		"\2\2\u091b\u091d\7\35\2\2\u091c\u091e\5\u020c\u0107\2\u091d\u091c\3\2"+
		"\2\2\u091d\u091e\3\2\2\2\u091e\u0920\3\2\2\2\u091f\u091b\3\2\2\2\u091f"+
		"\u0920\3\2\2\2\u0920\u0921\3\2\2\2\u0921\u0923\7\u00a5\2\2\u0922\u0924"+
		"\t\24\2\2\u0923\u0922\3\2\2\2\u0923\u0924\3\2\2\2\u0924\u0926\3\2\2\2"+
		"\u0925\u0927\5\u020c\u0107\2\u0926\u0925\3\2\2\2\u0926\u0927\3\2\2\2\u0927"+
		"\u0929\3\2\2\2\u0928\u092a\5@!\2\u0929\u0928\3\2\2\2\u0929\u092a\3\2\2"+
		"\2\u092a\u092b\3\2\2\2\u092b\u092f\5\u0230\u0119\2\u092c\u092e\5B\"\2"+
		"\u092d\u092c\3\2\2\2\u092e\u0931\3\2\2\2\u092f\u092d\3\2\2\2\u092f\u0930"+
		"\3\2\2\2\u0930\u0a35\3\2\2\2\u0931\u092f\3\2\2\2\u0932\u0933\7\7\2\2\u0933"+
		"\u0935\t\26\2\2\u0934\u0936\t\24\2\2\u0935\u0934\3\2\2\2\u0935\u0936\3"+
		"\2\2\2\u0936\u0938\3\2\2\2\u0937\u0939\5\u020c\u0107\2\u0938\u0937\3\2"+
		"\2\2\u0938\u0939\3\2\2\2\u0939\u093a\3\2\2\2\u093a\u093e\5\u0230\u0119"+
		"\2\u093b\u093d\5B\"\2\u093c\u093b\3\2\2\2\u093d\u0940\3\2\2\2\u093e\u093c"+
		"\3\2\2\2\u093e\u093f\3\2\2\2\u093f\u0a35\3\2\2\2\u0940\u093e\3\2\2\2\u0941"+
		"\u0946\7\7\2\2\u0942\u0944\7\35\2\2\u0943\u0945\5\u020c\u0107\2\u0944"+
		"\u0943\3\2\2\2\u0944\u0945\3\2\2\2\u0945\u0947\3\2\2\2\u0946\u0942\3\2"+
		"\2\2\u0946\u0947\3\2\2\2\u0947\u0948\3\2\2\2\u0948\u0949\7>\2\2\u0949"+
		"\u094b\7T\2\2\u094a\u094c\5\u020c\u0107\2\u094b\u094a\3\2\2\2\u094b\u094c"+
		"\3\2\2\2\u094c\u094d\3\2\2\2\u094d\u094e\5\u0230\u0119\2\u094e\u094f\5"+
		"V,\2\u094f\u0a35\3\2\2\2\u0950\u0955\7\7\2\2\u0951\u0953\7\35\2\2\u0952"+
		"\u0954\5\u020c\u0107\2\u0953\u0952\3\2\2\2\u0953\u0954\3\2\2\2\u0954\u0956"+
		"\3\2\2\2\u0955\u0951\3\2\2\2\u0955\u0956\3\2\2\2\u0956\u0957\3\2\2\2\u0957"+
		"\u0958\7\31\2\2\u0958\u0959\7\u0400\2\2\u0959\u095a\5\u025c\u012f\2\u095a"+
		"\u095b\7\u0401\2\2\u095b\u0a35\3\2\2\2\u095c\u095e\7\u0114\2\2\u095d\u095f"+
		"\7\u03f7\2\2\u095e\u095d\3\2\2\2\u095e\u095f\3\2\2\2\u095f\u0960\3\2\2"+
		"\2\u0960\u0a35\t\5\2\2\u0961\u0963\7\t\2\2\u0962\u0964\7\33\2\2\u0963"+
		"\u0962\3\2\2\2\u0963\u0964\3\2\2\2\u0964\u0965\3\2\2\2\u0965\u096b\5\u020c"+
		"\u0107\2\u0966\u0967\7\u008c\2\2\u0967\u0968\7(\2\2\u0968\u096c\5\u023e"+
		"\u0120\2\u0969\u096a\7\61\2\2\u096a\u096c\7(\2\2\u096b\u0966\3\2\2\2\u096b"+
		"\u0969\3\2\2\2\u096c\u0a35\3\2\2\2\u096d\u096f\7\27\2\2\u096e\u0970\7"+
		"\33\2\2\u096f\u096e\3\2\2\2\u096f\u0970\3\2\2\2\u0970\u0971\3\2\2\2\u0971"+
		"\u0972\5\u020c\u0107\2\u0972\u0973\5\u020c\u0107\2\u0973\u0977\5P)\2\u0974"+
		"\u0978\7\u016c\2\2\u0975\u0976\7\u0112\2\2\u0976\u0978\5\u020c\u0107\2"+
		"\u0977\u0974\3\2\2\2\u0977\u0975\3\2\2\2\u0977\u0978\3\2\2\2\u0978\u0a35"+
		"\3\2\2\2\u0979\u097a\7\177\2\2\u097a\u097b\7\33\2\2\u097b\u097c\5\u020c"+
		"\u0107\2\u097c\u097d\7\u009f\2\2\u097d\u097e\5\u020c\u0107\2\u097e\u0a35"+
		"\3\2\2\2\u097f\u0981\7_\2\2\u0980\u0982\7\u03f7\2\2\u0981\u0980\3\2\2"+
		"\2\u0981\u0982\3\2\2\2\u0982\u0983\3\2\2\2\u0983\u0a35\t\6\2\2\u0984\u0986"+
		"\7\u01ba\2\2\u0985\u0987\7\33\2\2\u0986\u0985\3\2\2\2\u0986\u0987\3\2"+
		"\2\2\u0987\u0988\3\2\2\2\u0988\u0989\5\u020c\u0107\2\u0989\u098d\5P)\2"+
		"\u098a\u098e\7\u016c\2\2\u098b\u098c\7\u0112\2\2\u098c\u098e\5\u020c\u0107"+
		"\2\u098d\u098a\3\2\2\2\u098d\u098b\3\2\2\2\u098d\u098e\3\2\2\2\u098e\u0a35"+
		"\3\2\2\2\u098f\u0991\7\61\2\2\u0990\u0992\7\33\2\2\u0991\u0990\3\2\2\2"+
		"\u0991\u0992\3\2\2\2\u0992\u0993\3\2\2\2\u0993\u0995\5\u020c\u0107\2\u0994"+
		"\u0996\7\u0084\2\2\u0995\u0994\3\2\2\2\u0995\u0996\3\2\2\2\u0996\u0a35"+
		"\3\2\2\2\u0997\u0998\7\61\2\2\u0998\u0999\7v\2\2\u0999\u0a35\7T\2\2\u099a"+
		"\u099b\7\177\2\2\u099b\u099c\t\24\2\2\u099c\u099d\5\u020c\u0107\2\u099d"+
		"\u099e\7\u009f\2\2\u099e\u099f\5\u020c\u0107\2\u099f\u0a35\3\2\2\2\u09a0"+
		"\u09a1\7\61\2\2\u09a1\u09a2\t\24\2\2\u09a2\u0a35\5\u020c\u0107\2\u09a3"+
		"\u09a4\7\61\2\2\u09a4\u09a5\7>\2\2\u09a5\u09a6\7T\2\2\u09a6\u0a35\5\u020c"+
		"\u0107\2\u09a7\u09a8\7\u014d\2\2\u09a8\u0a35\7U\2\2\u09a9\u09aa\7\u0154"+
		"\2\2\u09aa\u0a35\7U\2\2\u09ab\u09ad\7\177\2\2\u09ac\u09ae\t\37\2\2\u09ad"+
		"\u09ac\3\2\2\2\u09ad\u09ae\3\2\2\2\u09ae\u09b1\3\2\2\2\u09af\u09b2\5\u020c"+
		"\u0107\2\u09b0\u09b2\5\u01f2\u00fa\2\u09b1\u09af\3\2\2\2\u09b1\u09b0\3"+
		"\2\2\2\u09b2\u0a35\3\2\2\2\u09b3\u09b4\7q\2\2\u09b4\u09b5\7\22\2\2\u09b5"+
		"\u0a35\5\u022c\u0117\2\u09b6\u09b7\7\37\2\2\u09b7\u09b8\7\u009f\2\2\u09b8"+
		"\u09b9\7\30\2\2\u09b9\u09ba\7\u008c\2\2\u09ba\u09bd\5\u01fe\u0100\2\u09bb"+
		"\u09bc\7\32\2\2\u09bc\u09be\5\u0200\u0101\2\u09bd\u09bb\3\2\2\2\u09bd"+
		"\u09be\3\2\2\2\u09be\u0a35\3\2\2\2\u09bf\u09c1\7(\2\2\u09c0\u09bf\3\2"+
		"\2\2\u09c0\u09c1\3\2\2\2\u09c1\u09c2\3\2\2\2\u09c2\u09c3\7\30\2\2\u09c3"+
		"\u09c4\7\u008c\2\2\u09c4\u09c5\7\u03f7\2\2\u09c5\u09c9\5\u01fe\u0100\2"+
		"\u09c6\u09c7\7\32\2\2\u09c7\u09c8\7\u03f7\2\2\u09c8\u09ca\5\u0200\u0101"+
		"\2\u09c9\u09c6\3\2\2\2\u09c9\u09ca\3\2\2\2\u09ca\u0a35\3\2\2\2\u09cb\u09cc"+
		"\7\u014e\2\2\u09cc\u0a35\7\u0230\2\2\u09cd\u09ce\7\u017e\2\2\u09ce\u0a35"+
		"\7\u0230\2\2\u09cf\u0a35\7=\2\2\u09d0\u09d1\t \2\2\u09d1\u0a35\7\u0243"+
		"\2\2\u09d2\u09d3\7\7\2\2\u09d3\u09d4\7u\2\2\u09d4\u09d5\7\u0400\2\2\u09d5"+
		"\u09da\5h\65\2\u09d6\u09d7\7\u0402\2\2\u09d7\u09d9\5h\65\2\u09d8\u09d6"+
		"\3\2\2\2\u09d9\u09dc\3\2\2\2\u09da\u09d8\3\2\2\2\u09da\u09db\3\2\2\2\u09db"+
		"\u09dd\3\2\2\2\u09dc\u09da\3\2\2\2\u09dd\u09de\7\u0401\2\2\u09de\u0a35"+
		"\3\2\2\2\u09df\u09e0\7\61\2\2\u09e0\u09e1\7u\2\2\u09e1\u0a35\5\u022c\u0117"+
		"\2\u09e2\u09e3\7\u014e\2\2\u09e3\u09e6\7u\2\2\u09e4\u09e7\5\u022c\u0117"+
		"\2\u09e5\u09e7\7\b\2\2\u09e6\u09e4\3\2\2\2\u09e6\u09e5\3\2\2\2\u09e7\u09e8"+
		"\3\2\2\2\u09e8\u0a35\7\u0230\2\2\u09e9\u09ea\7\u017e\2\2\u09ea\u09ed\7"+
		"u\2\2\u09eb\u09ee\5\u022c\u0117\2\u09ec\u09ee\7\b\2\2\u09ed\u09eb\3\2"+
		"\2\2\u09ed\u09ec\3\2\2\2\u09ee\u09ef\3\2\2\2\u09ef\u0a35\7\u0230\2\2\u09f0"+
		"\u09f1\7\u0238\2\2\u09f1\u09f4\7u\2\2\u09f2\u09f5\5\u022c\u0117\2\u09f3"+
		"\u09f5\7\b\2\2\u09f4\u09f2\3\2\2\2\u09f4\u09f3\3\2\2\2\u09f5\u0a35\3\2"+
		"\2\2\u09f6\u09f7\7\u012e\2\2\u09f7\u09f8\7u\2\2\u09f8\u0a35\5\u0212\u010a"+
		"\2\u09f9\u09fa\7\u01f1\2\2\u09fa\u09fb\7u\2\2\u09fb\u09fc\5\u022c\u0117"+
		"\2\u09fc\u09fd\7P\2\2\u09fd\u09fe\7\u0400\2\2\u09fe\u0a03\5h\65\2\u09ff"+
		"\u0a00\7\u0402\2\2\u0a00\u0a02\5h\65\2\u0a01\u09ff\3\2\2\2\u0a02\u0a05"+
		"\3\2\2\2\u0a03\u0a01\3\2\2\2\u0a03\u0a04\3\2\2\2\u0a04\u0a06\3\2\2\2\u0a05"+
		"\u0a03\3\2\2\2\u0a06\u0a07\7\u0401\2\2\u0a07\u0a35\3\2\2\2\u0a08\u0a09"+
		"\7\u0161\2\2\u0a09\u0a0a\7u\2\2\u0a0a\u0a0b\5\u020c\u0107\2\u0a0b\u0a0c"+
		"\7\u00b0\2\2\u0a0c\u0a0d\7\u009c\2\2\u0a0d\u0a10\5\u01f4\u00fb\2\u0a0e"+
		"\u0a0f\t \2\2\u0a0f\u0a11\7\u0243\2\2\u0a10\u0a0e\3\2\2\2\u0a10\u0a11"+
		"\3\2\2\2\u0a11\u0a35\3\2\2\2\u0a12\u0a13\7\13\2\2\u0a13\u0a16\7u\2\2\u0a14"+
		"\u0a17\5\u022c\u0117\2\u0a15\u0a17\7\b\2\2\u0a16\u0a14\3\2\2\2\u0a16\u0a15"+
		"\3\2\2\2\u0a17\u0a35\3\2\2\2\u0a18\u0a19\7\31\2\2\u0a19\u0a1c\7u\2\2\u0a1a"+
		"\u0a1d\5\u022c\u0117\2\u0a1b\u0a1d\7\b\2\2\u0a1c\u0a1a\3\2\2\2\u0a1c\u0a1b"+
		"\3\2\2\2\u0a1d\u0a35\3\2\2\2\u0a1e\u0a1f\7m\2\2\u0a1f\u0a22\7u\2\2\u0a20"+
		"\u0a23\5\u022c\u0117\2\u0a21\u0a23\7\b\2\2\u0a22\u0a20\3\2\2\2\u0a22\u0a21"+
		"\3\2\2\2\u0a23\u0a35\3\2\2\2\u0a24\u0a25\7\u01e8\2\2\u0a25\u0a28\7u\2"+
		"\2\u0a26\u0a29\5\u022c\u0117\2\u0a27\u0a29\7\b\2\2\u0a28\u0a26\3\2\2\2"+
		"\u0a28\u0a27\3\2\2\2\u0a29\u0a35\3\2\2\2\u0a2a\u0a2b\7\u01f2\2\2\u0a2b"+
		"\u0a2e\7u\2\2\u0a2c\u0a2f\5\u022c\u0117\2\u0a2d\u0a2f\7\b\2\2\u0a2e\u0a2c"+
		"\3\2\2\2\u0a2e\u0a2d\3\2\2\2\u0a2f\u0a35\3\2\2\2\u0a30\u0a31\7\u01f0\2"+
		"\2\u0a31\u0a35\7\u01d6\2\2\u0a32\u0a33\7\u023f\2\2\u0a33\u0a35\7\u01d6"+
		"\2\2\u0a34\u08ce\3\2\2\2\u0a34\u08d8\3\2\2\2\u0a34\u08e3\3\2\2\2\u0a34"+
		"\u08f5\3\2\2\2\u0a34\u0904\3\2\2\2\u0a34\u091a\3\2\2\2\u0a34\u0932\3\2"+
		"\2\2\u0a34\u0941\3\2\2\2\u0a34\u0950\3\2\2\2\u0a34\u095c\3\2\2\2\u0a34"+
		"\u0961\3\2\2\2\u0a34\u096d\3\2\2\2\u0a34\u0979\3\2\2\2\u0a34\u097f\3\2"+
		"\2\2\u0a34\u0984\3\2\2\2\u0a34\u098f\3\2\2\2\u0a34\u0997\3\2\2\2\u0a34"+
		"\u099a\3\2\2\2\u0a34\u09a0\3\2\2\2\u0a34\u09a3\3\2\2\2\u0a34\u09a7\3\2"+
		"\2\2\u0a34\u09a9\3\2\2\2\u0a34\u09ab\3\2\2\2\u0a34\u09b3\3\2\2\2\u0a34"+
		"\u09b6\3\2\2\2\u0a34\u09c0\3\2\2\2\u0a34\u09cb\3\2\2\2\u0a34\u09cd\3\2"+
		"\2\2\u0a34\u09cf\3\2\2\2\u0a34\u09d0\3\2\2\2\u0a34\u09d2\3\2\2\2\u0a34"+
		"\u09df\3\2\2\2\u0a34\u09e2\3\2\2\2\u0a34\u09e9\3\2\2\2\u0a34\u09f0\3\2"+
		"\2\2\u0a34\u09f6\3\2\2\2\u0a34\u09f9\3\2\2\2\u0a34\u0a08\3\2\2\2\u0a34"+
		"\u0a12\3\2\2\2\u0a34\u0a18\3\2\2\2\u0a34\u0a1e\3\2\2\2\u0a34\u0a24\3\2"+
		"\2\2\u0a34\u0a2a\3\2\2\2\u0a34\u0a30\3\2\2\2\u0a34\u0a32\3\2\2\2\u0a35"+
		"\u0087\3\2\2\2\u0a36\u0a37\7\61\2\2\u0a37\u0a39\t\2\2\2\u0a38\u0a3a\5"+
		"\u0244\u0123\2\u0a39\u0a38\3\2\2\2\u0a39\u0a3a\3\2\2\2\u0a3a\u0a3b\3\2"+
		"\2\2\u0a3b\u0a3c\5\u020c\u0107\2\u0a3c\u0089\3\2\2\2\u0a3d\u0a3e\7\61"+
		"\2\2\u0a3e\u0a40\7\u015e\2\2\u0a3f\u0a41\5\u0244\u0123\2\u0a40\u0a3f\3"+
		"\2\2\2\u0a40\u0a41\3\2\2\2\u0a41\u0a42\3\2\2\2\u0a42\u0a43\5\u01f2\u00fa"+
		"\2\u0a43\u008b\3\2\2\2\u0a44\u0a45\7\61\2\2\u0a45\u0a47\7J\2\2\u0a46\u0a48"+
		"\t\3\2\2\u0a47\u0a46\3\2\2\2\u0a47\u0a48\3\2\2\2\u0a48\u0a49\3\2\2\2\u0a49"+
		"\u0a4a\5\u020c\u0107\2\u0a4a\u0a4b\7l\2\2\u0a4b\u0a58\5\u01f4\u00fb\2"+
		"\u0a4c\u0a4e\7\u0114\2\2\u0a4d\u0a4f\7\u03f7\2\2\u0a4e\u0a4d\3\2\2\2\u0a4e"+
		"\u0a4f\3\2\2\2\u0a4f\u0a50\3\2\2\2\u0a50\u0a57\t\5\2\2\u0a51\u0a53\7_"+
		"\2\2\u0a52\u0a54\7\u03f7\2\2\u0a53\u0a52\3\2\2\2\u0a53\u0a54\3\2\2\2\u0a54"+
		"\u0a55\3\2\2\2\u0a55\u0a57\t\6\2\2\u0a56\u0a4c\3\2\2\2\u0a56\u0a51\3\2"+
		"\2\2\u0a57\u0a5a\3\2\2\2\u0a58\u0a56\3\2\2\2\u0a58\u0a59\3\2\2\2\u0a59"+
		"\u008d\3\2\2\2\u0a5a\u0a58\3\2\2\2\u0a5b\u0a5c\7\61\2\2\u0a5c\u0a5d\7"+
		"\u0195\2\2\u0a5d\u0a5e\7D\2\2\u0a5e\u0a5f\5\u020c\u0107\2\u0a5f\u0a60"+
		"\7\u0158\2\2\u0a60\u0a61\7\u03f7\2\2\u0a61\u0a62\5\u0202\u0102\2\u0a62"+
		"\u008f\3\2\2\2\u0a63\u0a64\7\61\2\2\u0a64\u0a66\7w\2\2\u0a65\u0a67\5\u0244"+
		"\u0123\2\u0a66\u0a65\3\2\2\2\u0a66\u0a67\3\2\2\2\u0a67\u0a68\3\2\2\2\u0a68"+
		"\u0a69\5\u01f2\u00fa\2\u0a69\u0091\3\2\2\2\u0a6a\u0a6b\7\61\2\2\u0a6b"+
		"\u0a6d\7\u0172\2\2\u0a6c\u0a6e\5\u0244\u0123\2\u0a6d\u0a6c\3\2\2\2\u0a6d"+
		"\u0a6e\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f\u0a70\5\u01f2\u00fa\2\u0a70\u0093"+
		"\3\2\2\2\u0a71\u0a72\7\61\2\2\u0a72\u0a74\7\u0209\2\2\u0a73\u0a75\5\u0244"+
		"\u0123\2\u0a74\u0a73\3\2\2\2\u0a74\u0a75\3\2\2\2\u0a75\u0a76\3\2\2\2\u0a76"+
		"\u0a77\5\u020c\u0107\2\u0a77\u0095\3\2\2\2\u0a78\u0a7a\7\61\2\2\u0a79"+
		"\u0a7b\7\u0231\2\2\u0a7a\u0a79\3\2\2\2\u0a7a\u0a7b\3\2\2\2\u0a7b\u0a7c"+
		"\3\2\2\2\u0a7c\u0a7e\7\u009c\2\2\u0a7d\u0a7f\5\u0244\u0123\2\u0a7e\u0a7d"+
		"\3\2\2\2\u0a7e\u0a7f\3\2\2\2\u0a7f\u0a80\3\2\2\2\u0a80\u0a82\5\u022e\u0118"+
		"\2\u0a81\u0a83\t!\2\2\u0a82\u0a81\3\2\2\2\u0a82\u0a83\3\2\2\2\u0a83\u0097"+
		"\3\2\2\2\u0a84\u0a85\7\61\2\2\u0a85\u0a86\7\u0230\2\2\u0a86\u0a8c\5\u020c"+
		"\u0107\2\u0a87\u0a89\7\u0158\2\2\u0a88\u0a8a\7\u03f7\2\2\u0a89\u0a88\3"+
		"\2\2\2\u0a89\u0a8a\3\2\2\2\u0a8a\u0a8b\3\2\2\2\u0a8b\u0a8d\5\u0202\u0102"+
		"\2\u0a8c\u0a87\3\2\2\2\u0a8c\u0a8d\3\2\2\2\u0a8d\u0099\3\2\2\2\u0a8e\u0a8f"+
		"\7\61\2\2\u0a8f\u0a91\7\u00a1\2\2\u0a90\u0a92\5\u0244\u0123\2\u0a91\u0a90"+
		"\3\2\2\2\u0a91\u0a92\3\2\2\2\u0a92\u0a93\3\2\2\2\u0a93\u0a94\5\u01f2\u00fa"+
		"\2\u0a94\u009b\3\2\2\2\u0a95\u0a96\7\61\2\2\u0a96\u0a98\7\u0246\2\2\u0a97"+
		"\u0a99\5\u0244\u0123\2\u0a98\u0a97\3\2\2\2\u0a98\u0a99\3\2\2\2\u0a99\u0a9a"+
		"\3\2\2\2\u0a9a\u0a9f\5\u01f2\u00fa\2\u0a9b\u0a9c\7\u0402\2\2\u0a9c\u0a9e"+
		"\5\u01f2\u00fa\2\u0a9d\u0a9b\3\2\2\2\u0a9e\u0aa1\3\2\2\2\u0a9f\u0a9d\3"+
		"\2\2\2\u0a9f\u0aa0\3\2\2\2\u0aa0\u0aa3\3\2\2\2\u0aa1\u0a9f\3\2\2\2\u0aa2"+
		"\u0aa4\t!\2\2\u0aa3\u0aa2\3\2\2\2\u0aa3\u0aa4\3\2\2\2\u0aa4\u009d\3\2"+
		"\2\2\u0aa5\u0aa6\7\177\2\2\u0aa6\u0aa7\7\u009c\2\2\u0aa7\u0aac\5\u00a0"+
		"Q\2\u0aa8\u0aa9\7\u0402\2\2\u0aa9\u0aab\5\u00a0Q\2\u0aaa\u0aa8\3\2\2\2"+
		"\u0aab\u0aae\3\2\2\2\u0aac\u0aaa\3\2\2\2\u0aac\u0aad\3\2\2\2\u0aad\u009f"+
		"\3\2\2\2\u0aae\u0aac\3\2\2\2\u0aaf\u0ab0\5\u01f4\u00fb\2\u0ab0\u0ab1\7"+
		"\u009f\2\2\u0ab1\u0ab2\5\u01f4\u00fb\2\u0ab2\u00a1\3\2\2\2\u0ab3\u0ab5"+
		"\7\u0238\2\2\u0ab4\u0ab6\7\u009c\2\2\u0ab5\u0ab4\3\2\2\2\u0ab5\u0ab6\3"+
		"\2\2\2\u0ab6\u0ab7\3\2\2\2\u0ab7\u0ab8\5\u01f4\u00fb\2\u0ab8\u00a3\3\2"+
		"\2\2\u0ab9\u0aba\7\23\2\2\u0aba\u0ac1\5\u01f2\u00fa\2\u0abb\u0abe\7\u0400"+
		"\2\2\u0abc\u0abf\5\u0238\u011d\2\u0abd\u0abf\5\u0232\u011a\2\u0abe\u0abc"+
		"\3\2\2\2\u0abe\u0abd\3\2\2\2\u0abe\u0abf\3\2\2\2\u0abf\u0ac0\3\2\2\2\u0ac0"+
		"\u0ac2\7\u0401\2\2\u0ac1\u0abb\3\2\2\2\u0ac1\u0ac2\3\2\2\2\u0ac2\u00a5"+
		"\3\2\2\2\u0ac3\u0ac6\5\u00c0a\2\u0ac4\u0ac6\5\u00c2b\2\u0ac5\u0ac3\3\2"+
		"\2\2\u0ac5\u0ac4\3\2\2\2\u0ac6\u00a7\3\2\2\2\u0ac7\u0ac8\7\u0150\2\2\u0ac8"+
		"\u0ac9\5\u0232\u011a\2\u0ac9\u00a9\3\2\2\2\u0aca\u0acf\5\u00c4c\2\u0acb"+
		"\u0acf\5\u00c6d\2\u0acc\u0acf\5\u00c8e\2\u0acd\u0acf\5\u00caf\2\u0ace"+
		"\u0aca\3\2\2\2\u0ace\u0acb\3\2\2\2\u0ace\u0acc\3\2\2\2\u0ace\u0acd\3\2"+
		"\2\2\u0acf\u00ab\3\2\2\2\u0ad0\u0ad2\7N\2\2\u0ad1\u0ad3\t\"\2\2\u0ad2"+
		"\u0ad1\3\2\2\2\u0ad2\u0ad3\3\2\2\2\u0ad3\u0ad5\3\2\2\2\u0ad4\u0ad6\7H"+
		"\2\2\u0ad5\u0ad4\3\2\2\2\u0ad5\u0ad6\3\2\2\2\u0ad6\u0ad8\3\2\2\2\u0ad7"+
		"\u0ad9\7P\2\2\u0ad8\u0ad7\3\2\2\2\u0ad8\u0ad9\3\2\2\2\u0ad9\u0ada\3\2"+
		"\2\2\u0ada\u0ae1\5\u01f4\u00fb\2\u0adb\u0adc\7u\2\2\u0adc\u0ade\7\u0400"+
		"\2\2\u0add\u0adf\5\u022c\u0117\2\u0ade\u0add\3\2\2\2\u0ade\u0adf\3\2\2"+
		"\2\u0adf\u0ae0\3\2\2\2\u0ae0\u0ae2\7\u0401\2\2\u0ae1\u0adb\3\2\2\2\u0ae1"+
		"\u0ae2\3\2\2\2\u0ae2\u0af3\3\2\2\2\u0ae3\u0ae4\7\u0400\2\2\u0ae4\u0ae5"+
		"\5\u022c\u0117\2\u0ae5\u0ae6\7\u0401\2\2\u0ae6\u0ae8\3\2\2\2\u0ae7\u0ae3"+
		"\3\2\2\2\u0ae7\u0ae8\3\2\2\2\u0ae8\u0ae9\3\2\2\2\u0ae9\u0af4\5\u00b8]"+
		"\2\u0aea\u0aeb\7\u008c\2\2\u0aeb\u0af0\5\u00ba^\2\u0aec\u0aed\7\u0402"+
		"\2\2\u0aed\u0aef\5\u00ba^\2\u0aee\u0aec\3\2\2\2\u0aef\u0af2\3\2\2\2\u0af0"+
		"\u0aee\3\2\2\2\u0af0\u0af1\3\2\2\2\u0af1\u0af4\3\2\2\2\u0af2\u0af0\3\2"+
		"\2\2\u0af3\u0ae7\3\2\2\2\u0af3\u0aea\3\2\2\2\u0af4\u0b01\3\2\2\2\u0af5"+
		"\u0af6\7l\2\2\u0af6\u0af7\7\u0152\2\2\u0af7\u0af8\7T\2\2\u0af8\u0af9\7"+
		"\u00a8\2\2\u0af9\u0afe\5\u00ba^\2\u0afa\u0afb\7\u0402\2\2\u0afb\u0afd"+
		"\5\u00ba^\2\u0afc\u0afa\3\2\2\2\u0afd\u0b00\3\2\2\2\u0afe\u0afc\3\2\2"+
		"\2\u0afe\u0aff\3\2\2\2\u0aff\u0b02\3\2\2\2\u0b00\u0afe\3\2\2\2\u0b01\u0af5"+
		"\3\2\2\2\u0b01\u0b02\3\2\2\2\u0b02\u00ad\3\2\2\2\u0b03\u0b04\7^\2\2\u0b04"+
		"\u0b06\7\u0145\2\2\u0b05\u0b07\t#\2\2\u0b06\u0b05\3\2\2\2\u0b06\u0b07"+
		"\3\2\2\2\u0b07\u0b09\3\2\2\2\u0b08\u0b0a\7\u0194\2\2\u0b09\u0b08\3\2\2"+
		"\2\u0b09\u0b0a\3\2\2\2\u0b0a\u0b0b\3\2\2\2\u0b0b\u0b0c\7K\2\2\u0b0c\u0b0e"+
		"\7\u040f\2\2\u0b0d\u0b0f\t\b\2\2\u0b0e\u0b0d\3\2\2\2\u0b0e\u0b0f\3\2\2"+
		"\2\u0b0f\u0b10\3\2\2\2\u0b10\u0b11\7P\2\2\u0b11\u0b12\7\u009c\2\2\u0b12"+
		"\u0b18\5\u01f4\u00fb\2\u0b13\u0b14\7u\2\2\u0b14\u0b15\7\u0400\2\2\u0b15"+
		"\u0b16\5\u022c\u0117\2\u0b16\u0b17\7\u0401\2\2\u0b17\u0b19\3\2\2\2\u0b18"+
		"\u0b13\3\2\2\2\u0b18\u0b19\3\2\2\2\u0b19\u0b1d\3\2\2\2\u0b1a\u0b1b\7\30"+
		"\2\2\u0b1b\u0b1c\7\u008c\2\2\u0b1c\u0b1e\5\u01fe\u0100\2\u0b1d\u0b1a\3"+
		"\2\2\2\u0b1d\u0b1e\3\2\2\2\u0b1e\u0b25\3\2\2\2\u0b1f\u0b21\t$\2\2\u0b20"+
		"\u0b22\5\u00f4{\2\u0b21\u0b20\3\2\2\2\u0b22\u0b23\3\2\2\2\u0b23\u0b21"+
		"\3\2\2\2\u0b23\u0b24\3\2\2\2\u0b24\u0b26\3\2\2\2\u0b25\u0b1f\3\2\2\2\u0b25"+
		"\u0b26\3\2\2\2\u0b26\u0b2d\3\2\2\2\u0b27\u0b29\7]\2\2\u0b28\u0b2a\5\u00f6"+
		"|\2\u0b29\u0b28\3\2\2\2\u0b2a\u0b2b\3\2\2\2\u0b2b\u0b29\3\2\2\2\u0b2b"+
		"\u0b2c\3\2\2\2\u0b2c\u0b2e\3\2\2\2\u0b2d\u0b27\3\2\2\2\u0b2d\u0b2e\3\2"+
		"\2\2\u0b2e\u0b33\3\2\2\2\u0b2f\u0b30\7H\2\2\u0b30\u0b31\5\u0212\u010a"+
		"\2\u0b31\u0b32\t%\2\2\u0b32\u0b34\3\2\2\2\u0b33\u0b2f\3\2\2\2\u0b33\u0b34"+
		"\3\2\2\2\u0b34\u0b40\3\2\2\2\u0b35\u0b36\7\u0400\2\2\u0b36\u0b3b\5\u00bc"+
		"_\2\u0b37\u0b38\7\u0402\2\2\u0b38\u0b3a\5\u00bc_\2\u0b39\u0b37\3\2\2\2"+
		"\u0b3a\u0b3d\3\2\2\2\u0b3b\u0b39\3\2\2\2\u0b3b\u0b3c\3\2\2\2\u0b3c\u0b3e"+
		"\3\2\2\2\u0b3d\u0b3b\3\2\2\2\u0b3e\u0b3f\7\u0401\2\2\u0b3f\u0b41\3\2\2"+
		"\2\u0b40\u0b35\3\2\2\2\u0b40\u0b41\3\2\2\2\u0b41\u0b4b\3\2\2\2\u0b42\u0b43"+
		"\7\u008c\2\2\u0b43\u0b48\5\u00ba^\2\u0b44\u0b45\7\u0402\2\2\u0b45\u0b47"+
		"\5\u00ba^\2\u0b46\u0b44\3\2\2\2\u0b47\u0b4a\3\2\2\2\u0b48\u0b46\3\2\2"+
		"\2\u0b48\u0b49\3\2\2\2\u0b49\u0b4c\3\2\2\2\u0b4a\u0b48\3\2\2\2\u0b4b\u0b42"+
		"\3\2\2\2\u0b4b\u0b4c\3\2\2\2\u0b4c\u00af\3\2\2\2\u0b4d\u0b4e\7^\2\2\u0b4e"+
		"\u0b50\7\u0250\2\2\u0b4f\u0b51\t#\2\2\u0b50\u0b4f\3\2\2\2\u0b50\u0b51"+
		"\3\2\2\2\u0b51\u0b53\3\2\2\2\u0b52\u0b54\7\u0194\2\2\u0b53\u0b52\3\2\2"+
		"\2\u0b53\u0b54\3\2\2\2\u0b54\u0b55\3\2\2\2\u0b55\u0b56\7K\2\2\u0b56\u0b58"+
		"\7\u040f\2\2\u0b57\u0b59\t\b\2\2\u0b58\u0b57\3\2\2\2\u0b58\u0b59\3\2\2"+
		"\2\u0b59\u0b5a\3\2\2\2\u0b5a\u0b5b\7P\2\2\u0b5b\u0b5c\7\u009c\2\2\u0b5c"+
		"\u0b60\5\u01f4\u00fb\2\u0b5d\u0b5e\7\30\2\2\u0b5e\u0b5f\7\u008c\2\2\u0b5f"+
		"\u0b61\5\u01fe\u0100\2\u0b60\u0b5d\3\2\2\2\u0b60\u0b61\3\2\2\2\u0b61\u0b68"+
		"\3\2\2\2\u0b62\u0b63\7\u0204\2\2\u0b63\u0b64\7\u017c\2\2\u0b64\u0b65\7"+
		"\22\2\2\u0b65\u0b66\7\u03f9\2\2\u0b66\u0b67\7\u040f\2\2\u0b67\u0b69\7"+
		"\u03f8\2\2\u0b68\u0b62\3\2\2\2\u0b68\u0b69\3\2\2\2\u0b69\u0b6e\3\2\2\2"+
		"\u0b6a\u0b6b\7H\2\2\u0b6b\u0b6c\5\u0212\u010a\2\u0b6c\u0b6d\t%\2\2\u0b6d"+
		"\u0b6f\3\2\2\2\u0b6e\u0b6a\3\2\2\2\u0b6e\u0b6f\3\2\2\2\u0b6f\u0b7b\3\2"+
		"\2\2\u0b70\u0b71\7\u0400\2\2\u0b71\u0b76\5\u00bc_\2\u0b72\u0b73\7\u0402"+
		"\2\2\u0b73\u0b75\5\u00bc_\2\u0b74\u0b72\3\2\2\2\u0b75\u0b78\3\2\2\2\u0b76"+
		"\u0b74\3\2\2\2\u0b76\u0b77\3\2\2\2\u0b77\u0b79\3\2\2\2\u0b78\u0b76\3\2"+
		"\2\2\u0b79\u0b7a\7\u0401\2\2\u0b7a\u0b7c\3\2\2\2\u0b7b\u0b70\3\2\2\2\u0b7b"+
		"\u0b7c\3\2\2\2\u0b7c\u0b86\3\2\2\2\u0b7d\u0b7e\7\u008c\2\2\u0b7e\u0b83"+
		"\5\u00ba^\2\u0b7f\u0b80\7\u0402\2\2\u0b80\u0b82\5\u00ba^\2\u0b81\u0b7f"+
		"\3\2\2\2\u0b82\u0b85\3\2\2\2\u0b83\u0b81\3\2\2\2\u0b83\u0b84\3\2\2\2\u0b84"+
		"\u0b87\3\2\2\2\u0b85\u0b83\3\2\2\2\u0b86\u0b7d\3\2\2\2\u0b86\u0b87\3\2"+
		"\2\2\u0b87\u00b1\3\2\2\2\u0b88\u0b8a\7\u0081\2\2\u0b89\u0b8b\t&\2\2\u0b8a"+
		"\u0b89\3\2\2\2\u0b8a\u0b8b\3\2\2\2\u0b8b\u0b8d\3\2\2\2\u0b8c\u0b8e\7P"+
		"\2\2\u0b8d\u0b8c\3\2\2\2\u0b8d\u0b8e\3\2\2\2\u0b8e\u0b8f\3\2\2\2\u0b8f"+
		"\u0b95\5\u01f4\u00fb\2\u0b90\u0b91\7u\2\2\u0b91\u0b92\7\u0400\2\2\u0b92"+
		"\u0b93\5\u022c\u0117\2\u0b93\u0b94\7\u0401\2\2\u0b94\u0b96\3\2\2\2\u0b95"+
		"\u0b90\3\2\2\2\u0b95\u0b96\3\2\2\2\u0b96\u0ba7\3\2\2\2\u0b97\u0b98\7\u0400"+
		"\2\2\u0b98\u0b99\5\u022c\u0117\2\u0b99\u0b9a\7\u0401\2\2\u0b9a\u0b9c\3"+
		"\2\2\2\u0b9b\u0b97\3\2\2\2\u0b9b\u0b9c\3\2\2\2\u0b9c\u0b9d\3\2\2\2\u0b9d"+
		"\u0ba8\5\u00b8]\2\u0b9e\u0b9f\7\u008c\2\2\u0b9f\u0ba4\5\u00ba^\2\u0ba0"+
		"\u0ba1\7\u0402\2\2\u0ba1\u0ba3\5\u00ba^\2\u0ba2\u0ba0\3\2\2\2\u0ba3\u0ba6"+
		"\3\2\2\2\u0ba4\u0ba2\3\2\2\2\u0ba4\u0ba5\3\2\2\2\u0ba5\u0ba8\3\2\2\2\u0ba6"+
		"\u0ba4\3\2\2\2\u0ba7\u0b9b\3\2\2\2\u0ba7\u0b9e\3\2\2\2\u0ba8\u00b3\3\2"+
		"\2\2\u0ba9\u0bab\5\u00e4s\2\u0baa\u0bac\5\u00be`\2\u0bab\u0baa\3\2\2\2"+
		"\u0bab\u0bac\3\2\2\2\u0bac\u0be1\3\2\2\2\u0bad\u0baf\5\u00e0q\2\u0bae"+
		"\u0bb0\5\u00be`\2\u0baf\u0bae\3\2\2\2\u0baf\u0bb0\3\2\2\2\u0bb0\u0be1"+
		"\3\2\2\2\u0bb1\u0bb3\5\u00e6t\2\u0bb2\u0bb4\5\u00eav\2\u0bb3\u0bb2\3\2"+
		"\2\2\u0bb4\u0bb5\3\2\2\2\u0bb5\u0bb3\3\2\2\2\u0bb5\u0bb6\3\2\2\2\u0bb6"+
		"\u0bbf\3\2\2\2\u0bb7\u0bb9\7\u00a4\2\2\u0bb8\u0bba\t\'\2\2\u0bb9\u0bb8"+
		"\3\2\2\2\u0bb9\u0bba\3\2\2\2\u0bba\u0bbd\3\2\2\2\u0bbb\u0bbe\5\u00e4s"+
		"\2\u0bbc\u0bbe\5\u00e0q\2\u0bbd\u0bbb\3\2\2\2\u0bbd\u0bbc\3\2\2\2\u0bbe"+
		"\u0bc0\3\2\2\2\u0bbf\u0bb7\3\2\2\2\u0bbf\u0bc0\3\2\2\2\u0bc0\u0bc2\3\2"+
		"\2\2\u0bc1\u0bc3\5\u00d0i\2\u0bc2\u0bc1\3\2\2\2\u0bc2\u0bc3\3\2\2\2\u0bc3"+
		"\u0bc5\3\2\2\2\u0bc4\u0bc6\5\u00fc\177\2\u0bc5\u0bc4\3\2\2\2\u0bc5\u0bc6"+
		"\3\2\2\2\u0bc6\u0bc8\3\2\2\2\u0bc7\u0bc9\5\u00be`\2\u0bc8\u0bc7\3\2\2"+
		"\2\u0bc8\u0bc9\3\2\2\2\u0bc9\u0be1\3\2\2\2\u0bca\u0bcc\5\u00e2r\2\u0bcb"+
		"\u0bcd\5\u00e8u\2\u0bcc\u0bcb\3\2\2\2\u0bcd\u0bce\3\2\2\2\u0bce\u0bcc"+
		"\3\2\2\2\u0bce\u0bcf\3\2\2\2\u0bcf\u0bd5\3\2\2\2\u0bd0\u0bd2\7\u00a4\2"+
		"\2\u0bd1\u0bd3\t\'\2\2\u0bd2\u0bd1\3\2\2\2\u0bd2\u0bd3\3\2\2\2\u0bd3\u0bd4"+
		"\3\2\2\2\u0bd4\u0bd6\5\u00e0q\2\u0bd5\u0bd0\3\2\2\2\u0bd5\u0bd6\3\2\2"+
		"\2\u0bd6\u0bd8\3\2\2\2\u0bd7\u0bd9\5\u00d0i\2\u0bd8\u0bd7\3\2\2\2\u0bd8"+
		"\u0bd9\3\2\2\2\u0bd9\u0bdb\3\2\2\2\u0bda\u0bdc\5\u00fc\177\2\u0bdb\u0bda"+
		"\3\2\2\2\u0bdb\u0bdc\3\2\2\2\u0bdc\u0bde\3\2\2\2\u0bdd\u0bdf\5\u00be`"+
		"\2\u0bde\u0bdd\3\2\2\2\u0bde\u0bdf\3\2\2\2\u0bdf\u0be1\3\2\2\2\u0be0\u0ba9"+
		"\3\2\2\2\u0be0\u0bad\3\2\2\2\u0be0\u0bb1\3\2\2\2\u0be0\u0bca\3\2\2\2\u0be1"+
		"\u00b5\3\2\2\2\u0be2\u0be5\5\u00ccg\2\u0be3\u0be5\5\u00ceh\2\u0be4\u0be2"+
		"\3\2\2\2\u0be4\u0be3\3\2\2\2\u0be5\u00b7\3\2\2\2\u0be6\u0bf9\5\u00b4["+
		"\2\u0be7\u0be8\t(\2\2\u0be8\u0bea\7\u0400\2\2\u0be9\u0beb\5\u0236\u011c"+
		"\2\u0bea\u0be9\3\2\2\2\u0bea\u0beb\3\2\2\2\u0beb\u0bec\3\2\2\2\u0bec\u0bf5"+
		"\7\u0401\2\2\u0bed\u0bee\7\u0402\2\2\u0bee\u0bf0\7\u0400\2\2\u0bef\u0bf1"+
		"\5\u0236\u011c\2\u0bf0\u0bef\3\2\2\2\u0bf0\u0bf1\3\2\2\2\u0bf1\u0bf2\3"+
		"\2\2\2\u0bf2\u0bf4\7\u0401\2\2\u0bf3\u0bed\3\2\2\2\u0bf4\u0bf7\3\2\2\2"+
		"\u0bf5\u0bf3\3\2\2\2\u0bf5\u0bf6\3\2\2\2\u0bf6\u0bf9\3\2\2\2\u0bf7\u0bf5"+
		"\3\2\2\2\u0bf8\u0be6\3\2\2\2\u0bf8\u0be7\3\2\2\2\u0bf9\u00b9\3\2\2\2\u0bfa"+
		"\u0bfb\5\u01f6\u00fc\2\u0bfb\u0bfe\7\u03f7\2\2\u0bfc\u0bff\5\u025c\u012f"+
		"\2\u0bfd\u0bff\7(\2\2\u0bfe\u0bfc\3\2\2\2\u0bfe\u0bfd\3\2\2\2\u0bff\u00bb"+
		"\3\2\2\2\u0c00\u0c03\5\u020c\u0107\2\u0c01\u0c03\7\u041a\2\2\u0c02\u0c00"+
		"\3\2\2\2\u0c02\u0c01\3\2\2\2\u0c03\u00bd\3\2\2\2\u0c04\u0c05\7<\2\2\u0c05"+
		"\u0c0b\7\u00a8\2\2\u0c06\u0c07\7_\2\2\u0c07\u0c08\7I\2\2\u0c08\u0c09\7"+
		"\u020b\2\2\u0c09\u0c0b\7\u01b9\2\2\u0c0a\u0c04\3\2\2\2\u0c0a\u0c06\3\2"+
		"\2\2\u0c0b\u00bf\3\2\2\2\u0c0c\u0c0e\7*\2\2\u0c0d\u0c0f\7a\2\2\u0c0e\u0c0d"+
		"\3\2\2\2\u0c0e\u0c0f\3\2\2\2\u0c0f\u0c11\3\2\2\2\u0c10\u0c12\7\u01e7\2"+
		"\2\u0c11\u0c10\3\2\2\2\u0c11\u0c12\3\2\2\2\u0c12\u0c14\3\2\2\2\u0c13\u0c15"+
		"\7H\2\2\u0c14\u0c13\3\2\2\2\u0c14\u0c15\3\2\2\2\u0c15\u0c16\3\2\2\2\u0c16"+
		"\u0c17\7?\2\2\u0c17\u0c1d\5\u01f4\u00fb\2\u0c18\u0c19\7u\2\2\u0c19\u0c1a"+
		"\7\u0400\2\2\u0c1a\u0c1b\5\u022c\u0117\2\u0c1b\u0c1c\7\u0401\2\2\u0c1c"+
		"\u0c1e\3\2\2\2\u0c1d\u0c18\3\2\2\2\u0c1d\u0c1e\3\2\2\2\u0c1e\u0c21\3\2"+
		"\2\2\u0c1f\u0c20\7\u00ae\2\2\u0c20\u0c22\5\u025c\u012f\2\u0c21\u0c1f\3"+
		"\2\2\2\u0c21\u0c22\3\2\2\2\u0c22\u0c24\3\2\2\2\u0c23\u0c25\5\u00d0i\2"+
		"\u0c24\u0c23\3\2\2\2\u0c24\u0c25\3\2\2\2\u0c25\u0c28\3\2\2\2\u0c26\u0c27"+
		"\7[\2\2\u0c27\u0c29\5\u00fe\u0080\2\u0c28\u0c26\3\2\2\2\u0c28\u0c29\3"+
		"\2\2\2\u0c29\u00c1\3\2\2\2\u0c2a\u0c2c\7*\2\2\u0c2b\u0c2d\7a\2\2\u0c2c"+
		"\u0c2b\3\2\2\2\u0c2c\u0c2d\3\2\2\2\u0c2d\u0c2f\3\2\2\2\u0c2e\u0c30\7\u01e7"+
		"\2\2\u0c2f\u0c2e\3\2\2\2\u0c2f\u0c30\3\2\2\2\u0c30\u0c32\3\2\2\2\u0c31"+
		"\u0c33\7H\2\2\u0c32\u0c31\3\2\2\2\u0c32\u0c33\3\2\2\2\u0c33\u0c5b\3\2"+
		"\2\2\u0c34\u0c37\5\u01f4\u00fb\2\u0c35\u0c36\7\u03ff\2\2\u0c36\u0c38\7"+
		"\u03ef\2\2\u0c37\u0c35\3\2\2\2\u0c37\u0c38\3\2\2\2\u0c38\u0c41\3\2\2\2"+
		"\u0c39\u0c3a\7\u0402\2\2\u0c3a\u0c3d\5\u01f4\u00fb\2\u0c3b\u0c3c\7\u03ff"+
		"\2\2\u0c3c\u0c3e\7\u03ef\2\2\u0c3d\u0c3b\3\2\2\2\u0c3d\u0c3e\3\2\2\2\u0c3e"+
		"\u0c40\3\2\2\2\u0c3f\u0c39\3\2\2\2\u0c40\u0c43\3\2\2\2\u0c41\u0c3f\3\2"+
		"\2\2\u0c41\u0c42\3\2\2\2\u0c42\u0c44\3\2\2\2\u0c43\u0c41\3\2\2\2\u0c44"+
		"\u0c45\7?\2\2\u0c45\u0c46\5\u00d4k\2\u0c46\u0c5c\3\2\2\2\u0c47\u0c48\7"+
		"?\2\2\u0c48\u0c4b\5\u01f4\u00fb\2\u0c49\u0c4a\7\u03ff\2\2\u0c4a\u0c4c"+
		"\7\u03ef\2\2\u0c4b\u0c49\3\2\2\2\u0c4b\u0c4c\3\2\2\2\u0c4c\u0c55\3\2\2"+
		"\2\u0c4d\u0c4e\7\u0402\2\2\u0c4e\u0c51\5\u01f4\u00fb\2\u0c4f\u0c50\7\u03ff"+
		"\2\2\u0c50\u0c52\7\u03ef\2\2\u0c51\u0c4f\3\2\2\2\u0c51\u0c52\3\2\2\2\u0c52"+
		"\u0c54\3\2\2\2\u0c53\u0c4d\3\2\2\2\u0c54\u0c57\3\2\2\2\u0c55\u0c53\3\2"+
		"\2\2\u0c55\u0c56\3\2\2\2\u0c56\u0c58\3\2\2\2\u0c57\u0c55\3\2\2\2\u0c58"+
		"\u0c59\7\u00ab\2\2\u0c59\u0c5a\5\u00d4k\2\u0c5a\u0c5c\3\2\2\2\u0c5b\u0c34"+
		"\3\2\2\2\u0c5b\u0c47\3\2\2\2\u0c5c\u0c5f\3\2\2\2\u0c5d\u0c5e\7\u00ae\2"+
		"\2\u0c5e\u0c60\5\u025c\u012f\2\u0c5f\u0c5d\3\2\2\2\u0c5f\u0c60\3\2\2\2"+
		"\u0c60\u00c3\3\2\2\2\u0c61\u0c62\7\u0177\2\2\u0c62\u0c63\5\u01f4\u00fb"+
		"\2\u0c63\u0c68\7\u01ce\2\2\u0c64\u0c66\7\r\2\2\u0c65\u0c64\3\2\2\2\u0c65"+
		"\u0c66\3\2\2\2\u0c66\u0c67\3\2\2\2\u0c67\u0c69\5\u020c\u0107\2\u0c68\u0c65"+
		"\3\2\2\2\u0c68\u0c69\3\2\2\2\u0c69\u00c5\3\2\2\2\u0c6a\u0c6b\7\u0177\2"+
		"\2\u0c6b\u0c6c\5\u01f4\u00fb\2\u0c6c\u0c6d\7z\2\2\u0c6d\u0c74\5\u020c"+
		"\u0107\2\u0c6e\u0c6f\5\u026a\u0136\2\u0c6f\u0c70\7\u0400\2\2\u0c70\u0c71"+
		"\5\u0238\u011d\2\u0c71\u0c72\7\u0401\2\2\u0c72\u0c75\3\2\2\2\u0c73\u0c75"+
		"\t)\2\2\u0c74\u0c6e\3\2\2\2\u0c74\u0c73\3\2\2\2\u0c75\u0c78\3\2\2\2\u0c76"+
		"\u0c77\7\u00ae\2\2\u0c77\u0c79\5\u025c\u012f\2\u0c78\u0c76\3\2\2\2\u0c78"+
		"\u0c79\3\2\2\2\u0c79\u0c7c\3\2\2\2\u0c7a\u0c7b\7[\2\2\u0c7b\u0c7d\5\u00fe"+
		"\u0080\2\u0c7c\u0c7a\3\2\2\2\u0c7c\u0c7d\3\2\2\2\u0c7d\u00c7\3\2\2\2\u0c7e"+
		"\u0c7f\7\u0177\2\2\u0c7f\u0c80\5\u01f4\u00fb\2\u0c80\u0c81\7z\2\2\u0c81"+
		"\u0c84\t*\2\2\u0c82\u0c83\7\u00ae\2\2\u0c83\u0c85\5\u025c\u012f\2\u0c84"+
		"\u0c82\3\2\2\2\u0c84\u0c85\3\2\2\2\u0c85\u0c88\3\2\2\2\u0c86\u0c87\7["+
		"\2\2\u0c87\u0c89\5\u00fe\u0080\2\u0c88\u0c86\3\2\2\2\u0c88\u0c89\3\2\2"+
		"\2\u0c89\u00c9\3\2\2\2\u0c8a\u0c8b\7\u0177\2\2\u0c8b\u0c8c\5\u01f4\u00fb"+
		"\2\u0c8c\u0c8d\7\u012d\2\2\u0c8d\u00cb\3\2\2\2\u0c8e\u0c90\7\u00a8\2\2"+
		"\u0c8f\u0c91\7a\2\2\u0c90\u0c8f\3\2\2\2\u0c90\u0c91\3\2\2\2\u0c91\u0c93"+
		"\3\2\2\2\u0c92\u0c94\7H\2\2\u0c93\u0c92\3\2\2\2\u0c93\u0c94\3\2\2\2\u0c94"+
		"\u0c95\3\2\2\2\u0c95\u0c9a\5\u01f4\u00fb\2\u0c96\u0c98\7\r\2\2\u0c97\u0c96"+
		"\3\2\2\2\u0c97\u0c98\3\2\2\2\u0c98\u0c99\3\2\2\2\u0c99\u0c9b\5\u020c\u0107"+
		"\2\u0c9a\u0c97\3\2\2\2\u0c9a\u0c9b\3\2\2\2\u0c9b\u0c9c\3\2\2\2\u0c9c\u0c9d"+
		"\7\u008c\2\2\u0c9d\u0ca2\5\u00ba^\2\u0c9e\u0c9f\7\u0402\2\2\u0c9f\u0ca1"+
		"\5\u00ba^\2\u0ca0\u0c9e\3\2\2\2\u0ca1\u0ca4\3\2\2\2\u0ca2\u0ca0\3\2\2"+
		"\2\u0ca2\u0ca3\3\2\2\2\u0ca3\u0ca7\3\2\2\2\u0ca4\u0ca2\3\2\2\2\u0ca5\u0ca6"+
		"\7\u00ae\2\2\u0ca6\u0ca8\5\u0260\u0131\2\u0ca7\u0ca5\3\2\2\2\u0ca7\u0ca8"+
		"\3\2\2\2\u0ca8\u0caa\3\2\2\2\u0ca9\u0cab\5\u00d0i\2\u0caa\u0ca9\3\2\2"+
		"\2\u0caa\u0cab\3\2\2\2\u0cab\u0cad\3\2\2\2\u0cac\u0cae\5\u00fc\177\2\u0cad"+
		"\u0cac\3\2\2\2\u0cad\u0cae\3\2\2\2\u0cae\u00cd\3\2\2\2\u0caf\u0cb1\7\u00a8"+
		"\2\2\u0cb0\u0cb2\7a\2\2\u0cb1\u0cb0\3\2\2\2\u0cb1\u0cb2\3\2\2\2\u0cb2"+
		"\u0cb4\3\2\2\2\u0cb3\u0cb5\7H\2\2\u0cb4\u0cb3\3\2\2\2\u0cb4\u0cb5\3\2"+
		"\2\2\u0cb5\u0cb6\3\2\2\2\u0cb6\u0cb7\5\u00d4k\2\u0cb7\u0cb8\7\u008c\2"+
		"\2\u0cb8\u0cbd\5\u00ba^\2\u0cb9\u0cba\7\u0402\2\2\u0cba\u0cbc\5\u00ba"+
		"^\2\u0cbb\u0cb9\3\2\2\2\u0cbc\u0cbf\3\2\2\2\u0cbd\u0cbb\3\2\2\2\u0cbd"+
		"\u0cbe\3\2\2\2\u0cbe\u0cc2\3\2\2\2\u0cbf\u0cbd\3\2\2\2\u0cc0\u0cc1\7\u00ae"+
		"\2\2\u0cc1\u0cc3\5\u025c\u012f\2\u0cc2\u0cc0\3\2\2\2\u0cc2\u0cc3\3\2\2"+
		"\2\u0cc3\u00cf\3\2\2\2\u0cc4\u0cc5\7q\2\2\u0cc5\u0cc6\7\22\2\2\u0cc6\u0ccb"+
		"\5\u00d2j\2\u0cc7\u0cc8\7\u0402\2\2\u0cc8\u0cca\5\u00d2j\2\u0cc9\u0cc7"+
		"\3\2\2\2\u0cca\u0ccd\3\2\2\2\u0ccb\u0cc9\3\2\2\2\u0ccb\u0ccc\3\2\2\2\u0ccc"+
		"\u00d1\3\2\2\2\u0ccd\u0ccb\3\2\2\2\u0cce\u0cd0\5\u025c\u012f\2\u0ccf\u0cd1"+
		"\t+\2\2\u0cd0\u0ccf\3\2\2\2\u0cd0\u0cd1\3\2\2\2\u0cd1\u00d3\3\2\2\2\u0cd2"+
		"\u0cd7\5\u00d6l\2\u0cd3\u0cd4\7\u0402\2\2\u0cd4\u0cd6\5\u00d6l\2\u0cd5"+
		"\u0cd3\3\2\2\2\u0cd6\u0cd9\3\2\2\2\u0cd7\u0cd5\3\2\2\2\u0cd7\u0cd8\3\2"+
		"\2\2\u0cd8\u00d5\3\2\2\2\u0cd9\u0cd7\3\2\2\2\u0cda\u0cde\5\u00d8m\2\u0cdb"+
		"\u0cdd\5\u00dep\2\u0cdc\u0cdb\3\2\2\2\u0cdd\u0ce0\3\2\2\2\u0cde\u0cdc"+
		"\3\2\2\2\u0cde\u0cdf\3\2\2\2\u0cdf\u0cec\3\2\2\2\u0ce0\u0cde\3\2\2\2\u0ce1"+
		"\u0ce2\7\u0400\2\2\u0ce2\u0ce6\5\u00d8m\2\u0ce3\u0ce5\5\u00dep\2\u0ce4"+
		"\u0ce3\3\2\2\2\u0ce5\u0ce8\3\2\2\2\u0ce6\u0ce4\3\2\2\2\u0ce6\u0ce7\3\2"+
		"\2\2\u0ce7\u0ce9\3\2\2\2\u0ce8\u0ce6\3\2\2\2\u0ce9\u0cea\7\u0401\2\2\u0cea"+
		"\u0cec\3\2\2\2\u0ceb\u0cda\3\2\2\2\u0ceb\u0ce1\3\2\2\2\u0cec\u00d7\3\2"+
		"\2\2\u0ced\u0cf3\5\u01f4\u00fb\2\u0cee\u0cef\7u\2\2\u0cef\u0cf0\7\u0400"+
		"\2\2\u0cf0\u0cf1\5\u022c\u0117\2\u0cf1\u0cf2\7\u0401\2\2\u0cf2\u0cf4\3"+
		"\2\2\2\u0cf3\u0cee\3\2\2\2\u0cf3\u0cf4\3\2\2\2\u0cf4\u0cf9\3\2\2\2\u0cf5"+
		"\u0cf7\7\r\2\2\u0cf6\u0cf5\3\2\2\2\u0cf6\u0cf7\3\2\2\2\u0cf7\u0cf8\3\2"+
		"\2\2\u0cf8\u0cfa\5\u020c\u0107\2\u0cf9\u0cf6\3\2\2\2\u0cf9\u0cfa\3\2\2"+
		"\2\u0cfa\u0d03\3\2\2\2\u0cfb\u0d00\5\u00dan\2\u0cfc\u0cfd\7\u0402\2\2"+
		"\u0cfd\u0cff\5\u00dan\2\u0cfe\u0cfc\3\2\2\2\u0cff\u0d02\3\2\2\2\u0d00"+
		"\u0cfe\3\2\2\2\u0d00\u0d01\3\2\2\2\u0d01\u0d04\3\2\2\2\u0d02\u0d00\3\2"+
		"\2\2\u0d03\u0cfb\3\2\2\2\u0d03\u0d04\3\2\2\2\u0d04\u0d16\3\2\2\2\u0d05"+
		"\u0d0b\5\u00b4[\2\u0d06\u0d07\7\u0400\2\2\u0d07\u0d08\5\u00b4[\2\u0d08"+
		"\u0d09\7\u0401\2\2\u0d09\u0d0b\3\2\2\2\u0d0a\u0d05\3\2\2\2\u0d0a\u0d06"+
		"\3\2\2\2\u0d0b\u0d0d\3\2\2\2\u0d0c\u0d0e\7\r\2\2\u0d0d\u0d0c\3\2\2\2\u0d0d"+
		"\u0d0e\3\2\2\2\u0d0e\u0d0f\3\2\2\2\u0d0f\u0d10\5\u020c\u0107\2\u0d10\u0d16"+
		"\3\2\2\2\u0d11\u0d12\7\u0400\2\2\u0d12\u0d13\5\u00d4k\2\u0d13\u0d14\7"+
		"\u0401\2\2\u0d14\u0d16\3\2\2\2\u0d15\u0ced\3\2\2\2\u0d15\u0d0a\3\2\2\2"+
		"\u0d15\u0d11\3\2\2\2\u0d16\u00d9\3\2\2\2\u0d17\u0d18\t,\2\2\u0d18\u0d1b"+
		"\t\24\2\2\u0d19\u0d1a\7<\2\2\u0d1a\u0d1c\5\u00dco\2\u0d1b\u0d19\3\2\2"+
		"\2\u0d1b\u0d1c\3\2\2\2\u0d1c\u0d1d\3\2\2\2\u0d1d\u0d1e\7\u0400\2\2\u0d1e"+
		"\u0d1f\5\u022c\u0117\2\u0d1f\u0d20\7\u0401\2\2\u0d20\u00db\3\2\2\2\u0d21"+
		"\u0d27\7S\2\2\u0d22\u0d23\7q\2\2\u0d23\u0d27\7\22\2\2\u0d24\u0d25\7D\2"+
		"\2\u0d25\u0d27\7\22\2\2\u0d26\u0d21\3\2\2\2\u0d26\u0d22\3\2\2\2\u0d26"+
		"\u0d24\3\2\2\2\u0d27\u00dd\3\2\2\2\u0d28\u0d2a\t-\2\2\u0d29\u0d28\3\2"+
		"\2\2\u0d29\u0d2a\3\2\2\2\u0d2a\u0d2b\3\2\2\2\u0d2b\u0d2c\7S\2\2\u0d2c"+
		"\u0d34\5\u00d8m\2\u0d2d\u0d2e\7l\2\2\u0d2e\u0d35\5\u025c\u012f\2\u0d2f"+
		"\u0d30\7\u00ab\2\2\u0d30\u0d31\7\u0400\2\2\u0d31\u0d32\5\u022c\u0117\2"+
		"\u0d32\u0d33\7\u0401\2\2\u0d33\u0d35\3\2\2\2\u0d34\u0d2d\3\2\2\2\u0d34"+
		"\u0d2f\3\2\2\2\u0d34\u0d35\3\2\2\2\u0d35\u0d55\3\2\2\2\u0d36\u0d37\7\u009b"+
		"\2\2\u0d37\u0d3a\5\u00d8m\2\u0d38\u0d39\7l\2\2\u0d39\u0d3b\5\u025c\u012f"+
		"\2\u0d3a\u0d38\3\2\2\2\u0d3a\u0d3b\3\2\2\2\u0d3b\u0d55\3\2\2\2\u0d3c\u0d3e"+
		"\t.\2\2\u0d3d\u0d3f\7s\2\2\u0d3e\u0d3d\3\2\2\2\u0d3e\u0d3f\3\2\2\2\u0d3f"+
		"\u0d40\3\2\2\2\u0d40\u0d41\7S\2\2\u0d41\u0d49\5\u00d8m\2\u0d42\u0d43\7"+
		"l\2\2\u0d43\u0d4a\5\u025c\u012f\2\u0d44\u0d45\7\u00ab\2\2\u0d45\u0d46"+
		"\7\u0400\2\2\u0d46\u0d47\5\u022c\u0117\2\u0d47\u0d48\7\u0401\2\2\u0d48"+
		"\u0d4a\3\2\2\2\u0d49\u0d42\3\2\2\2\u0d49\u0d44\3\2\2\2\u0d4a\u0d55\3\2"+
		"\2\2\u0d4b\u0d50\7g\2\2\u0d4c\u0d4e\t.\2\2\u0d4d\u0d4f\7s\2\2\u0d4e\u0d4d"+
		"\3\2\2\2\u0d4e\u0d4f\3\2\2\2\u0d4f\u0d51\3\2\2\2\u0d50\u0d4c\3\2\2\2\u0d50"+
		"\u0d51\3\2\2\2\u0d51\u0d52\3\2\2\2\u0d52\u0d53\7S\2\2\u0d53\u0d55\5\u00d8"+
		"m\2\u0d54\u0d29\3\2\2\2\u0d54\u0d36\3\2\2\2\u0d54\u0d3c\3\2\2\2\u0d54"+
		"\u0d4b\3\2\2\2\u0d55\u00df\3\2\2\2\u0d56\u0d57\7\u0400\2\2\u0d57\u0d58"+
		"\5\u00e4s\2\u0d58\u0d59\7\u0401\2\2\u0d59\u0d5f\3\2\2\2\u0d5a\u0d5b\7"+
		"\u0400\2\2\u0d5b\u0d5c\5\u00e0q\2\u0d5c\u0d5d\7\u0401\2\2\u0d5d\u0d5f"+
		"\3\2\2\2\u0d5e\u0d56\3\2\2\2\u0d5e\u0d5a\3\2\2\2\u0d5f\u00e1\3\2\2\2\u0d60"+
		"\u0d61\7\u0400\2\2\u0d61\u0d62\5\u00e6t\2\u0d62\u0d63\7\u0401\2\2\u0d63"+
		"\u0d69\3\2\2\2\u0d64\u0d65\7\u0400\2\2\u0d65\u0d66\5\u00e2r\2\u0d66\u0d67"+
		"\7\u0401\2\2\u0d67\u0d69\3\2\2\2\u0d68\u0d60\3\2\2\2\u0d68\u0d64\3\2\2"+
		"\2\u0d69\u00e3\3\2\2\2\u0d6a\u0d6e\7\u008b\2\2\u0d6b\u0d6d\5\u00ecw\2"+
		"\u0d6c\u0d6b\3\2\2\2\u0d6d\u0d70\3\2\2\2\u0d6e\u0d6c\3\2\2\2\u0d6e\u0d6f"+
		"\3\2\2\2\u0d6f\u0d71\3\2\2\2\u0d70\u0d6e\3\2\2\2\u0d71\u0d73\5\u00eex"+
		"\2\u0d72\u0d74\5\u00f2z\2\u0d73\u0d72\3\2\2\2\u0d73\u0d74\3\2\2\2\u0d74"+
		"\u0d76\3\2\2\2\u0d75\u0d77\5\u00f8}\2\u0d76\u0d75\3\2\2\2\u0d76\u0d77"+
		"\3\2\2\2\u0d77\u0d79\3\2\2\2\u0d78\u0d7a\5\u00d0i\2\u0d79\u0d78\3\2\2"+
		"\2\u0d79\u0d7a\3\2\2\2\u0d7a\u0d7c\3\2\2\2\u0d7b\u0d7d\5\u00fc\177\2\u0d7c"+
		"\u0d7b\3\2\2\2\u0d7c\u0d7d\3\2\2\2\u0d7d\u0d93\3\2\2\2\u0d7e\u0d82\7\u008b"+
		"\2\2\u0d7f\u0d81\5\u00ecw\2\u0d80\u0d7f\3\2\2\2\u0d81\u0d84\3\2\2\2\u0d82"+
		"\u0d80\3\2\2\2\u0d82\u0d83\3\2\2\2\u0d83\u0d85\3\2\2\2\u0d84\u0d82\3\2"+
		"\2\2\u0d85\u0d87\5\u00eex\2\u0d86\u0d88\5\u00f8}\2\u0d87\u0d86\3\2\2\2"+
		"\u0d87\u0d88\3\2\2\2\u0d88\u0d8a\3\2\2\2\u0d89\u0d8b\5\u00d0i\2\u0d8a"+
		"\u0d89\3\2\2\2\u0d8a\u0d8b\3\2\2\2\u0d8b\u0d8d\3\2\2\2\u0d8c\u0d8e\5\u00fc"+
		"\177\2\u0d8d\u0d8c\3\2\2\2\u0d8d\u0d8e\3\2\2\2\u0d8e\u0d90\3\2\2\2\u0d8f"+
		"\u0d91\5\u00f2z\2\u0d90\u0d8f\3\2\2\2\u0d90\u0d91\3\2\2\2\u0d91\u0d93"+
		"\3\2\2\2\u0d92\u0d6a\3\2\2\2\u0d92\u0d7e\3\2\2\2\u0d93\u00e5\3\2\2\2\u0d94"+
		"\u0d98\7\u008b\2\2\u0d95\u0d97\5\u00ecw\2\u0d96\u0d95\3\2\2\2\u0d97\u0d9a"+
		"\3\2\2\2\u0d98\u0d96\3\2\2\2\u0d98\u0d99\3\2\2\2\u0d99\u0d9b\3\2\2\2\u0d9a"+
		"\u0d98\3\2\2\2\u0d9b\u0d9d\5\u00eex\2\u0d9c\u0d9e\5\u00f8}\2\u0d9d\u0d9c"+
		"\3\2\2\2\u0d9d\u0d9e\3\2\2\2\u0d9e\u0da0\3\2\2\2\u0d9f\u0da1\5\u00d0i"+
		"\2\u0da0\u0d9f\3\2\2\2\u0da0\u0da1\3\2\2\2\u0da1\u0da3\3\2\2\2\u0da2\u0da4"+
		"\5\u00fc\177\2\u0da3\u0da2\3\2\2\2\u0da3\u0da4\3\2\2\2\u0da4\u00e7\3\2"+
		"\2\2\u0da5\u0da7\7\u00a4\2\2\u0da6\u0da8\t\'\2\2\u0da7\u0da6\3\2\2\2\u0da7"+
		"\u0da8\3\2\2\2\u0da8\u0da9\3\2\2\2\u0da9\u0daa\5\u00e2r\2\u0daa\u00e9"+
		"\3\2\2\2\u0dab\u0dad\7\u00a4\2\2\u0dac\u0dae\t\'\2\2\u0dad\u0dac\3\2\2"+
		"\2\u0dad\u0dae\3\2\2\2\u0dae\u0db1\3\2\2\2\u0daf\u0db2\5\u00e6t\2\u0db0"+
		"\u0db2\5\u00e2r\2\u0db1\u0daf\3\2\2\2\u0db1\u0db0\3\2\2\2\u0db2\u00eb"+
		"\3\2\2\2\u0db3\u0dbc\t/\2\2\u0db4\u0dbc\7F\2\2\u0db5\u0dbc\7\u009b\2\2"+
		"\u0db6\u0dbc\7\u0097\2\2\u0db7\u0dbc\7\u0095\2\2\u0db8\u0dbc\7\u021a\2"+
		"\2\u0db9\u0dbc\t\60\2\2\u0dba\u0dbc\7\u0096\2\2\u0dbb\u0db3\3\2\2\2\u0dbb"+
		"\u0db4\3\2\2\2\u0dbb\u0db5\3\2\2\2\u0dbb\u0db6\3\2\2\2\u0dbb\u0db7\3\2"+
		"\2\2\u0dbb\u0db8\3\2\2\2\u0dbb\u0db9\3\2\2\2\u0dbb\u0dba\3\2\2\2\u0dbc"+
		"\u00ed\3\2\2\2\u0dbd\u0dc0\7\u03ef\2\2\u0dbe\u0dc0\5\u00f0y\2\u0dbf\u0dbd"+
		"\3\2\2\2\u0dbf\u0dbe\3\2\2\2\u0dc0\u0dc5\3\2\2\2\u0dc1\u0dc2\7\u0402\2"+
		"\2\u0dc2\u0dc4\5\u00f0y\2\u0dc3\u0dc1\3\2\2\2\u0dc4\u0dc7\3\2\2\2\u0dc5"+
		"\u0dc3\3\2\2\2\u0dc5\u0dc6\3\2\2\2\u0dc6\u00ef\3\2\2\2\u0dc7\u0dc5\3\2"+
		"\2\2\u0dc8\u0dc9\5\u01f2\u00fa\2\u0dc9\u0dca\7\u03ff\2\2\u0dca\u0dcb\7"+
		"\u03ef\2\2\u0dcb\u0de6\3\2\2\2\u0dcc\u0dd1\5\u01f6\u00fc\2\u0dcd\u0dcf"+
		"\7\r\2\2\u0dce\u0dcd\3\2\2\2\u0dce\u0dcf\3\2\2\2\u0dcf\u0dd0\3\2\2\2\u0dd0"+
		"\u0dd2\5\u020c\u0107\2\u0dd1\u0dce\3\2\2\2\u0dd1\u0dd2\3\2\2\2\u0dd2\u0de6"+
		"\3\2\2\2\u0dd3\u0dd8\5\u0248\u0125\2\u0dd4\u0dd6\7\r\2\2\u0dd5\u0dd4\3"+
		"\2\2\2\u0dd5\u0dd6\3\2\2\2\u0dd6\u0dd7\3\2\2\2\u0dd7\u0dd9\5\u020c\u0107"+
		"\2\u0dd8\u0dd5\3\2\2\2\u0dd8\u0dd9\3\2\2\2\u0dd9\u0de6\3\2\2\2\u0dda\u0ddb"+
		"\7\u041a\2\2\u0ddb\u0ddd\7\u03e6\2\2\u0ddc\u0dda\3\2\2\2\u0ddc\u0ddd\3"+
		"\2\2\2\u0ddd\u0dde\3\2\2\2\u0dde\u0de3\5\u025c\u012f\2\u0ddf\u0de1\7\r"+
		"\2\2\u0de0\u0ddf\3\2\2\2\u0de0\u0de1\3\2\2\2\u0de1\u0de2\3\2\2\2\u0de2"+
		"\u0de4\5\u020c\u0107\2\u0de3\u0de0\3\2\2\2\u0de3\u0de4\3\2\2\2\u0de4\u0de6"+
		"\3\2\2\2\u0de5\u0dc8\3\2\2\2\u0de5\u0dcc\3\2\2\2\u0de5\u0dd3\3\2\2\2\u0de5"+
		"\u0ddc\3\2\2\2\u0de6\u00f1\3\2\2\2\u0de7\u0de8\7P\2\2\u0de8\u0ded\5\u00bc"+
		"_\2\u0de9\u0dea\7\u0402\2\2\u0dea\u0dec\5\u00bc_\2\u0deb\u0de9\3\2\2\2"+
		"\u0dec\u0def\3\2\2\2\u0ded\u0deb\3\2\2\2\u0ded\u0dee\3\2\2\2\u0dee\u0e0c"+
		"\3\2\2\2\u0def\u0ded\3\2\2\2\u0df0\u0df1\7P\2\2\u0df1\u0df2\7\u0151\2"+
		"\2\u0df2\u0e0c\7\u040f\2\2\u0df3\u0df4\7P\2\2\u0df4\u0df5\7t\2\2\u0df5"+
		"\u0df9\7\u040f\2\2\u0df6\u0df7\7\30\2\2\u0df7\u0df8\7\u008c\2\2\u0df8"+
		"\u0dfa\5\u01fe\u0100\2\u0df9\u0df6\3\2\2\2\u0df9\u0dfa\3\2\2\2\u0dfa\u0e01"+
		"\3\2\2\2\u0dfb\u0dfd\t$\2\2\u0dfc\u0dfe\5\u00f4{\2\u0dfd\u0dfc\3\2\2\2"+
		"\u0dfe\u0dff\3\2\2\2\u0dff\u0dfd\3\2\2\2\u0dff\u0e00\3\2\2\2\u0e00\u0e02"+
		"\3\2\2\2\u0e01\u0dfb\3\2\2\2\u0e01\u0e02\3\2\2\2\u0e02\u0e09\3\2\2\2\u0e03"+
		"\u0e05\7]\2\2\u0e04\u0e06\5\u00f6|\2\u0e05\u0e04\3\2\2\2\u0e06\u0e07\3"+
		"\2\2\2\u0e07\u0e05\3\2\2\2\u0e07\u0e08\3\2\2\2\u0e08\u0e0a\3\2\2\2\u0e09"+
		"\u0e03\3\2\2\2\u0e09\u0e0a\3\2\2\2\u0e0a\u0e0c\3\2\2\2\u0e0b\u0de7\3\2"+
		"\2\2\u0e0b\u0df0\3\2\2\2\u0e0b\u0df3\3\2\2\2\u0e0c\u00f3\3\2\2\2\u0e0d"+
		"\u0e0e\7\u009d\2\2\u0e0e\u0e0f\7\22\2\2\u0e0f\u0e1a\7\u040f\2\2\u0e10"+
		"\u0e12\7o\2\2\u0e11\u0e10\3\2\2\2\u0e11\u0e12\3\2\2\2\u0e12\u0e13\3\2"+
		"\2\2\u0e13\u0e14\7\65\2\2\u0e14\u0e15\7\22\2\2\u0e15\u0e1a\7\u040f\2\2"+
		"\u0e16\u0e17\7\66\2\2\u0e17\u0e18\7\22\2\2\u0e18\u0e1a\7\u040f\2\2\u0e19"+
		"\u0e0d\3\2\2\2\u0e19\u0e11\3\2\2\2\u0e19\u0e16\3\2\2\2\u0e1a\u00f5\3\2"+
		"\2\2\u0e1b\u0e1c\7\u009a\2\2\u0e1c\u0e1d\7\22\2\2\u0e1d\u0e22\7\u040f"+
		"\2\2\u0e1e\u0e1f\7\u009d\2\2\u0e1f\u0e20\7\22\2\2\u0e20\u0e22\7\u040f"+
		"\2\2\u0e21\u0e1b\3\2\2\2\u0e21\u0e1e\3\2\2\2\u0e22\u00f7\3\2\2\2\u0e23"+
		"\u0e24\7?\2\2\u0e24\u0e27\5\u00d4k\2\u0e25\u0e26\7\u00ae\2\2\u0e26\u0e28"+
		"\5\u025c\u012f\2\u0e27\u0e25\3\2\2\2\u0e27\u0e28\3\2\2\2\u0e28\u0e37\3"+
		"\2\2\2\u0e29\u0e2a\7D\2\2\u0e2a\u0e2b\7\22\2\2\u0e2b\u0e30\5\u00fa~\2"+
		"\u0e2c\u0e2d\7\u0402\2\2\u0e2d\u0e2f\5\u00fa~\2\u0e2e\u0e2c\3\2\2\2\u0e2f"+
		"\u0e32\3\2\2\2\u0e30\u0e2e\3\2\2\2\u0e30\u0e31\3\2\2\2\u0e31\u0e35\3\2"+
		"\2\2\u0e32\u0e30\3\2\2\2\u0e33\u0e34\7\u00b0\2\2\u0e34\u0e36\7\u0201\2"+
		"\2\u0e35\u0e33\3\2\2\2\u0e35\u0e36\3\2\2\2\u0e36\u0e38\3\2\2\2\u0e37\u0e29"+
		"\3\2\2\2\u0e37\u0e38\3\2\2\2\u0e38\u0e3b\3\2\2\2\u0e39\u0e3a\7E\2\2\u0e3a"+
		"\u0e3c\5\u025c\u012f\2\u0e3b\u0e39\3\2\2\2\u0e3b\u0e3c\3\2\2\2\u0e3c\u00f9"+
		"\3\2\2\2\u0e3d\u0e3f\5\u025c\u012f\2\u0e3e\u0e40\t+\2\2\u0e3f\u0e3e\3"+
		"\2\2\2\u0e3f\u0e40\3\2\2\2\u0e40\u00fb\3\2\2\2\u0e41\u0e4c\7[\2\2\u0e42"+
		"\u0e43\5\u00fe\u0080\2\u0e43\u0e44\7\u0402\2\2\u0e44\u0e46\3\2\2\2\u0e45"+
		"\u0e42\3\2\2\2\u0e45\u0e46\3\2\2\2\u0e46\u0e47\3\2\2\2\u0e47\u0e4d\5\u00fe"+
		"\u0080\2\u0e48\u0e49\5\u00fe\u0080\2\u0e49\u0e4a\7\u01c7\2\2\u0e4a\u0e4b"+
		"\5\u00fe\u0080\2\u0e4b\u0e4d\3\2\2\2\u0e4c\u0e45\3\2\2\2\u0e4c\u0e48\3"+
		"\2\2\2\u0e4d\u00fd\3\2\2\2\u0e4e\u0e51\5\u0212\u010a\2\u0e4f\u0e51\5\u01fc"+
		"\u00ff\2\u0e50\u0e4e\3\2\2\2\u0e50\u0e4f\3\2\2\2\u0e51\u00ff\3\2\2\2\u0e52"+
		"\u0e53\7\u021e\2\2\u0e53\u0e5c\7\u0235\2\2\u0e54\u0e59\5\u0116\u008c\2"+
		"\u0e55\u0e56\7\u0402\2\2\u0e56\u0e58\5\u0116\u008c\2\u0e57\u0e55\3\2\2"+
		"\2\u0e58\u0e5b\3\2\2\2\u0e59\u0e57\3\2\2\2\u0e59\u0e5a\3\2\2\2\u0e5a\u0e5d"+
		"\3\2\2\2\u0e5b\u0e59\3\2\2\2\u0e5c\u0e54\3\2\2\2\u0e5c\u0e5d\3\2\2\2\u0e5d"+
		"\u0101\3\2\2\2\u0e5e\u0e60\7\u011c\2\2\u0e5f\u0e61\7\u024c\2\2\u0e60\u0e5f"+
		"\3\2\2\2\u0e60\u0e61\3\2\2\2\u0e61\u0103\3\2\2\2\u0e62\u0e64\7\u0134\2"+
		"\2\u0e63\u0e65\7\u024c\2\2\u0e64\u0e63\3\2\2\2\u0e64\u0e65\3\2\2\2\u0e65"+
		"\u0e6b\3\2\2\2\u0e66\u0e68\7\f\2\2\u0e67\u0e69\7\u01c3\2\2\u0e68\u0e67"+
		"\3\2\2\2\u0e68\u0e69\3\2\2\2\u0e69\u0e6a\3\2\2\2\u0e6a\u0e6c\7\u0125\2"+
		"\2\u0e6b\u0e66\3\2\2\2\u0e6b\u0e6c\3\2\2\2\u0e6c\u0e71\3\2\2\2\u0e6d\u0e6f"+
		"\7\u01c3\2\2\u0e6e\u0e6d\3\2\2\2\u0e6e\u0e6f\3\2\2\2\u0e6f\u0e70\3\2\2"+
		"\2\u0e70\u0e72\7~\2\2\u0e71\u0e6e\3\2\2\2\u0e71\u0e72\3\2\2\2\u0e72\u0105"+
		"\3\2\2\2\u0e73\u0e75\7\u0200\2\2\u0e74\u0e76\7\u024c\2\2\u0e75\u0e74\3"+
		"\2\2\2\u0e75\u0e76\3\2\2\2\u0e76\u0e7c\3\2\2\2\u0e77\u0e79\7\f\2\2\u0e78"+
		"\u0e7a\7\u01c3\2\2\u0e79\u0e78\3\2\2\2\u0e79\u0e7a\3\2\2\2\u0e7a\u0e7b"+
		"\3\2\2\2\u0e7b\u0e7d\7\u0125\2\2\u0e7c\u0e77\3\2\2\2\u0e7c\u0e7d\3\2\2"+
		"\2\u0e7d\u0e82\3\2\2\2\u0e7e\u0e80\7\u01c3\2\2\u0e7f\u0e7e\3\2\2\2\u0e7f"+
		"\u0e80\3\2\2\2\u0e80\u0e81\3\2\2\2\u0e81\u0e83\7~\2\2\u0e82\u0e7f\3\2"+
		"\2\2\u0e82\u0e83\3\2\2\2\u0e83\u0107\3\2\2\2\u0e84\u0e85\7\u0206\2\2\u0e85"+
		"\u0e86\5\u020c\u0107\2\u0e86\u0109\3\2\2\2\u0e87\u0e89\7\u0200\2\2\u0e88"+
		"\u0e8a\7\u024c\2\2\u0e89\u0e88\3\2\2\2\u0e89\u0e8a\3\2\2\2\u0e8a\u0e8b"+
		"\3\2\2\2\u0e8b\u0e8d\7\u009f\2\2\u0e8c\u0e8e\7\u0206\2\2\u0e8d\u0e8c\3"+
		"\2\2\2\u0e8d\u0e8e\3\2\2\2\u0e8e\u0e8f\3\2\2\2\u0e8f\u0e90\5\u020c\u0107"+
		"\2\u0e90\u010b\3\2\2\2\u0e91\u0e92\7~\2\2\u0e92\u0e93\7\u0206\2\2\u0e93"+
		"\u0e94\5\u020c\u0107\2\u0e94\u010d\3\2\2\2\u0e95\u0e96\7_\2\2\u0e96\u0e97"+
		"\7\u025e\2\2\u0e97\u0e9c\5\u0118\u008d\2\u0e98\u0e99\7\u0402\2\2\u0e99"+
		"\u0e9b\5\u0118\u008d\2\u0e9a\u0e98\3\2\2\2\u0e9b\u0e9e\3\2\2\2\u0e9c\u0e9a"+
		"\3\2\2\2\u0e9c\u0e9d\3\2\2\2\u0e9d\u010f\3\2\2\2\u0e9e\u0e9c\3\2\2\2\u0e9f"+
		"\u0ea0\7\u00a6\2\2\u0ea0\u0ea1\7\u025e\2\2\u0ea1\u0111\3\2\2\2\u0ea2\u0ea3"+
		"\7\u008c\2\2\u0ea3\u0ea4\7\u0118\2\2\u0ea4\u0ea5\7\u03f7\2\2\u0ea5\u0ea6"+
		"\t\30\2\2\u0ea6\u0113\3\2\2\2\u0ea7\u0ea9\7\u008c\2\2\u0ea8\u0eaa\t\61"+
		"\2\2\u0ea9\u0ea8\3\2\2\2\u0ea9\u0eaa\3\2\2\2\u0eaa\u0eab\3\2\2\2\u0eab"+
		"\u0eac\7\u0235\2\2\u0eac\u0eb1\5\u011c\u008f\2\u0ead\u0eae\7\u0402\2\2"+
		"\u0eae\u0eb0\5\u011c\u008f\2\u0eaf\u0ead\3\2\2\2\u0eb0\u0eb3\3\2\2\2\u0eb1"+
		"\u0eaf\3\2\2\2\u0eb1\u0eb2\3\2\2\2\u0eb2\u0115\3\2\2\2\u0eb3\u0eb1\3\2"+
		"\2\2\u0eb4\u0eb5\7\u00b0\2\2\u0eb5\u0eb6\7\u013b\2\2\u0eb6\u0ebc\7\u0211"+
		"\2\2\u0eb7\u0eb8\7z\2\2\u0eb8\u0ebc\7\u00b1\2\2\u0eb9\u0eba\7z\2\2\u0eba"+
		"\u0ebc\7\u01cd\2\2\u0ebb\u0eb4\3\2\2\2\u0ebb\u0eb7\3\2\2\2\u0ebb\u0eb9"+
		"\3\2\2\2\u0ebc\u0117\3\2\2\2\u0ebd\u0ec2\5\u01f4\u00fb\2\u0ebe\u0ec0\7"+
		"\r\2\2\u0ebf\u0ebe\3\2\2\2\u0ebf\u0ec0\3\2\2\2\u0ec0\u0ec1\3\2\2\2\u0ec1"+
		"\u0ec3\5\u020c\u0107\2\u0ec2\u0ebf\3\2\2\2\u0ec2\u0ec3\3\2\2\2\u0ec3\u0ec4"+
		"\3\2\2\2\u0ec4\u0ec5\5\u011a\u008e\2\u0ec5\u0119\3\2\2\2\u0ec6\u0ec8\7"+
		"z\2\2\u0ec7\u0ec9\7\u0194\2\2\u0ec8\u0ec7\3\2\2\2\u0ec8\u0ec9\3\2\2\2"+
		"\u0ec9\u0ecf\3\2\2\2\u0eca\u0ecc\7a\2\2\u0ecb\u0eca\3\2\2\2\u0ecb\u0ecc"+
		"\3\2\2\2\u0ecc\u0ecd\3\2\2\2\u0ecd\u0ecf\7\u00b1\2\2\u0ece\u0ec6\3\2\2"+
		"\2\u0ece\u0ecb\3\2\2\2\u0ecf\u011b\3\2\2\2\u0ed0\u0ed1\7\u018a\2\2\u0ed1"+
		"\u0ed2\7\u0192\2\2\u0ed2\u0ed8\5\u011e\u0090\2\u0ed3\u0ed4\7z\2\2\u0ed4"+
		"\u0ed8\7\u00b1\2\2\u0ed5\u0ed6\7z\2\2\u0ed6\u0ed8\7\u01cd\2\2\u0ed7\u0ed0"+
		"\3\2\2\2\u0ed7\u0ed3\3\2\2\2\u0ed7\u0ed5\3\2\2\2\u0ed8\u011d\3\2\2\2\u0ed9"+
		"\u0eda\7\u02b5\2\2\u0eda\u0ee1\7z\2\2\u0edb\u0edc\7z\2\2\u0edc\u0ee1\7"+
		"\u02b6\2\2\u0edd\u0ede\7z\2\2\u0ede\u0ee1\7\u02b7\2\2\u0edf\u0ee1\7\u02b8"+
		"\2\2\u0ee0\u0ed9\3\2\2\2\u0ee0\u0edb\3\2\2\2\u0ee0\u0edd\3\2\2\2\u0ee0"+
		"\u0edf\3\2\2\2\u0ee1\u011f\3\2\2\2\u0ee2\u0ee3\7\27\2\2\u0ee3\u0ee4\7"+
		"\u0197\2\2\u0ee4\u0ee5\7\u009f\2\2\u0ee5\u0eea\5\u0132\u009a\2\u0ee6\u0ee7"+
		"\7\u0402\2\2\u0ee7\u0ee9\5\u0132\u009a\2\u0ee8\u0ee6\3\2\2\2\u0ee9\u0eec"+
		"\3\2\2\2\u0eea\u0ee8\3\2\2\2\u0eea\u0eeb\3\2\2\2\u0eeb\u0eee\3\2\2\2\u0eec"+
		"\u0eea\3\2\2\2\u0eed\u0eef\5\u013a\u009e\2\u0eee\u0eed\3\2\2\2\u0eee\u0eef"+
		"\3\2\2\2\u0eef\u0121\3\2\2\2\u0ef0\u0ef1\7\27\2\2\u0ef1\u0ef2\7\u01fa"+
		"\2\2\u0ef2\u0ef3\7\u016b\2\2\u0ef3\u0ef8\5\u013c\u009f\2\u0ef4\u0ef5\7"+
		"\u0402\2\2\u0ef5\u0ef7\5\u013c\u009f\2\u0ef6\u0ef4\3\2\2\2\u0ef7\u0efa"+
		"\3\2\2\2\u0ef8\u0ef6\3\2\2\2\u0ef8\u0ef9\3\2\2\2\u0ef9\u0123\3\2\2\2\u0efa"+
		"\u0ef8\3\2\2\2\u0efb\u0efc\7x\2\2\u0efc\u0efd\t\62\2\2\u0efd\u0f02\7\u0196"+
		"\2\2\u0efe\u0eff\7\u009f\2\2\u0eff\u0f03\7\u040f\2\2\u0f00\u0f01\7\17"+
		"\2\2\u0f01\u0f03\7\u040f\2\2\u0f02\u0efe\3\2\2\2\u0f02\u0f00\3\2\2\2\u0f03"+
		"\u0125\3\2\2\2\u0f04\u0f05\7\u01fb\2\2\u0f05\u0f06\7\u0197\2\2\u0f06\u0127"+
		"\3\2\2\2\u0f07\u0f08\7\u01fb\2\2\u0f08\u0f0a\7\u020f\2\2\u0f09\u0f0b\7"+
		"\b\2\2\u0f0a\u0f09\3\2\2\2\u0f0a\u0f0b\3\2\2\2\u0f0b\u0f0d\3\2\2\2\u0f0c"+
		"\u0f0e\5\u013a\u009e\2\u0f0d\u0f0c\3\2\2\2\u0f0d\u0f0e\3\2\2\2\u0f0e\u0129"+
		"\3\2\2\2\u0f0f\u0f10\7\u021e\2\2\u0f10\u0f19\7\u020f\2\2\u0f11\u0f16\5"+
		"\u0140\u00a1\2\u0f12\u0f13\7\u0402\2\2\u0f13\u0f15\5\u0140\u00a1\2\u0f14"+
		"\u0f12\3\2\2\2\u0f15\u0f18\3\2\2\2\u0f16\u0f14\3\2\2\2\u0f16\u0f17\3\2"+
		"\2\2\u0f17\u0f1a\3\2\2\2\u0f18\u0f16\3\2\2\2\u0f19\u0f11\3\2\2\2\u0f19"+
		"\u0f1a\3\2\2\2\u0f1a\u0f1d\3\2\2\2\u0f1b\u0f1c\7\u023e\2\2\u0f1c\u0f1e"+
		"\5\u0142\u00a2\2\u0f1d\u0f1b\3\2\2\2\u0f1d\u0f1e\3\2\2\2\u0f1e\u0f22\3"+
		"\2\2\2\u0f1f\u0f21\5\u0144\u00a3\2\u0f20\u0f1f\3\2\2\2\u0f21\u0f24\3\2"+
		"\2\2\u0f22\u0f20\3\2\2\2\u0f22\u0f23\3\2\2\2\u0f23\u0f26\3\2\2\2\u0f24"+
		"\u0f22\3\2\2\2\u0f25\u0f27\5\u013a\u009e\2\u0f26\u0f25\3\2\2\2\u0f26\u0f27"+
		"\3\2\2\2\u0f27\u012b\3\2\2\2\u0f28\u0f29\7\u0224\2\2\u0f29\u0f32\7\u020f"+
		"\2\2\u0f2a\u0f2f\5\u0140\u00a1\2\u0f2b\u0f2c\7\u0402\2\2\u0f2c\u0f2e\5"+
		"\u0140\u00a1\2\u0f2d\u0f2b\3\2\2\2\u0f2e\u0f31\3\2\2\2\u0f2f\u0f2d\3\2"+
		"\2\2\u0f2f\u0f30\3\2\2\2\u0f30\u0f33\3\2\2\2\u0f31\u0f2f\3\2\2\2\u0f32"+
		"\u0f2a\3\2\2\2\u0f32\u0f33\3\2\2\2\u0f33\u012d\3\2\2\2\u0f34\u0f35\7\u021e"+
		"\2\2\u0f35\u0f36\7\u0176\2\2\u0f36\u012f\3\2\2\2\u0f37\u0f38\7\u0224\2"+
		"\2\u0f38\u0f39\7\u0176\2\2\u0f39\u0131\3\2\2\2\u0f3a\u0f3b\5\u0134\u009b"+
		"\2\u0f3b\u0f3c\7\u03f7\2\2\u0f3c\u0f3d\7\u040f\2\2\u0f3d\u0f58\3\2\2\2"+
		"\u0f3e\u0f3f\5\u0136\u009c\2\u0f3f\u0f40\7\u03f7\2\2\u0f40\u0f41\5\u0212"+
		"\u010a\2\u0f41\u0f58\3\2\2\2\u0f42\u0f43\5\u0138\u009d\2\u0f43\u0f44\7"+
		"\u03f7\2\2\u0f44\u0f45\t\30\2\2\u0f45\u0f58\3\2\2\2\u0f46\u0f47\7\u019b"+
		"\2\2\u0f47\u0f48\7\u03f7\2\2\u0f48\u0f58\7\u0412\2\2\u0f49\u0f4a\7\u017d"+
		"\2\2\u0f4a\u0f4b\7\u03f7\2\2\u0f4b\u0f54\7\u0400\2\2\u0f4c\u0f51\5\u020c"+
		"\u0107\2\u0f4d\u0f4e\7\u0402\2\2\u0f4e\u0f50\5\u020c\u0107\2\u0f4f\u0f4d"+
		"\3\2\2\2\u0f50\u0f53\3\2\2\2\u0f51\u0f4f\3\2\2\2\u0f51\u0f52\3\2\2\2\u0f52"+
		"\u0f55\3\2\2\2\u0f53\u0f51\3\2\2\2\u0f54\u0f4c\3\2\2\2\u0f54\u0f55\3\2"+
		"\2\2\u0f55\u0f56\3\2\2\2\u0f56\u0f58\7\u0401\2\2\u0f57\u0f3a\3\2\2\2\u0f57"+
		"\u0f3e\3\2\2\2\u0f57\u0f42\3\2\2\2\u0f57\u0f46\3\2\2\2\u0f57\u0f49\3\2"+
		"\2\2\u0f58\u0133\3\2\2\2\u0f59\u0f5a\t\63\2\2\u0f5a\u0135\3\2\2\2\u0f5b"+
		"\u0f5c\t\64\2\2\u0f5c\u0137\3\2\2\2\u0f5d\u0f5e\t\65\2\2\u0f5e\u0139\3"+
		"\2\2\2\u0f5f\u0f60\7<\2\2\u0f60\u0f61\7\u0127\2\2\u0f61\u0f62\7\u040f"+
		"\2\2\u0f62\u013b\3\2\2\2\u0f63\u0f64\7\u01f3\2\2\u0f64\u0f65\7\u03f7\2"+
		"\2\u0f65\u0f66\7\u0400\2\2\u0f66\u0f67\5\u022c\u0117\2\u0f67\u0f68\7\u0401"+
		"\2\2\u0f68\u0f95\3\2\2\2\u0f69\u0f6a\7\u01f5\2\2\u0f6a\u0f6b\7\u03f7\2"+
		"\2\u0f6b\u0f6c\7\u0400\2\2\u0f6c\u0f6d\5\u022c\u0117\2\u0f6d\u0f6e\7\u0401"+
		"\2\2\u0f6e\u0f95\3\2\2\2\u0f6f\u0f70\7\u01f4\2\2\u0f70\u0f71\7\u03f7\2"+
		"\2\u0f71\u0f72\7\u0400\2\2\u0f72\u0f73\5\u022e\u0118\2\u0f73\u0f74\7\u0401"+
		"\2\2\u0f74\u0f95\3\2\2\2\u0f75\u0f76\7\u01f6\2\2\u0f76\u0f77\7\u03f7\2"+
		"\2\u0f77\u0f78\7\u0400\2\2\u0f78\u0f79\5\u022e\u0118\2\u0f79\u0f7a\7\u0401"+
		"\2\2\u0f7a\u0f95\3\2\2\2\u0f7b\u0f7c\7\u01f8\2\2\u0f7c\u0f7d\7\u03f7\2"+
		"\2\u0f7d\u0f7e\7\u0400\2\2\u0f7e\u0f7f\5\u023a\u011e\2\u0f7f\u0f80\7\u0401"+
		"\2\2\u0f80\u0f95\3\2\2\2\u0f81\u0f82\7\u01f9\2\2\u0f82\u0f83\7\u03f7\2"+
		"\2\u0f83\u0f84\7\u0400\2\2\u0f84\u0f85\5\u023a\u011e\2\u0f85\u0f86\7\u0401"+
		"\2\2\u0f86\u0f95\3\2\2\2\u0f87\u0f88\7\u01f7\2\2\u0f88\u0f89\7\u03f7\2"+
		"\2\u0f89\u0f8a\7\u0400\2\2\u0f8a\u0f8f\5\u013e\u00a0\2\u0f8b\u0f8c\7\u0402"+
		"\2\2\u0f8c\u0f8e\5\u013e\u00a0\2\u0f8d\u0f8b\3\2\2\2\u0f8e\u0f91\3\2\2"+
		"\2\u0f8f\u0f8d\3\2\2\2\u0f8f\u0f90\3\2\2\2\u0f90\u0f92\3\2\2\2\u0f91\u0f8f"+
		"\3\2\2\2\u0f92\u0f93\7\u0401\2\2\u0f93\u0f95\3\2\2\2\u0f94\u0f63\3\2\2"+
		"\2\u0f94\u0f69\3\2\2\2\u0f94\u0f6f\3\2\2\2\u0f94\u0f75\3\2\2\2\u0f94\u0f7b"+
		"\3\2\2\2\u0f94\u0f81\3\2\2\2\u0f94\u0f87\3\2\2\2\u0f95\u013d\3\2\2\2\u0f96"+
		"\u0f97\7\u0400\2\2\u0f97\u0f98\5\u01f4\u00fb\2\u0f98\u0f99\7\u0402\2\2"+
		"\u0f99\u0f9a\5\u01f4\u00fb\2\u0f9a\u0f9b\7\u0401\2\2\u0f9b\u013f\3\2\2"+
		"\2\u0f9c\u0f9d\t\66\2\2\u0f9d\u0141\3\2\2\2\u0f9e\u0f9f\t\67\2\2\u0f9f"+
		"\u0fa0\7\u03f7\2\2\u0fa0\u0fb1\5\u0146\u00a4\2\u0fa1\u0fa2\7\u019d\2\2"+
		"\u0fa2\u0fa3\7\u03f7\2\2\u0fa3\u0fa4\7\u040f\2\2\u0fa4\u0fa5\7\u0402\2"+
		"\2\u0fa5\u0fa6\7\u019e\2\2\u0fa6\u0fa7\7\u03f7\2\2\u0fa7\u0fb1\5\u0212"+
		"\u010a\2\u0fa8\u0fa9\7\u01ed\2\2\u0fa9\u0faa\7\u03f7\2\2\u0faa\u0fab\7"+
		"\u040f\2\2\u0fab\u0fac\7\u0402\2\2\u0fac\u0fad\7\u01ee\2\2\u0fad\u0fae"+
		"\7\u03f7\2\2\u0fae\u0fb1\5\u0212\u010a\2\u0faf\u0fb1\7\u0218\2\2\u0fb0"+
		"\u0f9e\3\2\2\2\u0fb0\u0fa1\3\2\2\2\u0fb0\u0fa8\3\2\2\2\u0fb0\u0faf\3\2"+
		"\2\2\u0fb1\u0143\3\2\2\2\u0fb2\u0fb3\7\u0240\2\2\u0fb3\u0fb4\7\u03f7\2"+
		"\2\u0fb4\u0fbf\7\u040f\2\2\u0fb5\u0fb6\7\u01d8\2\2\u0fb6\u0fb7\7\u03f7"+
		"\2\2\u0fb7\u0fbf\7\u040f\2\2\u0fb8\u0fb9\7\u0148\2\2\u0fb9\u0fba\7\u03f7"+
		"\2\2\u0fba\u0fbf\7\u040f\2\2\u0fbb\u0fbc\7\u01db\2\2\u0fbc\u0fbd\7\u03f7"+
		"\2\2\u0fbd\u0fbf\7\u040f\2\2\u0fbe\u0fb2\3\2\2\2\u0fbe\u0fb5\3\2\2\2\u0fbe"+
		"\u0fb8\3\2\2\2\u0fbe\u0fbb\3\2\2\2\u0fbf\u0145\3\2\2\2\u0fc0\u0fc5\5\u0204"+
		"\u0103\2\u0fc1\u0fc2\7\u0402\2\2\u0fc2\u0fc4\5\u0204\u0103\2\u0fc3\u0fc1"+
		"\3\2\2\2\u0fc4\u0fc7\3\2\2\2\u0fc5\u0fc3\3\2\2\2\u0fc5\u0fc6\3\2\2\2\u0fc6"+
		"\u0fca\3\2\2\2\u0fc7\u0fc5\3\2\2\2\u0fc8\u0fca\7\u040f\2\2\u0fc9\u0fc0"+
		"\3\2\2\2\u0fc9\u0fc8\3\2\2\2\u0fca\u0147\3\2\2\2\u0fcb\u0fcc\7\u024f\2"+
		"\2\u0fcc\u0fcd\t8\2\2\u0fcd\u0fcf\5\u0206\u0104\2\u0fce\u0fd0\t9\2\2\u0fcf"+
		"\u0fce\3\2\2\2\u0fcf\u0fd0\3\2\2\2\u0fd0\u0149\3\2\2\2\u0fd1\u0fd2\7\u024f"+
		"\2\2\u0fd2\u0fd3\7\u0156\2\2\u0fd3\u0fd9\5\u0206\u0104\2\u0fd4\u0fd7\7"+
		"\u022c\2\2\u0fd5\u0fd6\7<\2\2\u0fd6\u0fd8\7\u01b7\2\2\u0fd7\u0fd5\3\2"+
		"\2\2\u0fd7\u0fd8\3\2\2\2\u0fd8\u0fda\3\2\2\2\u0fd9\u0fd4\3\2\2\2\u0fd9"+
		"\u0fda\3\2\2\2\u0fda\u014b\3\2\2\2\u0fdb\u0fdc\7\u024f\2\2\u0fdc\u0fdd"+
		"\7\u01df\2\2\u0fdd\u0fde\5\u0206\u0104\2\u0fde\u014d\3\2\2\2\u0fdf\u0fe0"+
		"\7\u024f\2\2\u0fe0\u0fe1\7\u0134\2\2\u0fe1\u0fe4\5\u0206\u0104\2\u0fe2"+
		"\u0fe3\7\u01cb\2\2\u0fe3\u0fe5\7\u01d9\2\2\u0fe4\u0fe2\3\2\2\2\u0fe4\u0fe5"+
		"\3\2\2\2\u0fe5\u014f\3\2\2\2\u0fe6\u0fe7\7\u024f\2\2\u0fe7\u0fe8\7\u0200"+
		"\2\2\u0fe8\u0fe9\5\u0206\u0104\2\u0fe9\u0151\3\2\2\2\u0fea\u0feb\7\u024f"+
		"\2\2\u0feb\u0fee\7\u01e9\2\2\u0fec\u0fed\7\37\2\2\u0fed\u0fef\5\u0206"+
		"\u0104\2\u0fee\u0fec\3\2\2\2\u0fee\u0fef\3\2\2\2\u0fef\u0153\3\2\2\2\u0ff0"+
		"\u0ff1\7\u01df\2\2\u0ff1\u0ff2\5\u020c\u0107\2\u0ff2\u0ff5\7?\2\2\u0ff3"+
		"\u0ff6\7\u040f\2\2\u0ff4\u0ff6\7\u041a\2\2\u0ff5\u0ff3\3\2\2\2\u0ff5\u0ff4"+
		"\3\2\2\2\u0ff6\u0155\3\2\2\2\u0ff7\u0ff8\7\u0260\2\2\u0ff8\u0ffb\5\u020c"+
		"\u0107\2\u0ff9\u0ffa\7\u00ab\2\2\u0ffa\u0ffc\5\u023c\u011f\2\u0ffb\u0ff9"+
		"\3\2\2\2\u0ffb\u0ffc\3\2\2\2\u0ffc\u0157\3\2\2\2\u0ffd\u0ffe\t:\2\2\u0ffe"+
		"\u0fff\7\u01df\2\2\u0fff\u1000\5\u020c\u0107\2\u1000\u0159\3\2\2\2\u1001"+
		"\u1004\5\u015c\u00af\2\u1002\u1004\5\6\4\2\u1003\u1001\3\2\2\2\u1003\u1002"+
		"\3\2\2\2\u1004\u015b\3\2\2\2\u1005\u1006\5\u020c\u0107\2\u1006\u1007\7"+
		"\u040b\2\2\u1007\u1009\3\2\2\2\u1008\u1005\3\2\2\2\u1008\u1009\3\2\2\2"+
		"\u1009\u100a\3\2\2\2\u100a\u1031\7\u011c\2\2\u100b\u100c\5\u0170\u00b9"+
		"\2\u100c\u100d\7\u0403\2\2\u100d\u100f\3\2\2\2\u100e\u100b\3\2\2\2\u100f"+
		"\u1012\3\2\2\2\u1010\u100e\3\2\2\2\u1010\u1011\3\2\2\2\u1011\u1018\3\2"+
		"\2\2\u1012\u1010\3\2\2\2\u1013\u1014\5\u0172\u00ba\2\u1014\u1015\7\u0403"+
		"\2\2\u1015\u1017\3\2\2\2\u1016\u1013\3\2\2\2\u1017\u101a\3\2\2\2\u1018"+
		"\u1016\3\2\2\2\u1018\u1019\3\2\2\2\u1019\u1020\3\2\2\2\u101a\u1018\3\2"+
		"\2\2\u101b\u101c\5\u0174\u00bb\2\u101c\u101d\7\u0403\2\2\u101d\u101f\3"+
		"\2\2\2\u101e\u101b\3\2\2\2\u101f\u1022\3\2\2\2\u1020\u101e\3\2\2\2\u1020"+
		"\u1021\3\2\2\2\u1021\u1028\3\2\2\2\u1022\u1020\3\2\2\2\u1023\u1024\5\u0176"+
		"\u00bc\2\u1024\u1025\7\u0403\2\2\u1025\u1027\3\2\2\2\u1026\u1023\3\2\2"+
		"\2\u1027\u102a\3\2\2\2\u1028\u1026\3\2\2\2\u1028\u1029\3\2\2\2\u1029\u102e"+
		"\3\2\2\2\u102a\u1028\3\2\2\2\u102b\u102d\5\u017a\u00be\2\u102c\u102b\3"+
		"\2\2\2\u102d\u1030\3\2\2\2\u102e\u102c\3\2\2\2\u102e\u102f\3\2\2\2\u102f"+
		"\u1032\3\2\2\2\u1030\u102e\3\2\2\2\u1031\u1010\3\2\2\2\u1031\u1032\3\2"+
		"\2\2\u1032\u1033\3\2\2\2\u1033\u1035\7\u0156\2\2\u1034\u1036\5\u020c\u0107"+
		"\2\u1035\u1034\3\2\2\2\u1035\u1036\3\2\2\2\u1036\u015d\3\2\2\2\u1037\u103a"+
		"\7\25\2\2\u1038\u103b\5\u020c\u0107\2\u1039\u103b\5\u025c\u012f\2\u103a"+
		"\u1038\3\2\2\2\u103a\u1039\3\2\2\2\u103a\u103b\3\2\2\2\u103b\u103d\3\2"+
		"\2\2\u103c\u103e\5\u017c\u00bf\2\u103d\u103c\3\2\2\2\u103e\u103f\3\2\2"+
		"\2\u103f\u103d\3\2\2\2\u103f\u1040\3\2\2\2\u1040\u1047\3\2\2\2\u1041\u1043"+
		"\7\63\2\2\u1042\u1044\5\u017a\u00be\2\u1043\u1042\3\2\2\2\u1044\u1045"+
		"\3\2\2\2\u1045\u1043\3\2\2\2\u1045\u1046\3\2\2\2\u1046\u1048\3\2\2\2\u1047"+
		"\u1041\3\2\2\2\u1047\u1048\3\2\2\2\u1048\u1049\3\2\2\2\u1049\u104a\7\u0156"+
		"\2\2\u104a\u104b\7\25\2\2\u104b\u015f\3\2\2\2\u104c\u104d\7G\2\2\u104d"+
		"\u104e\5\u025c\u012f\2\u104e\u1050\7\u009e\2\2\u104f\u1051\5\u017a\u00be"+
		"\2\u1050\u104f\3\2\2\2\u1051\u1052\3\2\2\2\u1052\u1050\3\2\2\2\u1052\u1053"+
		"\3\2\2\2\u1053\u1057\3";
	private static final String _serializedATNSegment2 =
		"\2\2\2\u1054\u1056\5\u017e\u00c0\2\u1055\u1054\3\2\2\2\u1056\u1059\3\2"+
		"\2\2\u1057\u1055\3\2\2\2\u1057\u1058\3\2\2\2\u1058\u1060\3\2\2\2\u1059"+
		"\u1057\3\2\2\2\u105a\u105c\7\63\2\2\u105b\u105d\5\u017a\u00be\2\u105c"+
		"\u105b\3\2\2\2\u105d\u105e\3\2\2\2\u105e\u105c\3\2\2\2\u105e\u105f\3\2"+
		"\2\2\u105f\u1061\3\2\2\2\u1060\u105a\3\2\2\2\u1060\u1061\3\2\2\2\u1061"+
		"\u1062\3\2\2\2\u1062\u1063\7\u0156\2\2\u1063\u1064\7G\2\2\u1064\u0161"+
		"\3\2\2\2\u1065\u1066\7R\2\2\u1066\u1067\5\u020c\u0107\2\u1067\u0163\3"+
		"\2\2\2\u1068\u1069\7X\2\2\u1069\u106a\5\u020c\u0107\2\u106a\u0165\3\2"+
		"\2\2\u106b\u106c\5\u020c\u0107\2\u106c\u106d\7\u040b\2\2\u106d\u106f\3"+
		"\2\2\2\u106e\u106b\3\2\2\2\u106e\u106f\3\2\2\2\u106f\u1070\3\2\2\2\u1070"+
		"\u1072\7`\2\2\u1071\u1073\5\u017a\u00be\2\u1072\u1071\3\2\2\2\u1073\u1074"+
		"\3\2\2\2\u1074\u1072\3\2\2\2\u1074\u1075\3\2\2\2\u1075\u1076\3\2\2\2\u1076"+
		"\u1077\7\u0156\2\2\u1077\u1079\7`\2\2\u1078\u107a\5\u020c\u0107\2\u1079"+
		"\u1078\3\2\2\2\u1079\u107a\3\2\2\2\u107a\u0167\3\2\2\2\u107b\u107c\5\u020c"+
		"\u0107\2\u107c\u107d\7\u040b\2\2\u107d\u107f\3\2\2\2\u107e\u107b\3\2\2"+
		"\2\u107e\u107f\3\2\2\2\u107f\u1080\3\2\2\2\u1080\u1082\7\u0080\2\2\u1081"+
		"\u1083\5\u017a\u00be\2\u1082\u1081\3\2\2\2\u1083\u1084\3\2\2\2\u1084\u1082"+
		"\3\2\2\2\u1084\u1085\3\2\2\2\u1085\u1086\3\2\2\2\u1086\u1087\7\u023e\2"+
		"\2\u1087\u1088\5\u025c\u012f\2\u1088\u1089\7\u0156\2\2\u1089\u108b\7\u0080"+
		"\2\2\u108a\u108c\5\u020c\u0107\2\u108b\u108a\3\2\2\2\u108b\u108c\3\2\2"+
		"\2\u108c\u0169\3\2\2\2\u108d\u108e\7\u0085\2\2\u108e\u108f\5\u025c\u012f"+
		"\2\u108f\u016b\3\2\2\2\u1090\u1091\5\u020c\u0107\2\u1091\u1092\7\u040b"+
		"\2\2\u1092\u1094\3\2\2\2\u1093\u1090\3\2\2\2\u1093\u1094\3\2\2\2\u1094"+
		"\u1095\3\2\2\2\u1095\u1096\7\u00af\2\2\u1096\u1097\5\u025c\u012f\2\u1097"+
		"\u1099\7\u0150\2\2\u1098\u109a\5\u017a\u00be\2\u1099\u1098\3\2\2\2\u109a"+
		"\u109b\3\2\2\2\u109b\u1099\3\2\2\2\u109b\u109c\3\2\2\2\u109c\u109d\3\2"+
		"\2\2\u109d\u109e\7\u0156\2\2\u109e\u10a0\7\u00af\2\2\u109f\u10a1\5\u020c"+
		"\u0107\2\u10a0\u109f\3\2\2\2\u10a0\u10a1\3\2\2\2\u10a1\u016d\3\2\2\2\u10a2"+
		"\u10a3\7\u012d\2\2\u10a3\u10b2\5\u020c\u0107\2\u10a4\u10a9\7;\2\2\u10a5"+
		"\u10a7\7\u01c2\2\2\u10a6\u10a5\3\2\2\2\u10a6\u10a7\3\2\2\2\u10a7\u10a8"+
		"\3\2\2\2\u10a8\u10aa\7?\2\2\u10a9\u10a6\3\2\2\2\u10a9\u10aa\3\2\2\2\u10aa"+
		"\u10ab\3\2\2\2\u10ab\u10ac\5\u020c\u0107\2\u10ac\u10ad\7P\2\2\u10ad\u10ae"+
		"\5\u022c\u0117\2\u10ae\u10b2\3\2\2\2\u10af\u10b0\7\u01ce\2\2\u10b0\u10b2"+
		"\5\u020c\u0107\2\u10b1\u10a2\3\2\2\2\u10b1\u10a4\3\2\2\2\u10b1\u10af\3"+
		"\2\2\2\u10b2\u016f\3\2\2\2\u10b3\u10b4\7\'\2\2\u10b4\u10b5\5\u022c\u0117"+
		"\2\u10b5\u10b8\5\u0220\u0111\2\u10b6\u10b7\7(\2\2\u10b7\u10b9\5\u023e"+
		"\u0120\2\u10b8\u10b6\3\2\2\2\u10b8\u10b9\3\2\2\2\u10b9\u0171\3\2\2\2\u10ba"+
		"\u10bb\7\'\2\2\u10bb\u10bc\5\u020c\u0107\2\u10bc\u10bd\7\34\2\2\u10bd"+
		"\u10c4\7<\2\2\u10be\u10c5\5\u0212\u010a\2\u10bf\u10c1\7\u0093\2\2\u10c0"+
		"\u10c2\7\u0244\2\2\u10c1\u10c0\3\2\2\2\u10c1\u10c2\3\2\2\2\u10c2\u10c3"+
		"\3\2\2\2\u10c3\u10c5\7\u040f\2\2\u10c4\u10be\3\2\2\2\u10c4\u10bf\3\2\2"+
		"\2\u10c5\u0173\3\2\2\2\u10c6\u10c7\7\'\2\2\u10c7\u10c8\5\u020c\u0107\2"+
		"\u10c8\u10c9\7$\2\2\u10c9\u10ca\7<\2\2\u10ca\u10cb\5\u00b4[\2\u10cb\u0175"+
		"\3\2\2\2\u10cc\u10cd\7\'\2\2\u10cd\u10ce\t;\2\2\u10ce\u10cf\7\u0177\2"+
		"\2\u10cf\u10d0\7<\2\2\u10d0\u10d5\5\u0178\u00bd\2\u10d1\u10d2\7\u0402"+
		"\2\2\u10d2\u10d4\5\u0178\u00bd\2\u10d3\u10d1\3\2\2\2\u10d4\u10d7\3\2\2"+
		"\2\u10d5\u10d3\3\2\2\2\u10d5\u10d6\3\2\2\2\u10d6\u10d8\3\2\2\2\u10d7\u10d5"+
		"\3\2\2\2\u10d8\u10d9\5\u015a\u00ae\2\u10d9\u0177\3\2\2\2\u10da\u10e6\5"+
		"\u0212\u010a\2\u10db\u10dd\7\u0093\2\2\u10dc\u10de\7\u0244\2\2\u10dd\u10dc"+
		"\3\2\2\2\u10dd\u10de\3\2\2\2\u10de\u10df\3\2\2\2\u10df\u10e6\7\u040f\2"+
		"\2\u10e0\u10e6\5\u020c\u0107\2\u10e1\u10e6\7\u0094\2\2\u10e2\u10e3\7h"+
		"\2\2\u10e3\u10e6\7\u0170\2\2\u10e4\u10e6\7\u0092\2\2\u10e5\u10da\3\2\2"+
		"\2\u10e5\u10db\3\2\2\2\u10e5\u10e0\3\2\2\2\u10e5\u10e1\3\2\2\2\u10e5\u10e2"+
		"\3\2\2\2\u10e5\u10e4\3\2\2\2\u10e6\u0179\3\2\2\2\u10e7\u10ea\5\24\13\2"+
		"\u10e8\u10ea\5\6\4\2\u10e9\u10e7\3\2\2\2\u10e9\u10e8\3\2\2\2\u10ea\u10eb"+
		"\3\2\2\2\u10eb\u10ec\7\u0403\2\2\u10ec\u017b\3\2\2\2\u10ed\u10f0\7\u00ad"+
		"\2\2\u10ee\u10f1\5\u021e\u0110\2\u10ef\u10f1\5\u025c\u012f\2\u10f0\u10ee"+
		"\3\2\2\2\u10f0\u10ef\3\2\2\2\u10f1\u10f2\3\2\2\2\u10f2\u10f4\7\u009e\2"+
		"\2\u10f3\u10f5\5\u017a\u00be\2\u10f4\u10f3\3\2\2\2\u10f5\u10f6\3\2\2\2"+
		"\u10f6\u10f4\3\2\2\2\u10f6\u10f7\3\2\2\2\u10f7\u017d\3\2\2\2\u10f8\u10f9"+
		"\7\64\2\2\u10f9\u10fa\5\u025c\u012f\2\u10fa\u10fc\7\u009e\2\2\u10fb\u10fd"+
		"\5\u017a\u00be\2\u10fc\u10fb\3\2\2\2\u10fd\u10fe\3\2\2\2\u10fe\u10fc\3"+
		"\2\2\2\u10fe\u10ff\3\2\2\2\u10ff\u017f\3\2\2\2\u1100\u1101\7\t\2\2\u1101"+
		"\u1102\7\u0240\2\2\u1102\u1107\5\u0192\u00ca\2\u1103\u1104\7\u0402\2\2"+
		"\u1104\u1106\5\u0192\u00ca\2\u1105\u1103\3\2\2\2\u1106\u1109\3\2\2\2\u1107"+
		"\u1105\3\2\2\2\u1107\u1108\3\2\2\2\u1108\u1137\3\2\2\2\u1109\u1107\3\2"+
		"\2\2\u110a\u110b\7\t\2\2\u110b\u110d\7\u0240\2\2\u110c\u110e\5\u0244\u0123"+
		"\2\u110d\u110c\3\2\2\2\u110d\u110e\3\2\2\2\u110e\u110f\3\2\2\2\u110f\u1114"+
		"\5\u0194\u00cb\2\u1110\u1111\7\u0402\2\2\u1111\u1113\5\u0194\u00cb\2\u1112"+
		"\u1110\3\2\2\2\u1113\u1116\3\2\2\2\u1114\u1112\3\2\2\2\u1114\u1115\3\2"+
		"\2\2\u1115\u1125\3\2\2\2\u1116\u1114\3\2\2\2\u1117\u1123\7\u0082\2\2\u1118"+
		"\u1124\7\u01c5\2\2\u1119\u1120\5\u0196\u00cc\2\u111a\u111c\7\f\2\2\u111b"+
		"\u111a\3\2\2\2\u111b\u111c\3\2\2\2\u111c\u111d\3\2\2\2\u111d\u111f\5\u0196"+
		"\u00cc\2\u111e\u111b\3\2\2\2\u111f\u1122\3\2\2\2\u1120\u111e\3\2\2\2\u1120"+
		"\u1121\3\2\2\2\u1121\u1124\3\2\2\2\u1122\u1120\3\2\2\2\u1123\u1118\3\2"+
		"\2\2\u1123\u1119\3\2\2\2\u1124\u1126\3\2\2\2\u1125\u1117\3\2\2\2\u1125"+
		"\u1126\3\2\2\2\u1126\u112d\3\2\2\2\u1127\u1129\7\u00b0\2\2\u1128\u112a"+
		"\5\u0198\u00cd\2\u1129\u1128\3\2\2\2\u112a\u112b\3\2\2\2\u112b\u1129\3"+
		"\2\2\2\u112b\u112c\3\2\2\2\u112c\u112e\3\2\2\2\u112d\u1127\3\2\2\2\u112d"+
		"\u112e\3\2\2\2\u112e\u1133\3\2\2\2\u112f\u1132\5\u019a\u00ce\2\u1130\u1132"+
		"\5\u019c\u00cf\2\u1131\u112f\3\2\2\2\u1131\u1130\3\2\2\2\u1132\u1135\3"+
		"\2\2\2\u1133\u1131\3\2\2\2\u1133\u1134\3\2\2\2\u1134\u1137\3\2\2\2\u1135"+
		"\u1133\3\2\2\2\u1136\u1100\3\2\2\2\u1136\u110a\3\2\2\2\u1137\u0181\3\2"+
		"\2\2\u1138\u1139\7 \2\2\u1139\u113a\7\u0240\2\2\u113a\u113f\5\u0194\u00cb"+
		"\2\u113b\u113c\7\u0402\2\2\u113c\u113e\5\u0194\u00cb\2\u113d\u113b\3\2"+
		"\2\2\u113e\u1141\3\2\2\2\u113f\u113d\3\2\2\2\u113f\u1140\3\2\2\2\u1140"+
		"\u116f\3\2\2\2\u1141\u113f\3\2\2\2\u1142\u1143\7 \2\2\u1143\u1145\7\u0240"+
		"\2\2\u1144\u1146\5\u0246\u0124\2\u1145\u1144\3\2\2\2\u1145\u1146\3\2\2"+
		"\2\u1146\u1147\3\2\2\2\u1147\u114c\5\u0194\u00cb\2\u1148\u1149\7\u0402"+
		"\2\2\u1149\u114b\5\u0194\u00cb\2\u114a\u1148\3\2\2\2\u114b\u114e\3\2\2"+
		"\2\u114c\u114a\3\2\2\2\u114c\u114d\3\2\2\2\u114d\u115d\3\2\2\2\u114e\u114c"+
		"\3\2\2\2\u114f\u115b\7\u0082\2\2\u1150\u115c\7\u01c5\2\2\u1151\u1158\5"+
		"\u0196\u00cc\2\u1152\u1154\7\f\2\2\u1153\u1152\3\2\2\2\u1153\u1154\3\2"+
		"\2\2\u1154\u1155\3\2\2\2\u1155\u1157\5\u0196\u00cc\2\u1156\u1153\3\2\2"+
		"\2\u1157\u115a\3\2\2\2\u1158\u1156\3\2\2\2\u1158\u1159\3\2\2\2\u1159\u115c"+
		"\3\2\2\2\u115a\u1158\3\2\2\2\u115b\u1150\3\2\2\2\u115b\u1151\3\2\2\2\u115c"+
		"\u115e\3\2\2\2\u115d\u114f\3\2\2\2\u115d\u115e\3\2\2\2\u115e\u1165\3\2"+
		"\2\2\u115f\u1161\7\u00b0\2\2\u1160\u1162\5\u0198\u00cd\2\u1161\u1160\3"+
		"\2\2\2\u1162\u1163\3\2\2\2\u1163\u1161\3\2\2\2\u1163\u1164\3\2\2\2\u1164"+
		"\u1166\3\2\2\2\u1165\u115f\3\2\2\2\u1165\u1166\3\2\2\2\u1166\u116b\3\2"+
		"\2\2\u1167\u116a\5\u019a\u00ce\2\u1168\u116a\5\u019c\u00cf\2\u1169\u1167"+
		"\3\2\2\2\u1169\u1168\3\2\2\2\u116a\u116d\3\2\2\2\u116b\u1169\3\2\2\2\u116b"+
		"\u116c\3\2\2\2\u116c\u116f\3\2\2\2\u116d\u116b\3\2\2\2\u116e\u1138\3\2"+
		"\2\2\u116e\u1142\3\2\2\2\u116f\u0183\3\2\2\2\u1170\u1171\7\61\2\2\u1171"+
		"\u1173\7\u0240\2\2\u1172\u1174\5\u0244\u0123\2\u1173\u1172\3\2\2\2\u1173"+
		"\u1174\3\2\2\2\u1174\u1175\3\2\2\2\u1175\u117a\5\u01fa\u00fe\2\u1176\u1177"+
		"\7\u0402\2\2\u1177\u1179\5\u01fa\u00fe\2\u1178\u1176\3\2\2\2\u1179\u117c"+
		"\3\2\2\2\u117a\u1178\3\2\2\2\u117a\u117b\3\2\2\2\u117b\u0185\3\2\2\2\u117c"+
		"\u117a\3\2\2\2\u117d\u117e\7C\2\2\u117e\u1183\5\u019e\u00d0\2\u117f\u1180"+
		"\7\u0402\2\2\u1180\u1182\5\u019e\u00d0\2\u1181\u117f\3\2\2\2\u1182\u1185"+
		"\3\2\2\2\u1183\u1181\3\2\2\2\u1183\u1184\3\2\2\2\u1184\u1186\3\2\2\2\u1185"+
		"\u1183\3\2\2\2\u1186\u1188\7l\2\2\u1187\u1189\t<\2\2\u1188\u1187\3\2\2"+
		"\2\u1188\u1189\3\2\2\2\u1189\u118a\3\2\2\2\u118a\u118b\5\u01a2\u00d2\2"+
		"\u118b\u118c\7\u009f\2\2\u118c\u1191\5\u0194\u00cb\2\u118d\u118e\7\u0402"+
		"\2\2\u118e\u1190\5\u0194\u00cb\2\u118f\u118d\3\2\2\2\u1190\u1193\3\2\2"+
		"\2\u1191\u118f\3\2\2\2\u1191\u1192\3\2\2\2\u1192\u11a2\3\2\2\2\u1193\u1191"+
		"\3\2\2\2\u1194\u11a0\7\u0082\2\2\u1195\u11a1\7\u01c5\2\2\u1196\u119d\5"+
		"\u0196\u00cc\2\u1197\u1199\7\f\2\2\u1198\u1197\3\2\2\2\u1198\u1199\3\2"+
		"\2\2\u1199\u119a\3\2\2\2\u119a\u119c\5\u0196\u00cc\2\u119b\u1198\3\2\2"+
		"\2\u119c\u119f\3\2\2\2\u119d\u119b\3\2\2\2\u119d\u119e\3\2\2\2\u119e\u11a1"+
		"\3\2\2\2\u119f\u119d\3\2\2\2\u11a0\u1195\3\2\2\2\u11a0\u1196\3\2\2\2\u11a1"+
		"\u11a3\3\2\2\2\u11a2\u1194\3\2\2\2\u11a2\u11a3\3\2\2\2\u11a3\u11ad\3\2"+
		"\2\2\u11a4\u11aa\7\u00b0\2\2\u11a5\u11a6\7C\2\2\u11a6\u11a9\7n\2\2\u11a7"+
		"\u11a9\5\u0198\u00cd\2\u11a8\u11a5\3\2\2\2\u11a8\u11a7\3\2\2\2\u11a9\u11ac"+
		"\3\2\2\2\u11aa\u11a8\3\2\2\2\u11aa\u11ab\3\2\2\2\u11ab\u11ae\3\2\2\2\u11ac"+
		"\u11aa\3\2\2\2\u11ad\u11a4\3\2\2\2\u11ad\u11ae\3\2\2\2\u11ae\u0187\3\2"+
		"\2\2\u11af\u11b0\7C\2\2\u11b0\u11b1\7\u01e5\2\2\u11b1\u11b2\7l\2\2\u11b2"+
		"\u11b3\5\u01fa\u00fe\2\u11b3\u11b4\7\u009f\2\2\u11b4\u11b9\5\u01fa\u00fe"+
		"\2\u11b5\u11b6\7\u0402\2\2\u11b6\u11b8\5\u01fa\u00fe\2\u11b7\u11b5\3\2"+
		"\2\2\u11b8\u11bb\3\2\2\2\u11b9\u11b7\3\2\2\2\u11b9\u11ba\3\2\2\2\u11ba"+
		"\u11bf\3\2\2\2\u11bb\u11b9\3\2\2\2\u11bc\u11bd\7\u00b0\2\2\u11bd\u11be"+
		"\7C\2\2\u11be\u11c0\7n\2\2\u11bf\u11bc\3\2\2\2\u11bf\u11c0\3\2\2\2\u11c0"+
		"\u0189\3\2\2\2\u11c1\u11c2\7\177\2\2\u11c2\u11c3\7\u0240\2\2\u11c3\u11c8"+
		"\5\u01a4\u00d3\2\u11c4\u11c5\7\u0402\2\2\u11c5\u11c7\5\u01a4\u00d3\2\u11c6"+
		"\u11c4\3\2\2\2\u11c7\u11ca\3\2\2\2\u11c8\u11c6\3\2\2\2\u11c8\u11c9\3\2"+
		"\2\2\u11c9\u018b\3\2\2\2\u11ca\u11c8\3\2\2\2\u11cb\u11cc\7\u0086\2\2\u11cc"+
		"\u11d1\5\u019e\u00d0\2\u11cd\u11ce\7\u0402\2\2\u11ce\u11d0\5\u019e\u00d0"+
		"\2\u11cf\u11cd\3\2\2\2\u11d0\u11d3\3\2\2\2\u11d1\u11cf\3\2\2\2\u11d1\u11d2"+
		"\3\2\2\2\u11d2\u11d4\3\2\2\2\u11d3\u11d1\3\2\2\2\u11d4\u11d6\7l\2\2\u11d5"+
		"\u11d7\t<\2\2\u11d6\u11d5\3\2\2\2\u11d6\u11d7\3\2\2\2\u11d7\u11d8\3\2"+
		"\2\2\u11d8\u11d9\5\u01a2\u00d2\2\u11d9\u11da\7?\2\2\u11da\u11df\5\u01fa"+
		"\u00fe\2\u11db\u11dc\7\u0402\2\2\u11dc\u11de\5\u01fa\u00fe\2\u11dd\u11db"+
		"\3\2\2\2\u11de\u11e1\3\2\2\2\u11df\u11dd\3\2\2\2\u11df\u11e0\3\2\2\2\u11e0"+
		"\u11f4\3\2\2\2\u11e1\u11df\3\2\2\2\u11e2\u11e3\7\u0086\2\2\u11e3\u11e5"+
		"\7\b\2\2\u11e4\u11e6\7\u0266\2\2\u11e5\u11e4\3\2\2\2\u11e5\u11e6\3\2\2"+
		"\2\u11e6\u11e7\3\2\2\2\u11e7\u11e8\7\u0402\2\2\u11e8\u11e9\7C\2\2\u11e9"+
		"\u11ea\7n\2\2\u11ea\u11eb\7?\2\2\u11eb\u11f0\5\u01fa\u00fe\2\u11ec\u11ed"+
		"\7\u0402\2\2\u11ed\u11ef\5\u01fa\u00fe\2\u11ee\u11ec\3\2\2\2\u11ef\u11f2"+
		"\3\2\2\2\u11f0\u11ee\3\2\2\2\u11f0\u11f1\3\2\2\2\u11f1\u11f4\3\2\2\2\u11f2"+
		"\u11f0\3\2\2\2\u11f3\u11cb\3\2\2\2\u11f3\u11e2\3\2\2\2\u11f4\u018d\3\2"+
		"\2\2\u11f5\u11f6\7\u0086\2\2\u11f6\u11f7\7\u01e5\2\2\u11f7\u11f8\7l\2"+
		"\2\u11f8\u11f9\5\u01fa\u00fe\2\u11f9\u11fa\7?\2\2\u11fa\u11ff\5\u01fa"+
		"\u00fe\2\u11fb\u11fc\7\u0402\2\2\u11fc\u11fe\5\u01fa\u00fe\2\u11fd\u11fb"+
		"\3\2\2\2\u11fe\u1201\3\2\2\2\u11ff\u11fd\3\2\2\2\u11ff\u1200\3\2\2\2\u1200"+
		"\u018f\3\2\2\2\u1201\u11ff\3\2\2\2\u1202\u1203\7\u008c\2\2\u1203\u1206"+
		"\7\u01d8\2\2\u1204\u1205\7<\2\2\u1205\u1207\5\u01fa\u00fe\2\u1206\u1204"+
		"\3\2\2\2\u1206\u1207\3\2\2\2\u1207\u1208\3\2\2\2\u1208\u120b\7\u03f7\2"+
		"\2\u1209\u120c\5\u0256\u012c\2\u120a\u120c\7\u040f\2\2\u120b\u1209\3\2"+
		"\2\2\u120b\u120a\3\2\2\2\u120c\u0191\3\2\2\2\u120d\u120e\5\u01fa\u00fe"+
		"\2\u120e\u120f\5\u019a\u00ce\2\u120f\u0193\3\2\2\2\u1210\u1211\5\u01fa"+
		"\u00fe\2\u1211\u1212\7\u017c\2\2\u1212\u1213\7\22\2\2\u1213\u1214\7\u01d8"+
		"\2\2\u1214\u1215\7\u040f\2\2\u1215\u1229\3\2\2\2\u1216\u1217\5\u01fa\u00fe"+
		"\2\u1217\u121a\7\u017c\2\2\u1218\u1219\7\u00b0\2\2\u1219\u121b\5\u020a"+
		"\u0106\2\u121a\u1218\3\2\2\2\u121a\u121b\3\2\2\2\u121b\u121c\3\2\2\2\u121c"+
		"\u121d\7\22\2\2\u121d\u121e\7\u040f\2\2\u121e\u1229\3\2\2\2\u121f\u1220"+
		"\5\u01fa\u00fe\2\u1220\u1221\7\u017c\2\2\u1221\u1222\7\u00b0\2\2\u1222"+
		"\u1225\5\u020a\u0106\2\u1223\u1224\7\r\2\2\u1224\u1226\7\u040f\2\2\u1225"+
		"\u1223\3\2\2\2\u1225\u1226\3\2\2\2\u1226\u1229\3\2\2\2\u1227\u1229\5\u01fa"+
		"\u00fe\2\u1228\u1210\3\2\2\2\u1228\u1216\3\2\2\2\u1228\u121f\3\2\2\2\u1228"+
		"\u1227\3\2\2\2\u1229\u0195\3\2\2\2\u122a\u1233\7\u0098\2\2\u122b\u1233"+
		"\7\u024e\2\2\u122c\u122d\7\u012a\2\2\u122d\u1233\7\u040f\2\2\u122e\u122f"+
		"\7\u018b\2\2\u122f\u1233\7\u040f\2\2\u1230\u1231\7\u0229\2\2\u1231\u1233"+
		"\7\u040f\2\2\u1232\u122a\3\2\2\2\u1232\u122b\3\2\2\2\u1232\u122c\3\2\2"+
		"\2\u1232\u122e\3\2\2\2\u1232\u1230\3\2\2\2\u1233\u0197\3\2\2\2\u1234\u1235"+
		"\7\u01ad\2\2\u1235\u123d\5\u0212\u010a\2\u1236\u1237\7\u01b0\2\2\u1237"+
		"\u123d\5\u0212\u010a\2\u1238\u1239\7\u01ac\2\2\u1239\u123d\5\u0212\u010a"+
		"\2\u123a\u123b\7\u01b1\2\2\u123b\u123d\5\u0212\u010a\2\u123c\u1234\3\2"+
		"\2\2\u123c\u1236\3\2\2\2\u123c\u1238\3\2\2\2\u123c\u123a\3\2\2\2\u123d"+
		"\u0199\3\2\2\2\u123e\u123f\7\u01d8\2\2\u123f\u1246\7\u0163\2\2\u1240\u1247"+
		"\7(\2\2\u1241\u1247\7\u01c1\2\2\u1242\u1243\7O\2\2\u1243\u1244\5\u0212"+
		"\u010a\2\u1244\u1245\7\u0258\2\2\u1245\u1247\3\2\2\2\u1246\u1240\3\2\2"+
		"\2\u1246\u1241\3\2\2\2\u1246\u1242\3\2\2\2\u1246\u1247\3\2\2\2\u1247\u019b"+
		"\3\2\2\2\u1248\u1249\7\u0110\2\2\u1249\u124a\t=\2\2\u124a\u019d\3\2\2"+
		"\2\u124b\u1250\5\u01a0\u00d1\2\u124c\u124d\7\u0400\2\2\u124d\u124e\5\u022c"+
		"\u0117\2\u124e\u124f\7\u0401\2\2\u124f\u1251\3\2\2\2\u1250\u124c\3\2\2"+
		"\2\u1250\u1251\3\2\2\2\u1251\u019f\3\2\2\2\u1252\u1254\7\b\2\2\u1253\u1255"+
		"\7\u0266\2\2\u1254\u1253\3\2\2\2\u1254\u1255\3\2\2\2\u1255\u127e\3\2\2"+
		"\2\u1256\u1258\7\t\2\2\u1257\u1259\7\u025f\2\2\u1258\u1257\3\2\2\2\u1258"+
		"\u1259\3\2\2\2\u1259\u127e\3\2\2\2\u125a\u1261\7 \2\2\u125b\u125c\7\u0231"+
		"\2\2\u125c\u1262\7\u025e\2\2\u125d\u1262\7\u025f\2\2\u125e\u1262\7\u0246"+
		"\2\2\u125f\u1262\7\u0240\2\2\u1260\u1262\7\u0230\2\2\u1261\u125b\3\2\2"+
		"\2\u1261\u125d\3\2\2\2\u1261\u125e\3\2\2\2\u1261\u125f\3\2\2\2\u1261\u1260"+
		"\3\2\2\2\u1261\u1262\3\2\2\2\u1262\u127e\3\2\2\2\u1263\u127e\7*\2\2\u1264"+
		"\u127e\7\61\2\2\u1265\u127e\7\u015e\2\2\u1266\u127e\7\u0260\2\2\u1267"+
		"\u127e\7\u0261\2\2\u1268\u1269\7C\2\2\u1269\u127e\7n\2\2\u126a\u127e\7"+
		"J\2\2\u126b\u127e\7N\2\2\u126c\u126d\7_\2\2\u126d\u127e\7\u025e\2\2\u126e"+
		"\u127e\7\u0262\2\2\u126f\u127e\7\u01e5\2\2\u1270\u127e\7|\2\2\u1271\u127e"+
		"\7\u0263\2\2\u1272\u1273\7\u01fa\2\2\u1273\u127e\t>\2\2\u1274\u127e\7"+
		"\u008b\2\2\u1275\u1276\7\u008e\2\2\u1276\u127e\t?\2\2\u1277\u127e\7\u0264"+
		"\2\2\u1278\u127e\7\u0265\2\2\u1279\u127e\7\u00a1\2\2\u127a\u127e\7\u00a8"+
		"\2\2\u127b\u127e\7\u00a9\2\2\u127c\u127e\7\u027a\2\2\u127d\u1252\3\2\2"+
		"\2\u127d\u1256\3\2\2\2\u127d\u125a\3\2\2\2\u127d\u1263\3\2\2\2\u127d\u1264"+
		"\3\2\2\2\u127d\u1265\3\2\2\2\u127d\u1266\3\2\2\2\u127d\u1267\3\2\2\2\u127d"+
		"\u1268\3\2\2\2\u127d\u126a\3\2\2\2\u127d\u126b\3\2\2\2\u127d\u126c\3\2"+
		"\2\2\u127d\u126e\3\2\2\2\u127d\u126f\3\2\2\2\u127d\u1270\3\2\2\2\u127d"+
		"\u1271\3\2\2\2\u127d\u1272\3\2\2\2\u127d\u1274\3\2\2\2\u127d\u1275\3\2"+
		"\2\2\u127d\u1277\3\2\2\2\u127d\u1278\3\2\2\2\u127d\u1279\3\2\2\2\u127d"+
		"\u127a\3\2\2\2\u127d\u127b\3\2\2\2\u127d\u127c\3\2\2\2\u127e\u01a1\3\2"+
		"\2\2\u127f\u1290\7\u03ef\2\2\u1280\u1281\7\u03ef\2\2\u1281\u1282\7\u03ff"+
		"\2\2\u1282\u1290\7\u03ef\2\2\u1283\u1284\5\u020c\u0107\2\u1284\u1285\7"+
		"\u03ff\2\2\u1285\u1286\7\u03ef\2\2\u1286\u1290\3\2\2\2\u1287\u1288\5\u020c"+
		"\u0107\2\u1288\u1289\7\u03ff\2\2\u1289\u128a\5\u020c\u0107\2\u128a\u1290"+
		"\3\2\2\2\u128b\u128c\5\u020c\u0107\2\u128c\u128d\5\u0210\u0109\2\u128d"+
		"\u1290\3\2\2\2\u128e\u1290\5\u020c\u0107\2\u128f\u127f\3\2\2\2\u128f\u1280"+
		"\3\2\2\2\u128f\u1283\3\2\2\2\u128f\u1287\3\2\2\2\u128f\u128b\3\2\2\2\u128f"+
		"\u128e\3\2\2\2\u1290\u01a3\3\2\2\2\u1291\u1292\5\u01fa\u00fe\2\u1292\u1293"+
		"\7\u009f\2\2\u1293\u1294\5\u01fa\u00fe\2\u1294\u01a5\3\2\2\2\u1295\u1297"+
		"\7\13\2\2\u1296\u1298\t@\2\2\u1297\u1296\3\2\2\2\u1297\u1298\3\2\2\2\u1298"+
		"\u1299\3\2\2\2\u1299\u129a\7\u009c\2\2\u129a\u129b\5\u022e\u0118\2\u129b"+
		"\u01a7\3\2\2\2\u129c\u129d\7\31\2\2\u129d\u129e\7\u009c\2\2\u129e\u12a2"+
		"\5\u022e\u0118\2\u129f\u12a1\5\u01b0\u00d9\2\u12a0\u129f\3\2\2\2\u12a1"+
		"\u12a4\3\2\2\2\u12a2\u12a0\3\2\2\2\u12a2\u12a3\3\2\2\2\u12a3\u01a9\3\2"+
		"\2\2\u12a4\u12a2\3\2\2\2\u12a5\u12a6\7\u0128\2\2\u12a6\u12a7\7\u009c\2"+
		"\2\u12a7\u12a9\5\u022e\u0118\2\u12a8\u12aa\tA\2\2\u12a9\u12a8\3\2\2\2"+
		"\u12a9\u12aa\3\2\2\2\u12aa\u01ab\3\2\2\2\u12ab\u12ad\7m\2\2\u12ac\u12ae"+
		"\t@\2\2\u12ad\u12ac\3\2\2\2\u12ad\u12ae\3\2\2\2\u12ae\u12af\3\2\2\2\u12af"+
		"\u12b0\7\u009c\2\2\u12b0\u12b1\5\u022e\u0118\2\u12b1\u01ad\3\2\2\2\u12b2"+
		"\u12b4\7\u01f2\2\2\u12b3\u12b5\t@\2\2\u12b4\u12b3\3\2\2\2\u12b4\u12b5"+
		"\3\2\2\2\u12b5\u12b6\3\2\2\2\u12b6\u12b7\7\u009c\2\2\u12b7\u12b9\5\u022e"+
		"\u0118\2\u12b8\u12ba\7\u01e7\2\2\u12b9\u12b8\3\2\2\2\u12b9\u12ba\3\2\2"+
		"\2\u12ba\u12bc\3\2\2\2\u12bb\u12bd\7\u0165\2\2\u12bc\u12bb\3\2\2\2\u12bc"+
		"\u12bd\3\2\2\2\u12bd\u12bf\3\2\2\2\u12be\u12c0\7\u0241\2\2\u12bf\u12be"+
		"\3\2\2\2\u12bf\u12c0\3\2\2\2\u12c0\u01af\3\2\2\2\u12c1\u12c2\7<\2\2\u12c2"+
		"\u12c9\7\u023f\2\2\u12c3\u12c9\7\u01e7\2\2\u12c4\u12c9\7\u0167\2\2\u12c5"+
		"\u12c9\7\u01b2\2\2\u12c6\u12c9\7\u0165\2\2\u12c7\u12c9\7\u0126\2\2\u12c8"+
		"\u12c1\3\2\2\2\u12c8\u12c3\3\2\2\2\u12c8\u12c4\3\2\2\2\u12c8\u12c5\3\2"+
		"\2\2\u12c8\u12c6\3\2\2\2\u12c8\u12c7\3\2\2\2\u12c9\u01b1\3\2\2\2\u12ca"+
		"\u12cc\7 \2\2\u12cb\u12cd\7\u0113\2\2\u12cc\u12cb\3\2\2\2\u12cc\u12cd"+
		"\3\2\2\2\u12cd\u12ce\3\2\2\2\u12ce\u12cf\7\u0172\2\2\u12cf\u12d0\5\u020c"+
		"\u0107\2\u12d0\u12d1\7\u01fe\2\2\u12d1\u12d2\tB\2\2\u12d2\u12d3\7\u0214"+
		"\2\2\u12d3\u12d4\7\u040f\2\2\u12d4\u01b3\3\2\2\2\u12d5\u12d6\7\u0183\2"+
		"\2\u12d6\u12d7\7\u01da\2\2\u12d7\u12d8\5\u020c\u0107\2\u12d8\u12d9\7\u0214"+
		"\2\2\u12d9\u12da\7\u040f\2\2\u12da\u01b5\3\2\2\2\u12db\u12dc\7\u023c\2"+
		"\2\u12dc\u12dd\7\u01da\2\2\u12dd\u12de\5\u020c\u0107\2\u12de\u01b7\3\2"+
		"\2\2\u12df\u12e0\7\u008c\2\2\u12e0\u12e1\5\u01bc\u00df\2\u12e1\u12e2\t"+
		"C\2\2\u12e2\u12ea\5\u025c\u012f\2\u12e3\u12e4\7\u0402\2\2\u12e4\u12e5"+
		"\5\u01bc\u00df\2\u12e5\u12e6\tC\2\2\u12e6\u12e7\5\u025c\u012f\2\u12e7"+
		"\u12e9\3\2\2\2\u12e8\u12e3\3\2\2\2\u12e9\u12ec\3\2\2\2\u12ea\u12e8\3\2"+
		"\2\2\u12ea\u12eb\3\2\2\2\u12eb\u1313\3\2\2\2\u12ec\u12ea\3\2\2\2\u12ed"+
		"\u12f1\7\u008c\2\2\u12ee\u12ef\7\30\2\2\u12ef\u12f2\7\u008c\2\2\u12f0"+
		"\u12f2\7\u02df\2\2\u12f1\u12ee\3\2\2\2\u12f1\u12f0\3\2\2\2\u12f2\u12f5"+
		"\3\2\2\2\u12f3\u12f6\5\u01fe\u0100\2\u12f4\u12f6\7(\2\2\u12f5\u12f3\3"+
		"\2\2\2\u12f5\u12f4\3\2\2\2\u12f6\u1313\3\2\2\2\u12f7\u12f8\7\u008c\2\2"+
		"\u12f8\u12ff\7\u01bf\2\2\u12f9\u12fc\5\u01fe\u0100\2\u12fa\u12fb\7\32"+
		"\2\2\u12fb\u12fd\5\u0200\u0101\2\u12fc\u12fa\3\2\2\2\u12fc\u12fd\3\2\2"+
		"\2\u12fd\u1300\3\2\2\2\u12fe\u1300\7(\2\2\u12ff\u12f9\3\2\2\2\u12ff\u12fe"+
		"\3\2\2\2\u1300\u1313\3\2\2\2\u1301\u1313\5\u0190\u00c9\2\u1302\u1313\5"+
		"\u0114\u008b\2\u1303\u1313\5\u0112\u008a\2\u1304\u1305\7\u008c\2\2\u1305"+
		"\u1306\5\u01f2\u00fa\2\u1306\u1307\tC\2\2\u1307\u130f\5\u025c\u012f\2"+
		"\u1308\u1309\7\u0402\2\2\u1309\u130a\5\u01f2\u00fa\2\u130a\u130b\tC\2"+
		"\2\u130b\u130c\5\u025c\u012f\2\u130c\u130e\3\2\2\2\u130d\u1308\3\2\2\2"+
		"\u130e\u1311\3\2\2\2\u130f\u130d\3\2\2\2\u130f\u1310\3\2\2\2\u1310\u1313"+
		"\3\2\2\2\u1311\u130f\3\2\2\2\u1312\u12df\3\2\2\2\u1312\u12ed\3\2\2\2\u1312"+
		"\u12f7\3\2\2\2\u1312\u1301\3\2\2\2\u1312\u1302\3\2\2\2\u1312\u1303\3\2"+
		"\2\2\u1312\u1304\3\2\2\2\u1313\u01b9\3\2\2\2\u1314\u1315\7\u008e\2\2\u1315"+
		"\u1316\t\62\2\2\u1316\u13ac\7\u0196\2\2\u1317\u1318\7\u008e\2\2\u1318"+
		"\u1319\tD\2\2\u1319\u131c\7\u015f\2\2\u131a\u131b\7I\2\2\u131b\u131d\7"+
		"\u040f\2\2\u131c\u131a\3\2\2\2\u131c\u131d\3\2\2\2\u131d\u1320\3\2\2\2"+
		"\u131e\u131f\7?\2\2\u131f\u1321\5\u0212\u010a\2\u1320\u131e\3\2\2\2\u1320"+
		"\u1321\3\2\2\2\u1321\u1329\3\2\2\2\u1322\u1326\7[\2\2\u1323\u1324\5\u0212"+
		"\u010a\2\u1324\u1325\7\u0402\2\2\u1325\u1327\3\2\2\2\u1326\u1323\3\2\2"+
		"\2\u1326\u1327\3\2\2\2\u1327\u1328\3\2\2\2\u1328\u132a\5\u0212\u010a\2"+
		"\u1329\u1322\3\2\2\2\u1329\u132a\3\2\2\2\u132a\u13ac\3\2\2\2\u132b\u132c"+
		"\7\u008e\2\2\u132c\u132e\5\u01be\u00e0\2\u132d\u132f\5\u01c0\u00e1\2\u132e"+
		"\u132d\3\2\2\2\u132e\u132f\3\2\2\2\u132f\u13ac\3\2\2\2\u1330\u1332\7\u008e"+
		"\2\2\u1331\u1333\7\u0171\2\2\u1332\u1331\3\2\2\2\u1332\u1333\3\2\2\2\u1333"+
		"\u1334\3\2\2\2\u1334\u1335\t$\2\2\u1335\u1336\tE\2\2\u1336\u1339\5\u01f4"+
		"\u00fb\2\u1337\u1338\tE\2\2\u1338\u133a\5\u020c\u0107\2\u1339\u1337\3"+
		"\2\2\2\u1339\u133a\3\2\2\2\u133a\u133c\3\2\2\2\u133b\u133d\5\u01c0\u00e1"+
		"\2\u133c\u133b\3\2\2\2\u133c\u133d\3\2\2\2\u133d\u13ac\3\2\2\2\u133e\u133f"+
		"\7\u008e\2\2\u133f\u1340\7 \2\2\u1340\u1342\t\2\2\2\u1341\u1343\5\u0246"+
		"\u0124\2\u1342\u1341\3\2\2\2\u1342\u1343\3\2\2\2\u1343\u1344\3\2\2\2\u1344"+
		"\u13ac\5\u020c\u0107\2\u1345\u1346\7\u008e\2\2\u1346\u1347\7 \2\2\u1347"+
		"\u1348\tF\2\2\u1348\u13ac\5\u01f2\u00fa\2\u1349\u134a\7\u008e\2\2\u134a"+
		"\u134b\7 \2\2\u134b\u134c\7\u0240\2\2\u134c\u13ac\5\u01fa\u00fe\2\u134d"+
		"\u134e\7\u008e\2\2\u134e\u134f\7\u0158\2\2\u134f\u1350\5\u0202\u0102\2"+
		"\u1350\u1351\tG\2\2\u1351\u13ac\3\2\2\2\u1352\u1353\7\u008e\2\2\u1353"+
		"\u13ac\5\u01c2\u00e2\2\u1354\u1355\7\u008e\2\2\u1355\u1356\tH\2\2\u1356"+
		"\u135a\7[\2\2\u1357\u1358\5\u0212\u010a\2\u1358\u1359\7\u0402\2\2\u1359"+
		"\u135b\3\2\2\2\u135a\u1357\3\2\2\2\u135a\u135b\3\2\2\2\u135b\u135c\3\2"+
		"\2\2\u135c\u13ac\5\u0212\u010a\2\u135d\u135e\7\u008e\2\2\u135e\u135f\7"+
		"\u00f1\2\2\u135f\u1360\7\u0400\2\2\u1360\u1361\7\u03ef\2\2\u1361\u1362"+
		"\7\u0401\2\2\u1362\u13ac\tH\2\2\u1363\u1364\7\u008e\2\2\u1364\u1367\5"+
		"\u01c4\u00e3\2\u1365\u1366\tE\2\2\u1366\u1368\5\u020c\u0107\2\u1367\u1365"+
		"\3\2\2\2\u1367\u1368\3\2\2\2\u1368\u136a\3\2\2\2\u1369\u136b\5\u01c0\u00e1"+
		"\2\u136a\u1369\3\2\2\2\u136a\u136b\3\2\2\2\u136b\u13ac\3\2\2\2\u136c\u136d"+
		"\7\u008e\2\2\u136d\u136e\tI\2\2\u136e\u136f\7\u012f\2\2\u136f\u13ac\5"+
		"\u01f2\u00fa\2\u1370\u1371\7\u008e\2\2\u1371\u1374\7\u0175\2\2\u1372\u1373"+
		"\7<\2\2\u1373\u1375\5\u01fa\u00fe\2\u1374\u1372\3\2\2\2\u1374\u1375\3"+
		"\2\2\2\u1375\u13ac\3\2\2\2\u1376\u1377\7\u008e\2\2\u1377\u1378\tJ\2\2"+
		"\u1378\u1379\tE\2\2\u1379\u137c\5\u01f4\u00fb\2\u137a\u137b\tE\2\2\u137b"+
		"\u137d\5\u020c\u0107\2\u137c\u137a\3\2\2\2\u137c\u137d\3\2\2\2\u137d\u1380"+
		"\3\2\2\2\u137e\u137f\7\u00ae\2\2\u137f\u1381\5\u025c\u012f\2\u1380\u137e"+
		"\3\2\2\2\u1380\u1381\3\2\2\2\u1381\u13ac\3\2\2\2\u1382\u1383\7\u008e\2"+
		"\2\u1383\u1384\7\u01ce\2\2\u1384\u1387\7\u025e\2\2\u1385\u1386\tE\2\2"+
		"\u1386\u1388\5\u020c\u0107\2\u1387\u1385\3\2\2\2\u1387\u1388\3\2\2\2\u1388"+
		"\u138a\3\2\2\2\u1389\u138b\5\u01c0\u00e1\2\u138a\u1389\3\2\2\2\u138a\u138b"+
		"\3\2\2\2\u138b\u13ac\3\2\2\2\u138c\u138d\7\u008e\2\2\u138d\u138e\7\u01e3"+
		"\2\2\u138e\u1393\5\u01c6\u00e4\2\u138f\u1390\7\u0402\2\2\u1390\u1392\5"+
		"\u01c6\u00e4\2\u1391\u138f\3\2\2\2\u1392\u1395\3\2\2\2\u1393\u1391\3\2"+
		"\2\2\u1393\u1394\3\2\2\2\u1394\u1399\3\2\2\2\u1395\u1393\3\2\2\2\u1396"+
		"\u1397\7<\2\2\u1397\u1398\7\u01e6\2\2\u1398\u139a\5\u0212\u010a\2\u1399"+
		"\u1396\3\2\2\2\u1399\u139a\3\2\2\2\u139a\u139b\3\2\2\2\u139b\u139f\7["+
		"\2\2\u139c\u139d\5\u0212\u010a\2\u139d\u139e\7\u0402\2\2\u139e\u13a0\3"+
		"\2\2\2\u139f\u139c\3\2\2\2\u139f\u13a0\3\2\2\2\u13a0\u13a1\3\2\2\2\u13a1"+
		"\u13a2\5\u0212\u010a\2\u13a2\u13ac\3\2\2\2\u13a3\u13a4\7\u008e\2\2\u13a4"+
		"\u13a5\7\u020f\2\2\u13a5\u13a9\7\u0223\2\2\u13a6\u13a7\7<\2\2\u13a7\u13a8"+
		"\7\u0127\2\2\u13a8\u13aa\7\u040f\2\2\u13a9\u13a6\3\2\2\2\u13a9\u13aa\3"+
		"\2\2\2\u13aa\u13ac\3\2\2\2\u13ab\u1314\3\2\2\2\u13ab\u1317\3\2\2\2\u13ab"+
		"\u132b\3\2\2\2\u13ab\u1330\3\2\2\2\u13ab\u133e\3\2\2\2\u13ab\u1345\3\2"+
		"\2\2\u13ab\u1349\3\2\2\2\u13ab\u134d\3\2\2\2\u13ab\u1352\3\2\2\2\u13ab"+
		"\u1354\3\2\2\2\u13ab\u135d\3\2\2\2\u13ab\u1363\3\2\2\2\u13ab\u136c\3\2"+
		"\2\2\u13ab\u1370\3\2\2\2\u13ab\u1376\3\2\2\2\u13ab\u1382\3\2\2\2\u13ab"+
		"\u138c\3\2\2\2\u13ab\u13a3\3\2\2\2\u13ac\u01bb\3\2\2\2\u13ad\u13b8\7\u041a"+
		"\2\2\u13ae\u13b8\7\u041b\2\2\u13af\u13b0\7\u0404\2\2\u13b0\u13b2\7\u0404"+
		"\2\2\u13b1\u13af\3\2\2\2\u13b1\u13b2\3\2\2\2\u13b2\u13b3\3\2\2\2\u13b3"+
		"\u13b5\tK\2\2\u13b4\u13b1\3\2\2\2\u13b4\u13b5\3\2\2\2\u13b5\u13b6\3\2"+
		"\2\2\u13b6\u13b8\5\u020c\u0107\2\u13b7\u13ad\3\2\2\2\u13b7\u13ae\3\2\2"+
		"\2\u13b7\u13b4\3\2\2\2\u13b8\u01bd\3\2\2\2\u13b9\u13ba\7\30\2\2\u13ba"+
		"\u13c7\7\u008c\2\2\u13bb\u13c7\7\u02e2\2\2\u13bc\u13c7\7&\2\2\u13bd\u13c7"+
		"\7\u008a\2\2\u13be\u13bf\7\u0172\2\2\u13bf\u13c7\7\u0223\2\2\u13c0\u13c1"+
		"\7w\2\2\u13c1\u13c7\7\u0223\2\2\u13c2\u13c4\t\61\2\2\u13c3\u13c2\3\2\2"+
		"\2\u13c3\u13c4\3\2\2\2\u13c4\u13c5\3\2\2\2\u13c5\u13c7\tL\2\2\u13c6\u13b9"+
		"\3\2\2\2\u13c6\u13bb\3\2\2\2\u13c6\u13bc\3\2\2\2\u13c6\u13bd\3\2\2\2\u13c6"+
		"\u13be\3\2\2\2\u13c6\u13c0\3\2\2\2\u13c6\u13c3\3\2\2\2\u13c7\u01bf\3\2"+
		"\2\2\u13c8\u13c9\7Z\2\2\u13c9\u13cd\7\u040f\2\2\u13ca\u13cb\7\u00ae\2"+
		"\2\u13cb\u13cd\5\u025c\u012f\2\u13cc\u13c8\3\2\2\2\u13cc\u13ca\3\2\2\2"+
		"\u13cd\u01c1\3\2\2\2\u13ce\u13d0\7\u0225\2\2\u13cf\u13ce\3\2\2\2\u13cf"+
		"\u13d0\3\2\2\2\u13d0\u13d1\3\2\2\2\u13d1\u13e0\7\u0159\2\2\u13d2\u13d3"+
		"\7\u0197\2\2\u13d3\u13e0\7\u0223\2\2\u13d4\u13e0\7\u01dc\2\2\u13d5\u13e0"+
		"\7\u0266\2\2\u13d6\u13d8\7\u0171\2\2\u13d7\u13d6\3\2\2\2\u13d7\u13d8\3"+
		"\2\2\2\u13d8\u13d9\3\2\2\2\u13d9\u13e0\7\u01e2\2\2\u13da\u13e0\7\u01e4"+
		"\2\2\u13db\u13dc\7\u020f\2\2\u13dc\u13e0\7\u017b\2\2\u13dd\u13e0\7\u0117"+
		"\2\2\u13de\u13e0\7\u0141\2\2\u13df\u13cf\3\2\2\2\u13df\u13d2\3\2\2\2\u13df"+
		"\u13d4\3\2\2\2\u13df\u13d5\3\2\2\2\u13df\u13d7\3\2\2\2\u13df\u13da\3\2"+
		"\2\2\u13df\u13db\3\2\2\2\u13df\u13dd\3\2\2\2\u13df\u13de\3\2\2\2\u13e0"+
		"\u01c3\3\2\2\2\u13e1\u13ea\7\u015f\2\2\u13e2\u13e3\7\u009c\2\2\u13e3\u13ea"+
		"\7\u0223\2\2\u13e4\u13e6\7\u0171\2\2\u13e5\u13e4\3\2\2\2\u13e5\u13e6\3"+
		"\2\2\2\u13e6\u13e7\3\2\2\2\u13e7\u13ea\7\u025e\2\2\u13e8\u13ea\7\u0237"+
		"\2\2\u13e9\u13e1\3\2\2\2\u13e9\u13e2\3\2\2\2\u13e9\u13e5\3\2\2\2\u13e9"+
		"\u13e8\3\2\2\2\u13ea\u01c5\3\2\2\2\u13eb\u13f8\7\b\2\2\u13ec\u13ed\7\u011f"+
		"\2\2\u13ed\u13f8\7\u0187\2\2\u13ee\u13ef\7\u0140\2\2\u13ef\u13f8\7\u022e"+
		"\2\2\u13f0\u13f8\7\u0143\2\2\u13f1\u13f8\7\u0189\2\2\u13f2\u13f8\7\u02ae"+
		"\2\2\u13f3\u13f4\7\u01d3\2\2\u13f4\u13f8\7\u0168\2\2\u13f5\u13f8\7\u0216"+
		"\2\2\u13f6\u13f8\7\u022d\2\2\u13f7\u13eb\3\2\2\2\u13f7\u13ec\3\2\2\2\u13f7"+
		"\u13ee\3\2\2\2\u13f7\u13f0\3\2\2\2\u13f7\u13f1\3\2\2\2\u13f7\u13f2\3\2"+
		"\2\2\u13f7\u13f3\3\2\2\2\u13f7\u13f5\3\2\2\2\u13f7\u13f6\3\2\2\2\u13f8"+
		"\u01c7\3\2\2\2\u13f9\u13fa\7\u011d\2\2\u13fa\u13fb\7\u040f\2\2\u13fb\u01c9"+
		"\3\2\2\2\u13fc\u13fd\7\u0123\2\2\u13fd\u13fe\7J\2\2\u13fe\u1403\5\u01d6"+
		"\u00ec\2\u13ff\u1400\7\u0402\2\2\u1400\u1402\5\u01d6\u00ec\2\u1401\u13ff"+
		"\3\2\2\2\u1402\u1405\3\2\2\2\u1403\u1401\3\2\2\2\u1403\u1404\3\2\2\2\u1404"+
		"\u140d\3\2\2\2\u1405\u1403\3\2\2\2\u1406\u1407\7u\2\2\u1407\u140a\7\u0400"+
		"\2\2\u1408\u140b\5\u022c\u0117\2\u1409\u140b\7\b\2\2\u140a\u1408\3\2\2"+
		"\2\u140a\u1409\3\2\2\2\u140b\u140c\3\2\2\2\u140c\u140e\7\u0401\2\2\u140d"+
		"\u1406\3\2\2\2\u140d\u140e\3\2\2\2\u140e\u140f\3\2\2\2\u140f\u1410\7I"+
		"\2\2\u1410\u1411\5\u020c\u0107\2\u1411\u01cb\3\2\2\2\u1412\u1414\7\u016e"+
		"\2\2\u1413\u1415\t@\2\2\u1414\u1413\3\2\2\2\u1414\u1415\3\2\2\2\u1415"+
		"\u1416\3\2\2\2\u1416\u141b\5\u01d8\u00ed\2\u1417\u1418\7\u0402\2\2\u1418"+
		"\u141a\5\u01d8\u00ed\2\u1419\u1417\3\2\2\2\u141a\u141d\3\2\2\2\u141b\u1419"+
		"\3\2\2\2\u141b\u141c\3\2\2\2\u141c\u01cd\3\2\2\2\u141d\u141b\3\2\2\2\u141e"+
		"\u1420\7V\2\2\u141f\u1421\tM\2\2\u1420\u141f\3\2\2\2\u1420\u1421\3\2\2"+
		"\2\u1421\u1423\3\2\2\2\u1422\u1424\5\u0212\u010a\2\u1423\u1422\3\2\2\2"+
		"\u1424\u1425\3\2\2\2\u1425\u1423\3\2\2\2\u1425\u1426\3\2\2\2\u1426\u01cf"+
		"\3\2\2\2\u1427\u1428\7^\2\2\u1428\u1429\7J\2\2\u1429\u142a\7P\2\2\u142a"+
		"\u142b\7\u0123\2\2\u142b\u1430\5\u01dc\u00ef\2\u142c\u142d\7\u0402\2\2"+
		"\u142d\u142f\5\u01dc\u00ef\2\u142e\u142c\3\2\2\2\u142f\u1432\3\2\2\2\u1430"+
		"\u142e\3\2\2\2\u1430\u1431\3\2\2\2\u1431\u01d1\3\2\2\2\u1432\u1430\3\2"+
		"\2\2\u1433\u1434\7\u01fb\2\2\u1434\u1435\7\u01e6\2\2\u1435\u1436\7\u0123"+
		"\2\2\u1436\u01d3\3\2\2\2\u1437\u1438\7\u0264\2\2\u1438\u01d5\3\2\2\2\u1439"+
		"\u1441\5\u01f4\u00fb\2\u143a\u143c\t\24\2\2\u143b\u143a\3\2\2\2\u143b"+
		"\u143c\3\2\2\2\u143c\u143d\3\2\2\2\u143d\u143e\7\u0400\2\2\u143e\u143f"+
		"\5\u022c\u0117\2\u143f\u1440\7\u0401\2\2\u1440\u1442\3\2\2\2\u1441\u143b"+
		"\3\2\2\2\u1441\u1442\3\2\2\2\u1442\u01d7\3\2\2\2\u1443\u1456\7\u014b\2"+
		"\2\u1444\u1456\7\u017b\2\2\u1445\u1447\tN\2\2\u1446\u1445\3\2\2\2\u1446"+
		"\u1447\3\2\2\2\u1447\u1448\3\2\2\2\u1448\u1456\7\u0196\2\2\u1449\u1456"+
		"\7\u01cf\2\2\u144a\u1456\7\u0266\2\2\u144b\u144c\7\u01e6\2\2\u144c\u1456"+
		"\7\u0123\2\2\u144d\u1456\7\u0223\2\2\u144e\u1456\7\u0242\2\2\u144f\u1453"+
		"\7\u025e\2\2\u1450\u1451\7\u00b0\2\2\u1451\u1452\7z\2\2\u1452\u1454\7"+
		"_\2\2\u1453\u1450\3\2\2\2\u1453\u1454\3\2\2\2\u1454\u1456\3\2\2\2\u1455"+
		"\u1443\3\2\2\2\u1455\u1444\3\2\2\2\u1455\u1446\3\2\2\2\u1455\u1449\3\2"+
		"\2\2\u1455\u144a\3\2\2\2\u1455\u144b\3\2\2\2\u1455\u144d\3\2\2\2\u1455"+
		"\u144e\3\2\2\2\u1455\u144f\3\2\2\2\u1456\u1462\3\2\2\2\u1457\u1458\7\u01ec"+
		"\2\2\u1458\u145a\7\u0196\2\2\u1459\u145b\5\u013a\u009e\2\u145a\u1459\3"+
		"\2\2\2\u145a\u145b\3\2\2\2\u145b\u1462\3\2\2\2\u145c\u145d\7\u025e\2\2"+
		"\u145d\u145f\5\u022e\u0118\2\u145e\u1460\5\u01da\u00ee\2\u145f\u145e\3"+
		"\2\2\2\u145f\u1460\3\2\2\2\u1460\u1462\3\2\2\2\u1461\u1455\3\2\2\2\u1461"+
		"\u1457\3\2\2\2\u1461\u145c\3\2\2\2\u1462\u01d9\3\2\2\2\u1463\u1464\7\u00b0"+
		"\2\2\u1464\u1465\7z\2\2\u1465\u1469\7_\2\2\u1466\u1467\7<\2\2\u1467\u1469"+
		"\7\u0164\2\2\u1468\u1463\3\2\2\2\u1468\u1466\3\2\2\2\u1469\u01db\3\2\2"+
		"\2\u146a\u1472\5\u01f4\u00fb\2\u146b\u146c\7u\2\2\u146c\u146f\7\u0400"+
		"\2\2\u146d\u1470\5\u022c\u0117\2\u146e\u1470\7\b\2\2\u146f\u146d\3\2\2"+
		"\2\u146f\u146e\3\2\2\2\u1470\u1471\3\2\2\2\u1471\u1473\7\u0401\2\2\u1472"+
		"\u146b\3\2\2\2\u1472\u1473\3\2\2\2\u1473\u147b\3\2\2\2\u1474\u1476\t\24"+
		"\2\2\u1475\u1474\3\2\2\2\u1475\u1476\3\2\2\2\u1476\u1477\3\2\2\2\u1477"+
		"\u1478\7\u0400\2\2\u1478\u1479\5\u022c\u0117\2\u1479\u147a\7\u0401\2\2"+
		"\u147a\u147c\3\2\2\2\u147b\u1475\3\2\2\2\u147b\u147c\3\2\2\2\u147c\u147f"+
		"\3\2\2\2\u147d\u147e\7H\2\2\u147e\u1480\7\u0190\2\2\u147f\u147d\3\2\2"+
		"\2\u147f\u1480\3\2\2\2\u1480\u01dd\3\2\2\2\u1481\u1482\tO\2\2\u1482\u1485"+
		"\5\u01f4\u00fb\2\u1483\u1486\5\u020c\u0107\2\u1484\u1486\7\u040f\2\2\u1485"+
		"\u1483\3\2\2\2\u1485\u1484\3\2\2\2\u1485\u1486\3\2\2\2\u1486\u01df\3\2"+
		"\2\2\u1487\u148b\tO\2\2\u1488\u1489\tP\2\2\u1489\u148a\7\u03f7\2\2\u148a"+
		"\u148c\tQ\2\2\u148b\u1488\3\2\2\2\u148b\u148c\3\2\2\2\u148c\u148d\3\2"+
		"\2\2\u148d\u148e\5\u01f0\u00f9\2\u148e\u01e1\3\2\2\2\u148f\u1490\7\u0179"+
		"\2\2\u1490\u1491\7\u040f\2\2\u1491\u01e3\3\2\2\2\u1492\u1493\7\u00aa\2"+
		"\2\u1493\u1494\5\u020c\u0107\2\u1494\u01e5\3\2\2\2\u1495\u149d\7\u008f"+
		"\2\2\u1496\u1498\7\u0093\2\2\u1497\u1499\7\u0244\2\2\u1498\u1497\3\2\2"+
		"\2\u1498\u1499\3\2\2\2\u1499\u149a\3\2\2\2\u149a\u149e\5\u0216\u010c\2"+
		"\u149b\u149e\7\u0417\2\2\u149c\u149e\7\u0418\2\2\u149d\u1496\3\2\2\2\u149d"+
		"\u149b\3\2\2\2\u149d\u149c\3\2\2\2\u149e\u14a8\3\2\2\2\u149f\u14a0\7\u008c"+
		"\2\2\u14a0\u14a5\5\u01ea\u00f6\2\u14a1\u14a2\7\u0402\2\2\u14a2\u14a4\5"+
		"\u01ea\u00f6\2\u14a3\u14a1\3\2\2\2\u14a4\u14a7\3\2\2\2\u14a5\u14a3\3\2"+
		"\2\2\u14a5\u14a6\3\2\2\2\u14a6\u14a9\3\2\2\2\u14a7\u14a5\3\2\2\2\u14a8"+
		"\u149f\3\2\2\2\u14a8\u14a9\3\2\2\2\u14a9\u01e7\3\2\2\2\u14aa\u14b2\7\u0083"+
		"\2\2\u14ab\u14ad\7\u0093\2\2\u14ac\u14ae\7\u0244\2\2\u14ad\u14ac\3\2\2"+
		"\2\u14ad\u14ae\3\2\2\2\u14ae\u14af\3\2\2\2\u14af\u14b3\5\u0216\u010c\2"+
		"\u14b0\u14b3\7\u0417\2\2\u14b1\u14b3\7\u0418\2\2\u14b2\u14ab\3\2\2\2\u14b2"+
		"\u14b0\3\2\2\2\u14b2\u14b1\3\2\2\2\u14b2\u14b3\3\2\2\2\u14b3\u14bd\3\2"+
		"\2\2\u14b4\u14b5\7\u008c\2\2\u14b5\u14ba\5\u01ea\u00f6\2\u14b6\u14b7\7"+
		"\u0402\2\2\u14b7\u14b9\5\u01ea\u00f6\2\u14b8\u14b6\3\2\2\2\u14b9\u14bc"+
		"\3\2\2\2\u14ba\u14b8\3\2\2\2\u14ba\u14bb\3\2\2\2\u14bb\u14be\3\2\2\2\u14bc"+
		"\u14ba\3\2\2\2\u14bd\u14b4\3\2\2\2\u14bd\u14be\3\2\2\2\u14be\u01e9\3\2"+
		"\2\2\u14bf\u14c0\tR\2\2\u14c0\u14c3\7\u03f7\2\2\u14c1\u14c4\5\u0216\u010c"+
		"\2\u14c2\u14c4\7\u0410\2\2\u14c3\u14c1\3\2\2\2\u14c3\u14c2\3\2\2\2\u14c4"+
		"\u01eb\3\2\2\2\u14c5\u14c7\7B\2\2\u14c6\u14c8\tS\2\2\u14c7\u14c6\3\2\2"+
		"\2\u14c7\u14c8\3\2\2\2\u14c8\u14c9\3\2\2\2\u14c9\u14e9\7.\2\2\u14ca\u14cb"+
		"\5\u01bc\u00df\2\u14cb\u14cc\7\u03f7\2\2\u14cc\u14d4\tT\2\2\u14cd\u14ce"+
		"\7\u0402\2\2\u14ce\u14cf\5\u01bc\u00df\2\u14cf\u14d0\7\u03f7\2\2\u14d0"+
		"\u14d1\tT\2\2\u14d1\u14d3\3\2\2\2\u14d2\u14cd\3\2\2\2\u14d3\u14d6\3\2"+
		"\2\2\u14d4\u14d2\3\2\2\2\u14d4\u14d5\3\2\2\2\u14d5\u14ea\3\2\2\2\u14d6"+
		"\u14d4\3\2\2\2\u14d7\u14da\7\34\2\2\u14d8\u14db\5\u0212\u010a\2\u14d9"+
		"\u14db\5\u01bc\u00df\2\u14da\u14d8\3\2\2\2\u14da\u14d9\3\2\2\2\u14db\u14dc"+
		"\3\2\2\2\u14dc\u14dd\5\u01bc\u00df\2\u14dd\u14de\7\u03f7\2\2\u14de\u14e6"+
		"\5\u01ee\u00f8\2\u14df\u14e0\7\u0402\2\2\u14e0\u14e1\5\u01bc\u00df\2\u14e1"+
		"\u14e2\7\u03f7\2\2\u14e2\u14e3\5\u01ee\u00f8\2\u14e3\u14e5\3\2\2\2\u14e4"+
		"\u14df\3\2\2\2\u14e5\u14e8\3\2\2\2\u14e6\u14e4\3\2\2\2\u14e6\u14e7\3\2"+
		"\2\2\u14e7\u14ea\3\2\2\2\u14e8\u14e6\3\2\2\2\u14e9\u14ca\3\2\2\2\u14e9"+
		"\u14d7\3\2\2\2\u14ea\u01ed\3\2\2\2\u14eb\u14ec\tU\2\2\u14ec\u01ef\3\2"+
		"\2\2\u14ed\u14f3\5\u00b4[\2\u14ee\u14f3\5\u00a6T\2\u14ef\u14f3\5\u00ac"+
		"W\2\u14f0\u14f3\5\u00b2Z\2\u14f1\u14f3\5\u00b6\\\2\u14f2\u14ed\3\2\2\2"+
		"\u14f2\u14ee\3\2\2\2\u14f2\u14ef\3\2\2\2\u14f2\u14f0\3\2\2\2\u14f2\u14f1"+
		"\3\2\2\2\u14f3\u14f8\3\2\2\2\u14f4\u14f5\7<\2\2\u14f5\u14f6\7\u013a\2"+
		"\2\u14f6\u14f8\5\u020c\u0107\2\u14f7\u14f2\3\2\2\2\u14f7\u14f4\3\2\2\2"+
		"\u14f8\u01f1\3\2\2\2\u14f9\u14fd\5\u020c\u0107\2\u14fa\u14fe\7\u0416\2"+
		"\2\u14fb\u14fc\7\u03ff\2\2\u14fc\u14fe\5\u020c\u0107\2\u14fd\u14fa\3\2"+
		"\2\2\u14fd\u14fb\3\2\2\2\u14fd\u14fe\3\2\2\2\u14fe\u01f3\3\2\2\2\u14ff"+
		"\u1500\5\u01f2\u00fa\2\u1500\u01f5\3\2\2\2\u1501\u1506\5\u020c\u0107\2"+
		"\u1502\u1504\5\u0210\u0109\2\u1503\u1505\5\u0210\u0109\2\u1504\u1503\3"+
		"\2\2\2\u1504\u1505\3\2\2\2\u1505\u1507\3\2\2\2\u1506\u1502\3\2\2\2\u1506"+
		"\u1507\3\2\2\2\u1507\u01f7\3\2\2\2\u1508\u150b\5\u020c\u0107\2\u1509\u150b"+
		"\7\u040f\2\2\u150a\u1508\3\2\2\2\u150a\u1509\3\2\2\2\u150b\u1510\3\2\2"+
		"\2\u150c\u150d\7\u0400\2\2\u150d\u150e\5\u0212\u010a\2\u150e\u150f\7\u0401"+
		"\2\2\u150f\u1511\3\2\2\2\u1510\u150c\3\2\2\2\u1510\u1511\3\2\2\2\u1511"+
		"\u1513\3\2\2\2\u1512\u1514\t+\2\2\u1513\u1512\3\2\2\2\u1513\u1514\3\2"+
		"\2\2\u1514\u01f9\3\2\2\2\u1515\u1516\tV\2\2\u1516\u01fb\3\2\2\2\u1517"+
		"\u1518\tW\2\2\u1518\u01fd\3\2\2\2\u1519\u151e\7\u00d2\2\2\u151a\u151e"+
		"\5\u0272\u013a\2\u151b\u151e\7\u040f\2\2\u151c\u151e\7\u040c\2\2\u151d"+
		"\u1519\3\2\2\2\u151d\u151a\3\2\2\2\u151d\u151b\3\2\2\2\u151d\u151c\3\2"+
		"\2\2\u151e\u01ff\3\2\2\2\u151f\u1522\5\u020c\u0107\2\u1520\u1522\7\u040f"+
		"\2\2\u1521\u151f\3\2\2\2\u1521\u1520\3\2\2\2\u1522\u0201\3\2\2\2\u1523"+
		"\u1524\tX\2\2\u1524\u0203\3\2\2\2\u1525\u1526\5\u0212\u010a\2\u1526\u1527"+
		"\7\u03f4\2\2\u1527\u1528\5\u0212\u010a\2\u1528\u1529\7\u03f4\2\2\u1529"+
		"\u152a\5\u0212\u010a\2\u152a\u152b\7\u03f4\2\2\u152b\u152c\5\u0212\u010a"+
		"\2\u152c\u152d\7\u03f4\2\2\u152d\u1533\5\u0212\u010a\2\u152e\u152f\7\u040b"+
		"\2\2\u152f\u1530\5\u0212\u010a\2\u1530\u1531\7\u03f4\2\2\u1531\u1532\5"+
		"\u0212\u010a\2\u1532\u1534\3\2\2\2\u1533\u152e\3\2\2\2\u1534\u1535\3\2"+
		"\2\2\u1535\u1533\3\2\2\2\u1535\u1536\3\2\2\2\u1536\u0205\3\2\2\2\u1537"+
		"\u153e\5\u0208\u0105\2\u1538\u1539\7\u0402\2\2\u1539\u153c\5\u0208\u0105"+
		"\2\u153a\u153b\7\u0402\2\2\u153b\u153d\5\u0212\u010a\2\u153c\u153a\3\2"+
		"\2\2\u153c\u153d\3\2\2\2\u153d\u153f\3\2\2\2\u153e\u1538\3\2\2\2\u153e"+
		"\u153f\3\2\2\2\u153f\u0207\3\2\2\2\u1540\u1548\7\u040f\2\2\u1541\u1548"+
		"\7\u0414\2\2\u1542\u1544\7\u0411\2\2\u1543\u1542\3\2\2\2\u1544\u1545\3"+
		"\2\2\2\u1545\u1543\3\2\2\2\u1545\u1546\3\2\2\2\u1546\u1548\3\2\2\2\u1547"+
		"\u1540\3\2\2\2\u1547\u1541\3\2\2\2\u1547\u1543\3\2\2\2\u1548\u0209\3\2"+
		"\2\2\u1549\u154c\5\u020c\u0107\2\u154a\u154c\7\u040f\2\2\u154b\u1549\3"+
		"\2\2\2\u154b\u154a\3\2\2\2\u154c\u020b\3\2\2\2\u154d\u1551\5\u020e\u0108"+
		"\2\u154e\u1551\7\u0418\2\2\u154f\u1551\7\u040c\2\2\u1550\u154d\3\2\2\2"+
		"\u1550\u154e\3\2\2\2\u1550\u154f\3\2\2\2\u1551\u020d\3\2\2\2\u1552\u155c"+
		"\7\u0417\2\2\u1553\u155c\5\u0272\u013a\2\u1554\u155c\5\u0274\u013b\2\u1555"+
		"\u155c\5\u0202\u0102\2\u1556\u155c\5\u0276\u013c\2\u1557\u155c\5\u0278"+
		"\u013d\2\u1558\u155c\5\u027a\u013e\2\u1559\u155c\5\u027c\u013f\2\u155a"+
		"\u155c\5\u027e\u0140\2\u155b\u1552\3\2\2\2\u155b\u1553\3\2\2\2\u155b\u1554"+
		"\3\2\2\2\u155b\u1555\3\2\2\2\u155b\u1556\3\2\2\2\u155b\u1557\3\2\2\2\u155b"+
		"\u1558\3\2\2\2\u155b\u1559\3\2\2\2\u155b\u155a\3\2\2\2\u155c\u020f\3\2"+
		"\2\2\u155d\u1561\7\u0416\2\2\u155e\u155f\7\u03ff\2\2\u155f\u1561\5\u020c"+
		"\u0107\2\u1560\u155d\3\2\2\2\u1560\u155e\3\2\2\2\u1561\u0211\3\2\2\2\u1562"+
		"\u1563\tY\2\2\u1563\u0213\3\2\2\2\u1564\u1567\7\u040d\2\2\u1565\u1567"+
		"\5\u0212\u010a\2\u1566\u1564\3\2\2\2\u1566\u1565\3\2\2\2\u1567\u0215\3"+
		"\2\2\2\u1568\u156a\7\u0415\2\2\u1569\u1568\3\2\2\2\u1569\u156a\3\2\2\2"+
		"\u156a\u156b\3\2\2\2\u156b\u156e\7\u040f\2\2\u156c\u156e\7\u040e\2\2\u156d"+
		"\u1569\3\2\2\2\u156d\u156c\3\2\2\2\u156e\u1570\3\2\2\2\u156f\u1571\7\u040f"+
		"\2\2\u1570\u156f\3\2\2\2\u1571\u1572\3\2\2\2\u1572\u1570\3\2\2\2\u1572"+
		"\u1573\3\2\2\2\u1573\u1580\3\2\2\2\u1574\u1576\7\u0415\2\2\u1575\u1574"+
		"\3\2\2\2\u1575\u1576\3\2\2\2\u1576\u1577\3\2\2\2\u1577\u157a\7\u040f\2"+
		"\2\u1578\u157a\7\u040e\2\2\u1579\u1575\3\2\2\2\u1579\u1578\3\2\2\2\u157a"+
		"\u157d\3\2\2\2\u157b\u157c\7\32\2\2\u157c\u157e\5\u0200\u0101\2\u157d"+
		"\u157b\3\2\2\2\u157d\u157e\3\2\2\2\u157e\u1580\3\2\2\2\u157f\u156d\3\2"+
		"\2\2\u157f\u1579\3\2\2\2\u1580\u0217\3\2\2\2\u1581\u1582\tZ\2\2\u1582"+
		"\u0219\3\2\2\2\u1583\u1585\7\u0415\2\2\u1584\u1583\3\2\2\2\u1584\u1585"+
		"\3\2\2\2\u1585\u1586\3\2\2\2\u1586\u1587\7\u0411\2\2\u1587\u021b\3\2\2"+
		"\2\u1588\u158a\7h\2\2\u1589\u1588\3\2\2\2\u1589\u158a\3\2\2\2\u158a\u158b"+
		"\3\2\2\2\u158b\u158c\t[\2\2\u158c\u021d\3\2\2\2\u158d\u159a\5\u0216\u010c"+
		"\2\u158e\u159a\5\u0212\u010a\2\u158f\u1590\7\u03f4\2\2\u1590\u159a\5\u0212"+
		"\u010a\2\u1591\u159a\5\u021a\u010e\2\u1592\u159a\5\u0218\u010d\2\u1593"+
		"\u159a\7\u0412\2\2\u1594\u159a\7\u0414\2\2\u1595\u1597\7h\2\2\u1596\u1595"+
		"\3\2\2\2\u1596\u1597\3\2\2\2\u1597\u1598\3\2\2\2\u1598\u159a\t[\2\2\u1599"+
		"\u158d\3\2\2\2\u1599\u158e\3\2\2\2\u1599\u158f\3\2\2\2\u1599\u1591\3\2"+
		"\2\2\u1599\u1592\3\2\2\2\u1599\u1593\3\2\2\2\u1599\u1594\3\2\2\2\u1599"+
		"\u1596\3\2\2\2\u159a\u021f\3\2\2\2\u159b\u159d\t\\\2\2\u159c\u159e\5\u0226"+
		"\u0114\2\u159d\u159c\3\2\2\2\u159d\u159e\3\2\2\2\u159e\u15a0\3\2\2\2\u159f"+
		"\u15a1\7\u00d2\2\2\u15a0\u159f\3\2\2\2\u15a0\u15a1\3\2\2\2\u15a1\u15a8"+
		"\3\2\2\2\u15a2\u15a3\7\30\2\2\u15a3\u15a6\7\u008c\2\2\u15a4\u15a6\7\u02df"+
		"\2\2\u15a5\u15a2\3\2\2\2\u15a5\u15a4\3\2\2\2\u15a6\u15a7\3\2\2\2\u15a7"+
		"\u15a9\5\u01fe\u0100\2\u15a8\u15a5\3\2\2\2\u15a8\u15a9\3\2\2\2\u15a9\u15ac"+
		"\3\2\2\2\u15aa\u15ab\7\32\2\2\u15ab\u15ad\5\u0200\u0101\2\u15ac\u15aa"+
		"\3\2\2\2\u15ac\u15ad\3\2\2\2\u15ad\u1606\3\2\2\2\u15ae\u15af\7\u00d1\2"+
		"\2\u15af\u15b1\t]\2\2\u15b0\u15b2\5\u0226\u0114\2\u15b1\u15b0\3\2\2\2"+
		"\u15b1\u15b2\3\2\2\2\u15b2\u15b4\3\2\2\2\u15b3\u15b5\7\u00d2\2\2\u15b4"+
		"\u15b3\3\2\2\2\u15b4\u15b5\3\2\2\2\u15b5\u1606\3\2\2\2\u15b6\u15b7\7\u01c0"+
		"\2\2\u15b7\u15b9\7\u00cf\2\2\u15b8\u15ba\5\u0226\u0114\2\u15b9\u15b8\3"+
		"\2\2\2\u15b9\u15ba\3\2\2\2\u15ba\u15bc\3\2\2\2\u15bb\u15bd\7\u00d2\2\2"+
		"\u15bc\u15bb\3\2\2\2\u15bc\u15bd\3\2\2\2\u15bd\u1606\3\2\2\2\u15be\u15bf"+
		"\7\u00d1\2\2\u15bf\u15c0\t^\2\2\u15c0\u15c2\7\u00de\2\2\u15c1\u15c3\5"+
		"\u0226\u0114\2\u15c2\u15c1\3\2\2\2\u15c2\u15c3\3\2\2\2\u15c3\u15c5\3\2"+
		"\2\2\u15c4\u15c6\7\u00d2\2\2\u15c5\u15c4\3\2\2\2\u15c5\u15c6\3\2\2\2\u15c6"+
		"\u1606\3\2\2\2\u15c7\u15c9\t_\2\2\u15c8\u15ca\5\u0226\u0114\2\u15c9\u15c8"+
		"\3\2\2\2\u15c9\u15ca\3\2\2\2\u15ca\u15cc\3\2\2\2\u15cb\u15cd\t`\2\2\u15cc"+
		"\u15cb\3\2\2\2\u15cc\u15cd\3\2\2\2\u15cd\u15cf\3\2\2\2\u15ce\u15d0\7\u00b3"+
		"\2\2\u15cf\u15ce\3\2\2\2\u15cf\u15d0\3\2\2\2\u15d0\u1606\3\2\2\2\u15d1"+
		"\u15d3\7\u00c0\2\2\u15d2\u15d4\5\u0228\u0115\2\u15d3\u15d2\3\2\2\2\u15d3"+
		"\u15d4\3\2\2\2\u15d4\u15d6\3\2\2\2\u15d5\u15d7\t`\2\2\u15d6\u15d5\3\2"+
		"\2\2\u15d6\u15d7\3\2\2\2\u15d7\u15d9\3\2\2\2\u15d8\u15da\7\u00b3\2\2\u15d9"+
		"\u15d8\3\2\2\2\u15d9\u15da\3\2\2\2\u15da\u1606\3\2\2\2\u15db\u15dd\7\u00c1"+
		"\2\2\u15dc\u15de\7\u00c2\2\2\u15dd\u15dc\3\2\2\2\u15dd\u15de\3\2\2\2\u15de"+
		"\u15e0\3\2\2\2\u15df\u15e1\5\u0228\u0115\2\u15e0\u15df\3\2\2\2\u15e0\u15e1"+
		"\3\2\2\2\u15e1\u15e3\3\2\2\2\u15e2\u15e4\t`\2\2\u15e3\u15e2\3\2\2\2\u15e3"+
		"\u15e4\3\2\2\2\u15e4\u15e6\3\2\2\2\u15e5\u15e7\7\u00b3\2\2\u15e6\u15e5"+
		"\3\2\2\2\u15e6\u15e7\3\2\2\2\u15e7\u1606\3\2\2\2\u15e8\u15ea\ta\2\2\u15e9"+
		"\u15eb\5\u022a\u0116\2\u15ea\u15e9\3\2\2\2\u15ea\u15eb\3\2\2\2\u15eb\u15ed"+
		"\3\2\2\2\u15ec\u15ee\t`\2\2\u15ed\u15ec\3\2\2\2\u15ed\u15ee\3\2\2\2\u15ee"+
		"\u15f0\3\2\2\2\u15ef\u15f1\7\u00b3\2\2\u15f0\u15ef\3\2\2\2\u15f0\u15f1"+
		"\3\2\2\2\u15f1\u1606\3\2\2\2\u15f2\u1606\tb\2\2\u15f3\u15f5\tc\2\2\u15f4"+
		"\u15f6\5\u0226\u0114\2\u15f5\u15f4\3\2\2\2\u15f5\u15f6\3\2\2\2\u15f6\u1606"+
		"\3\2\2\2\u15f7\u15f8\td\2\2\u15f8\u15fa\5\u0222\u0112\2\u15f9\u15fb\7"+
		"\u00d2\2\2\u15fa\u15f9\3\2\2\2\u15fa\u15fb\3\2\2\2\u15fb\u1602\3\2\2\2"+
		"\u15fc\u15fd\7\30\2\2\u15fd\u1600\7\u008c\2\2\u15fe\u1600\7\u02df\2\2"+
		"\u15ff\u15fc\3\2\2\2\u15ff\u15fe\3\2\2\2\u1600\u1601\3\2\2\2\u1601\u1603"+
		"\5\u01fe\u0100\2\u1602\u15ff\3\2\2\2\u1602\u1603\3\2\2\2\u1603\u1606\3"+
		"\2\2\2\u1604\u1606\te\2\2\u1605\u159b\3\2\2\2\u1605\u15ae\3\2\2\2\u1605"+
		"\u15b6\3\2\2\2\u1605\u15be\3\2\2\2\u1605\u15c7\3\2\2\2\u1605\u15d1\3\2"+
		"\2\2\u1605\u15db\3\2\2\2\u1605\u15e8\3\2\2\2\u1605\u15f2\3\2\2\2\u1605"+
		"\u15f3\3\2\2\2\u1605\u15f7\3\2\2\2\u1605\u1604\3\2\2\2\u1606\u0221\3\2"+
		"\2\2\u1607\u1608\7\u0400\2\2\u1608\u160d\7\u040f\2\2\u1609\u160a\7\u0402"+
		"\2\2\u160a\u160c\7\u040f\2\2\u160b\u1609\3\2\2\2\u160c\u160f\3\2\2\2\u160d"+
		"\u160b\3\2\2\2\u160d\u160e\3\2\2\2\u160e\u1610\3\2\2\2\u160f\u160d\3\2"+
		"\2\2\u1610\u1611\7\u0401\2\2\u1611\u0223\3\2\2\2\u1612\u1614\tf\2\2\u1613"+
		"\u1615\5\u0226\u0114\2\u1614\u1613\3\2\2\2\u1614\u1615\3\2\2\2\u1615\u162c"+
		"\3\2\2\2\u1616\u1618\7\u00ce\2\2\u1617\u1619\5\u0226\u0114\2\u1618\u1617"+
		"\3\2\2\2\u1618\u1619\3\2\2\2\u1619\u1620\3\2\2\2\u161a\u161b\7\30\2\2"+
		"\u161b\u161e\7\u008c\2\2\u161c\u161e\7\u02df\2\2\u161d\u161a\3\2\2\2\u161d"+
		"\u161c\3\2\2\2\u161e\u161f\3\2\2\2\u161f\u1621\5\u01fe\u0100\2\u1620\u161d"+
		"\3\2\2\2\u1620\u1621\3\2\2\2\u1621\u162c\3\2\2\2\u1622\u162c\tg\2\2\u1623"+
		"\u1625\7\u00c6\2\2\u1624\u1626\5\u0228\u0115\2\u1625\u1624\3\2\2\2\u1625"+
		"\u1626\3\2\2\2\u1626\u162c\3\2\2\2\u1627\u1629\t`\2\2\u1628\u162a\7\u00be"+
		"\2\2\u1629\u1628\3\2\2\2\u1629\u162a\3\2\2\2\u162a\u162c\3\2\2\2\u162b"+
		"\u1612\3\2\2\2\u162b\u1616\3\2\2\2\u162b\u1622\3\2\2\2\u162b\u1623\3\2"+
		"\2\2\u162b\u1627\3\2\2\2\u162c\u0225\3\2\2\2\u162d\u162e\7\u0400\2\2\u162e"+
		"\u162f\5\u0212\u010a\2\u162f\u1630\7\u0401\2\2\u1630\u0227\3\2\2\2\u1631"+
		"\u1632\7\u0400\2\2\u1632\u1633\5\u0212\u010a\2\u1633\u1634\7\u0402\2\2"+
		"\u1634\u1635\5\u0212\u010a\2\u1635\u1636\7\u0401\2\2\u1636\u0229\3\2\2"+
		"\2\u1637\u1638\7\u0400\2\2\u1638\u163b\5\u0212\u010a\2\u1639\u163a\7\u0402"+
		"\2\2\u163a\u163c\5\u0212\u010a\2\u163b\u1639\3\2\2\2\u163b\u163c\3\2\2"+
		"\2\u163c\u163d\3\2\2\2\u163d\u163e\7\u0401\2\2\u163e\u022b\3\2\2\2\u163f"+
		"\u1644\5\u020c\u0107\2\u1640\u1641\7\u0402\2\2\u1641\u1643\5\u020c\u0107"+
		"\2\u1642\u1640\3\2\2\2\u1643\u1646\3\2\2\2\u1644\u1642\3\2\2\2\u1644\u1645"+
		"\3\2\2\2\u1645\u022d\3\2\2\2\u1646\u1644\3\2\2\2\u1647\u164c\5\u01f4\u00fb"+
		"\2\u1648\u1649\7\u0402\2\2\u1649\u164b\5\u01f4\u00fb\2\u164a\u1648\3\2"+
		"\2\2\u164b\u164e\3\2\2\2\u164c\u164a\3\2\2\2\u164c\u164d\3\2\2\2\u164d"+
		"\u022f\3\2\2\2\u164e\u164c\3\2\2\2\u164f\u1650\7\u0400\2\2\u1650\u1655"+
		"\5\u01f8\u00fd\2\u1651\u1652\7\u0402\2\2\u1652\u1654\5\u01f8\u00fd\2\u1653"+
		"\u1651\3\2\2\2\u1654\u1657\3\2\2\2\u1655\u1653\3\2\2\2\u1655\u1656\3\2"+
		"\2\2\u1656\u1658\3\2\2\2\u1657\u1655\3\2\2\2\u1658\u1659\7\u0401\2\2\u1659"+
		"\u0231\3\2\2\2\u165a\u165f\5\u025c\u012f\2\u165b\u165c\7\u0402\2\2\u165c"+
		"\u165e\5\u025c\u012f\2\u165d\u165b\3\2\2\2\u165e\u1661\3\2\2\2\u165f\u165d"+
		"\3\2\2\2\u165f\u1660\3\2\2\2\u1660\u0233\3\2\2\2\u1661\u165f\3\2\2\2\u1662"+
		"\u1667\5\u0260\u0131\2\u1663\u1664\7\u0402\2\2\u1664\u1666\5\u0260\u0131"+
		"\2\u1665\u1663\3\2\2\2\u1666\u1669\3\2\2\2\u1667\u1665\3\2\2\2\u1667\u1668"+
		"\3\2\2\2\u1668\u0235\3\2\2\2\u1669\u1667\3\2\2\2\u166a\u166f\5\u0242\u0122"+
		"\2\u166b\u166c\7\u0402\2\2\u166c\u166e\5\u0242\u0122\2\u166d\u166b\3\2"+
		"\2\2\u166e\u1671\3\2\2\2\u166f\u166d\3\2\2\2\u166f\u1670\3\2\2\2\u1670"+
		"\u0237\3\2\2\2\u1671\u166f\3\2\2\2\u1672\u1677\5\u021e\u0110\2\u1673\u1674"+
		"\7\u0402\2\2\u1674\u1676\5\u021e\u0110\2\u1675\u1673\3\2\2\2\u1676\u1679"+
		"\3\2\2\2\u1677\u1675\3\2\2\2\u1677\u1678\3\2\2\2\u1678\u0239\3\2\2\2\u1679"+
		"\u1677\3\2\2\2\u167a\u167f\7\u040f\2\2\u167b\u167c\7\u0402\2\2\u167c\u167e"+
		"\7\u040f\2\2\u167d\u167b\3\2\2\2\u167e\u1681\3\2\2\2\u167f\u167d\3\2\2"+
		"\2\u167f\u1680\3\2\2\2\u1680\u023b\3\2\2\2\u1681\u167f\3\2\2\2\u1682\u1687"+
		"\7\u041a\2\2\u1683\u1684\7\u0402\2\2\u1684\u1686\7\u041a\2\2\u1685\u1683"+
		"\3\2\2\2\u1686\u1689\3\2\2\2\u1687\u1685\3\2\2\2\u1687\u1688\3\2\2\2\u1688"+
		"\u023d\3\2\2\2\u1689\u1687\3\2\2\2\u168a\u1696\7j\2\2\u168b\u168d\5\u0268"+
		"\u0135\2\u168c\u168b\3\2\2\2\u168c\u168d\3\2\2\2\u168d\u168e\3\2\2\2\u168e"+
		"\u1696\5\u021e\u0110\2\u168f\u1693\5\u0240\u0121\2\u1690\u1691\7l\2\2"+
		"\u1691\u1692\7\u00a8\2\2\u1692\u1694\5\u0240\u0121\2\u1693\u1690\3\2\2"+
		"\2\u1693\u1694\3\2\2\2\u1694\u1696\3\2\2\2\u1695\u168a\3\2\2\2\u1695\u168c"+
		"\3\2\2\2\u1695\u168f\3\2\2\2\u1696\u023f\3\2\2\2\u1697\u169d\th\2\2\u1698"+
		"\u169a\7\u0400\2\2\u1699\u169b\5\u0212\u010a\2\u169a\u1699\3\2\2\2\u169a"+
		"\u169b\3\2\2\2\u169b\u169c\3\2\2\2\u169c\u169e\7\u0401\2\2\u169d\u1698"+
		"\3\2\2\2\u169d\u169e\3\2\2\2\u169e\u16a6\3\2\2\2\u169f\u16a0\7\u0107\2"+
		"\2\u16a0\u16a2\7\u0400\2\2\u16a1\u16a3\5\u0212\u010a\2\u16a2\u16a1\3\2"+
		"\2\2\u16a2\u16a3\3\2\2\2\u16a3\u16a4\3\2\2\2\u16a4\u16a6\7\u0401\2\2\u16a5"+
		"\u1697\3\2\2\2\u16a5\u169f\3\2\2\2\u16a6\u0241\3\2\2\2\u16a7\u16aa\5\u025c"+
		"\u012f\2\u16a8\u16aa\7(\2\2\u16a9\u16a7\3\2\2\2\u16a9\u16a8\3\2\2\2\u16aa"+
		"\u0243\3\2\2\2\u16ab\u16ac\7G\2\2\u16ac\u16ad\7\67\2\2\u16ad\u0245\3\2"+
		"\2\2\u16ae\u16af\7G\2\2\u16af\u16b0\7h\2\2\u16b0\u16b1\7\67\2\2\u16b1"+
		"\u0247\3\2\2\2\u16b2\u16c4\5\u024a\u0126\2\u16b3\u16c4\5\u0252\u012a\2"+
		"\u16b4\u16b5\5\u0254\u012b\2\u16b5\u16b7\7\u0400\2\2\u16b6\u16b8\5\u0258"+
		"\u012d\2\u16b7\u16b6\3\2\2\2\u16b7\u16b8\3\2\2\2\u16b8\u16b9\3\2\2\2\u16b9"+
		"\u16ba\7\u0401\2\2\u16ba\u16c4\3\2\2\2\u16bb\u16bc\5\u01f2\u00fa\2\u16bc"+
		"\u16be\7\u0400\2\2\u16bd\u16bf\5\u0258\u012d\2\u16be\u16bd\3\2\2\2\u16be"+
		"\u16bf\3\2\2\2\u16bf\u16c0\3\2\2\2\u16c0\u16c1\7\u0401\2\2\u16c1\u16c4"+
		"\3\2\2\2\u16c2\u16c4\5\u0256\u012c\2\u16c3\u16b2\3\2\2\2\u16c3\u16b3\3"+
		"\2\2\2\u16c3\u16b4\3\2\2\2\u16c3\u16bb\3\2\2\2\u16c3\u16c2\3\2\2\2\u16c4"+
		"\u0249\3\2\2\2\u16c5\u1763\ti\2\2\u16c6\u16c7\7\37\2\2\u16c7\u16c8\7\u0400"+
		"\2\2\u16c8\u16c9\5\u025c\u012f\2\u16c9\u16ca\7\u0402\2\2\u16ca\u16cb\5"+
		"\u0224\u0113\2\u16cb\u16cc\7\u0401\2\2\u16cc\u1763\3\2\2\2\u16cd\u16ce"+
		"\7\37\2\2\u16ce\u16cf\7\u0400\2\2\u16cf\u16d0\5\u025c\u012f\2\u16d0\u16d1"+
		"\7\u00ab\2\2\u16d1\u16d2\5\u01fe\u0100\2\u16d2\u16d3\7\u0401\2\2\u16d3"+
		"\u1763\3\2\2\2\u16d4\u16d5\7\26\2\2\u16d5\u16d6\7\u0400\2\2\u16d6\u16d7"+
		"\5\u025c\u012f\2\u16d7\u16d8\7\r\2\2\u16d8\u16d9\5\u0224\u0113\2\u16d9"+
		"\u16da\7\u0401\2\2\u16da\u1763\3\2\2\2\u16db\u16dc\7\u00ac\2\2\u16dc\u16dd"+
		"\7\u0400\2\2\u16dd\u16de\5\u01f6\u00fc\2\u16de\u16df\7\u0401\2\2\u16df"+
		"\u1763\3\2\2\2\u16e0\u16e1\7\25\2\2\u16e1\u16e3\5\u025c\u012f\2\u16e2"+
		"\u16e4\5\u024c\u0127\2\u16e3\u16e2\3\2\2\2\u16e4\u16e5\3\2\2\2\u16e5\u16e3"+
		"\3\2\2\2\u16e5\u16e6\3\2\2\2\u16e6\u16e9\3\2\2\2\u16e7\u16e8\7\63\2\2"+
		"\u16e8\u16ea\5\u025a\u012e\2\u16e9\u16e7\3\2\2\2\u16e9\u16ea\3\2\2\2\u16ea"+
		"\u16eb\3\2\2\2\u16eb\u16ec\7\u0156\2\2\u16ec\u1763\3\2\2\2\u16ed\u16ef"+
		"\7\25\2\2\u16ee\u16f0\5\u024c\u0127\2\u16ef\u16ee\3\2\2\2\u16f0\u16f1"+
		"\3\2\2\2\u16f1\u16ef\3\2\2\2\u16f1\u16f2\3\2\2\2\u16f2\u16f5\3\2\2\2\u16f3"+
		"\u16f4\7\63\2\2\u16f4\u16f6\5\u025a\u012e\2\u16f5\u16f3\3\2\2\2\u16f5"+
		"\u16f6\3\2\2\2\u16f6\u16f7\3\2\2\2\u16f7\u16f8\7\u0156\2\2\u16f8\u1763"+
		"\3\2\2\2\u16f9\u16fa\7\u00ce\2\2\u16fa\u16fb\7\u0400\2\2\u16fb\u16fe\5"+
		"\u0258\u012d\2\u16fc\u16fd\7\u00ab\2\2\u16fd\u16ff\5\u01fe\u0100\2\u16fe"+
		"\u16fc\3\2\2\2\u16fe\u16ff\3\2\2\2\u16ff\u1700\3\2\2\2\u1700\u1701\7\u0401"+
		"\2\2\u1701\u1763\3\2\2\2\u1702\u1703\7\u0108\2\2\u1703\u1706\7\u0400\2"+
		"\2\u1704\u1707\5\u0216\u010c\2\u1705\u1707\5\u025c\u012f\2\u1706\u1704"+
		"\3\2\2\2\u1706\u1705\3\2\2\2\u1707\u1708\3\2\2\2\u1708\u170b\7I\2\2\u1709"+
		"\u170c\5\u0216\u010c\2\u170a\u170c\5\u025c\u012f\2\u170b\u1709\3\2\2\2"+
		"\u170b\u170a\3\2\2\2\u170c\u170d\3\2\2\2\u170d\u170e\7\u0401\2\2\u170e"+
		"\u1763\3\2\2\2\u170f\u1710\tj\2\2\u1710\u1713\7\u0400\2\2\u1711\u1714"+
		"\5\u0216\u010c\2\u1712\u1714\5\u025c\u012f\2\u1713\u1711\3\2\2\2\u1713"+
		"\u1712\3\2\2\2\u1714\u1715\3\2\2\2\u1715\u1718\7?\2\2\u1716\u1719\5\u0212"+
		"\u010a\2\u1717\u1719\5\u025c\u012f\2\u1718\u1716\3\2\2\2\u1718\u1717\3"+
		"\2\2\2\u1719\u171f\3\2\2\2\u171a\u171d\7<\2\2\u171b\u171e\5\u0212\u010a"+
		"\2\u171c\u171e\5\u025c\u012f\2\u171d\u171b\3\2\2\2\u171d\u171c\3\2\2\2"+
		"\u171e\u1720\3\2\2\2\u171f\u171a\3\2\2\2\u171f\u1720\3\2\2\2\u1720\u1721"+
		"\3\2\2\2\u1721\u1722\7\u0401\2\2\u1722\u1763\3\2\2\2\u1723\u1724\7\u010c"+
		"\2\2\u1724\u1725\7\u0400\2\2\u1725\u1728\tk\2\2\u1726\u1729\5\u0216\u010c"+
		"\2\u1727\u1729\5\u025c\u012f\2\u1728\u1726\3\2\2\2\u1728\u1727\3\2\2\2"+
		"\u1728\u1729\3\2\2\2\u1729\u172a\3\2\2\2\u172a\u172d\7?\2\2\u172b\u172e"+
		"\5\u0216\u010c\2\u172c\u172e\5\u025c\u012f\2\u172d\u172b\3\2\2\2\u172d"+
		"\u172c\3\2\2\2\u172e\u172f\3\2\2\2\u172f\u1730\7\u0401\2\2\u1730\u1763"+
		"\3\2\2\2\u1731\u1732\7\u010c\2\2\u1732\u1735\7\u0400\2\2\u1733\u1736\5"+
		"\u0216\u010c\2\u1734\u1736\5\u025c\u012f\2\u1735\u1733\3\2\2\2\u1735\u1734"+
		"\3\2\2\2\u1736\u1737\3\2\2\2\u1737\u173a\7?\2\2\u1738\u173b\5\u0216\u010c"+
		"\2\u1739\u173b\5\u025c\u012f\2\u173a\u1738\3\2\2\2\u173a\u1739\3\2\2\2"+
		"\u173b\u173c\3\2\2\2\u173c\u173d\7\u0401\2\2\u173d\u1763\3\2\2\2\u173e"+
		"\u173f\7\u03e1\2\2\u173f\u1742\7\u0400\2\2\u1740\u1743\5\u0216\u010c\2"+
		"\u1741\u1743\5\u025c\u012f\2\u1742\u1740\3\2\2\2\u1742\u1741\3\2\2\2\u1743"+
		"\u174a\3\2\2\2\u1744\u1745\7\r\2\2\u1745\u1746\tl\2\2\u1746\u1747\7\u0400"+
		"\2\2\u1747\u1748\5\u0212\u010a\2\u1748\u1749\7\u0401\2\2\u1749\u174b\3"+
		"\2\2\2\u174a\u1744\3\2\2\2\u174a\u174b\3\2\2\2\u174b\u174d\3\2\2\2\u174c"+
		"\u174e\5\u024e\u0128\2\u174d\u174c\3\2\2\2\u174d\u174e\3\2\2\2\u174e\u174f"+
		"\3\2\2\2\u174f\u1750\7\u0401\2\2\u1750\u1763\3\2\2\2\u1751\u1752\7\u0105"+
		"\2\2\u1752\u1753\7\u0400\2\2\u1753\u1754\5<\37\2\u1754\u1757\7?\2\2\u1755"+
		"\u1758\5\u0216\u010c\2\u1756\u1758\5\u025c\u012f\2\u1757\u1755\3\2\2\2"+
		"\u1757\u1756\3\2\2\2\u1758\u1759\3\2\2\2\u1759\u175a\7\u0401\2\2\u175a"+
		"\u1763\3\2\2\2\u175b\u175c\7\u0319\2\2\u175c\u175d\7\u0400\2\2\u175d\u175e"+
		"\tm\2\2\u175e\u175f\7\u0402\2\2\u175f\u1760\5\u0216\u010c\2\u1760\u1761"+
		"\7\u0401\2\2\u1761\u1763\3\2\2\2\u1762\u16c5\3\2\2\2\u1762\u16c6\3\2\2"+
		"\2\u1762\u16cd\3\2\2\2\u1762\u16d4\3\2\2\2\u1762\u16db\3\2\2\2\u1762\u16e0"+
		"\3\2\2\2\u1762\u16ed\3\2\2\2\u1762\u16f9\3\2\2\2\u1762\u1702\3\2\2\2\u1762"+
		"\u170f\3\2\2\2\u1762\u1723\3\2\2\2\u1762\u1731\3\2\2\2\u1762\u173e\3\2"+
		"\2\2\u1762\u1751\3\2\2\2\u1762\u175b\3\2\2\2\u1763\u024b\3\2\2\2\u1764"+
		"\u1765\7\u00ad\2\2\u1765\u1766\5\u025a\u012e\2\u1766\u1767\7\u009e\2\2"+
		"\u1767\u1768\5\u025a\u012e\2\u1768\u024d\3\2\2\2\u1769\u176a\7\u0192\2"+
		"\2\u176a\u176f\5\u0250\u0129\2\u176b\u176c\7\u0402\2\2\u176c\u176e\5\u0250"+
		"\u0129\2\u176d\u176b\3\2\2\2\u176e\u1771\3\2\2\2\u176f\u176d\3\2\2\2\u176f"+
		"\u1770\3\2\2\2\u1770\u1778\3\2\2\2\u1771\u176f\3\2\2\2\u1772\u1773\7\u0192"+
		"\2\2\u1773\u1774\5\u0212\u010a\2\u1774\u1775\7\u03f4\2\2\u1775\u1776\5"+
		"\u0212\u010a\2\u1776\u1778\3\2\2\2\u1777\u1769\3\2\2\2\u1777\u1772\3\2"+
		"\2\2\u1778\u024f\3\2\2\2\u1779\u177b\5\u0212\u010a\2\u177a\u177c\tn\2"+
		"\2\u177b\u177a\3\2\2\2\u177b\u177c\3\2\2\2\u177c\u0251\3\2\2\2\u177d\u177e"+
		"\to\2\2\u177e\u1780\7\u0400\2\2\u177f\u1781\t\'\2\2\u1780\u177f\3\2\2"+
		"\2\u1780\u1781\3\2\2\2\u1781\u1782\3\2\2\2\u1782\u1783\5\u025a\u012e\2"+
		"\u1783\u1784\7\u0401\2\2\u1784\u17b6\3\2\2\2\u1785\u1786\7\u00f1\2\2\u1786"+
		"\u178c\7\u0400\2\2\u1787\u178d\7\u03ef\2\2\u1788\u178a\7\b\2\2\u1789\u1788"+
		"\3\2\2\2\u1789\u178a\3\2\2\2\u178a\u178b\3\2\2\2\u178b\u178d\5\u025a\u012e"+
		"\2\u178c\u1787\3\2\2\2\u178c\u1789\3\2\2\2\u178d\u178e\3\2\2\2\u178e\u17b6"+
		"\7\u0401\2\2\u178f\u1790\7\u00f1\2\2\u1790\u1791\7\u0400\2\2\u1791\u1792"+
		"\7/\2\2\u1792\u1793\5\u0258\u012d\2\u1793\u1794\7\u0401\2\2\u1794\u17b6"+
		"\3\2\2\2\u1795\u1796\tp\2\2\u1796\u1798\7\u0400\2\2\u1797\u1799\7\b\2"+
		"\2\u1798\u1797\3\2\2\2\u1798\u1799\3\2\2\2\u1799\u179a\3\2\2\2\u179a\u179b"+
		"\5\u025a\u012e\2\u179b\u179c\7\u0401\2\2\u179c\u17b6\3\2\2\2\u179d\u179e"+
		"\7\u00f2\2\2\u179e\u17a0\7\u0400\2\2\u179f\u17a1\7/\2\2\u17a0\u179f\3"+
		"\2\2\2\u17a0\u17a1\3\2\2\2\u17a1\u17a2\3\2\2\2\u17a2\u17ad\5\u0258\u012d"+
		"\2\u17a3\u17a4\7q\2\2\u17a4\u17a5\7\22\2\2\u17a5\u17aa\5\u00d2j\2\u17a6"+
		"\u17a7\7\u0402\2\2\u17a7\u17a9\5\u00d2j\2\u17a8\u17a6\3\2\2\2\u17a9\u17ac"+
		"\3\2\2\2\u17aa\u17a8\3\2\2\2\u17aa\u17ab\3\2\2\2\u17ab\u17ae\3\2\2\2\u17ac"+
		"\u17aa\3\2\2\2\u17ad\u17a3\3\2\2\2\u17ad\u17ae\3\2\2\2\u17ae\u17b1\3\2"+
		"\2\2\u17af\u17b0\7\u008d\2\2\u17b0\u17b2\7\u040f\2\2\u17b1\u17af\3\2\2"+
		"\2\u17b1\u17b2\3\2\2\2\u17b2\u17b3\3\2\2\2\u17b3\u17b4\7\u0401\2\2\u17b4"+
		"\u17b6\3\2\2\2\u17b5\u177d\3\2\2\2\u17b5\u1785\3\2\2\2\u17b5\u178f\3\2"+
		"\2\2\u17b5\u1795\3\2\2\2\u17b5\u179d\3\2\2\2\u17b6\u0253\3\2\2\2\u17b7"+
		"\u17cf\5\u027e\u0140\2\u17b8\u17cf\7\u0282\2\2\u17b9\u17cf\7\u0101\2\2"+
		"\u17ba\u17cf\7\u00fd\2\2\u17bb\u17cf\7\u00fe\2\2\u17bc\u17cf\7\u00ff\2"+
		"\2\u17bd\u17cf\7\u0102\2\2\u17be\u17cf\7\u0103\2\2\u17bf\u17cf\7\u0104"+
		"\2\2\u17c0\u17cf\7G\2\2\u17c1\u17cf\7N\2\2\u17c2\u17cf\7\u0100\2\2\u17c3"+
		"\u17cf\7\u0106\2\2\u17c4\u17cf\7\u01b6\2\2\u17c5\u17cf\7\u0107\2\2\u17c6"+
		"\u17cf\7\u0081\2\2\u17c7\u17cf\7\u0109\2\2\u17c8\u17cf\7\u010a\2\2\u17c9"+
		"\u17cf\7\u010b\2\2\u17ca\u17cf\7\u010c\2\2\u17cb\u17cf\7\u010d\2\2\u17cc"+
		"\u17cf\7\u010e\2\2\u17cd\u17cf\7\u010f\2\2\u17ce\u17b7\3\2\2\2\u17ce\u17b8"+
		"\3\2\2\2\u17ce\u17b9\3\2\2\2\u17ce\u17ba\3\2\2\2\u17ce\u17bb\3\2\2\2\u17ce"+
		"\u17bc\3\2\2\2\u17ce\u17bd\3\2\2\2\u17ce\u17be\3\2\2\2\u17ce\u17bf\3\2"+
		"\2\2\u17ce\u17c0\3\2\2\2\u17ce\u17c1\3\2\2\2\u17ce\u17c2\3\2\2\2\u17ce"+
		"\u17c3\3\2\2\2\u17ce\u17c4\3\2\2\2\u17ce\u17c5\3\2\2\2\u17ce\u17c6\3\2"+
		"\2\2\u17ce\u17c7\3\2\2\2\u17ce\u17c8\3\2\2\2\u17ce\u17c9\3\2\2\2\u17ce"+
		"\u17ca\3\2\2\2\u17ce\u17cb\3\2\2\2\u17ce\u17cc\3\2\2\2\u17ce\u17cd\3\2"+
		"\2\2\u17cf\u0255\3\2\2\2\u17d0\u17d1\tq\2\2\u17d1\u17d2\7\u0400\2\2\u17d2"+
		"\u17d3\5\u025a\u012e\2\u17d3\u17d4\7\u0401\2\2\u17d4\u0257\3\2\2\2\u17d5"+
		"\u17da\5\u021e\u0110\2\u17d6\u17da\5\u01f6\u00fc\2\u17d7\u17da\5\u0248"+
		"\u0125\2\u17d8\u17da\5\u025c\u012f\2\u17d9\u17d5\3\2\2\2\u17d9\u17d6\3"+
		"\2\2\2\u17d9\u17d7\3\2\2\2\u17d9\u17d8\3\2\2\2\u17da\u17e4\3\2\2\2\u17db"+
		"\u17e0\7\u0402\2\2\u17dc\u17e1\5\u021e\u0110\2\u17dd\u17e1\5\u01f6\u00fc"+
		"\2\u17de\u17e1\5\u0248\u0125\2\u17df\u17e1\5\u025c\u012f\2\u17e0\u17dc"+
		"\3\2\2\2\u17e0\u17dd\3\2\2\2\u17e0\u17de\3\2\2\2\u17e0\u17df\3\2\2\2\u17e1"+
		"\u17e3\3\2\2\2\u17e2\u17db\3\2\2\2\u17e3\u17e6\3\2\2\2\u17e4\u17e2\3\2"+
		"\2\2\u17e4\u17e5\3\2\2\2\u17e5\u0259\3\2\2\2\u17e6\u17e4\3\2\2\2\u17e7"+
		"\u17ec\5\u021e\u0110\2\u17e8\u17ec\5\u01f6\u00fc\2\u17e9\u17ec\5\u0248"+
		"\u0125\2\u17ea\u17ec\5\u025c\u012f\2\u17eb\u17e7\3\2\2\2\u17eb\u17e8\3"+
		"\2\2\2\u17eb\u17e9\3\2\2\2\u17eb\u17ea\3\2\2\2\u17ec\u025b\3\2\2\2\u17ed"+
		"\u17ee\b\u012f\1\2\u17ee\u17ef\tr\2\2\u17ef\u17f9\5\u025c\u012f\6\u17f0"+
		"\u17f1\5\u025e\u0130\2\u17f1\u17f3\7Q\2\2\u17f2\u17f4\7h\2\2\u17f3\u17f2"+
		"\3\2\2\2\u17f3\u17f4\3\2\2\2\u17f4\u17f5\3\2\2\2\u17f5\u17f6\ts\2\2\u17f6"+
		"\u17f9\3\2\2\2\u17f7\u17f9\5\u025e\u0130\2\u17f8\u17ed\3\2\2\2\u17f8\u17f0"+
		"\3\2\2\2\u17f8\u17f7\3\2\2\2\u17f9\u1800\3\2\2\2\u17fa\u17fb\f\5\2\2\u17fb"+
		"\u17fc\5\u026c\u0137\2\u17fc\u17fd\5\u025c\u012f\6\u17fd\u17ff\3\2\2\2"+
		"\u17fe\u17fa\3\2\2\2\u17ff\u1802\3\2\2\2\u1800\u17fe\3\2\2\2\u1800\u1801"+
		"\3\2\2\2\u1801\u025d\3\2\2\2\u1802\u1800\3\2\2\2\u1803\u1806\b\u0130\1"+
		"\2\u1804\u1805\7\u041a\2\2\u1805\u1807\7\u03e6\2\2\u1806\u1804\3\2\2\2"+
		"\u1806\u1807\3\2\2\2\u1807\u1808\3\2\2\2\u1808\u1809\5\u0266\u0134\2\u1809"+
		"\u1843\3\2\2\2\u180a\u180b\f\t\2\2\u180b\u180c\5\u026a\u0136\2\u180c\u180d"+
		"\5\u025e\u0130\n\u180d\u1842\3\2\2\2\u180e\u1810\f\7\2\2\u180f\u1811\7"+
		"h\2\2\u1810\u180f\3\2\2\2\u1810\u1811\3\2\2\2\u1811\u1812\3\2\2\2\u1812"+
		"\u1813\7\20\2\2\u1813\u1814\5\u025e\u0130\2\u1814\u1815\7\f\2\2\u1815"+
		"\u1816\5\u025e\u0130\b\u1816\u1842\3\2\2\2\u1817\u1818\f\6\2\2\u1818\u1819"+
		"\7\u0215\2\2\u1819\u181a\7Z\2\2\u181a\u1842\5\u025e\u0130\7\u181b\u181d"+
		"\f\4\2\2\u181c\u181e\7h\2\2\u181d\u181c\3\2\2\2\u181d\u181e\3\2\2\2\u181e"+
		"\u181f\3\2\2\2\u181f\u1820\tt\2\2\u1820\u1842\5\u025e\u0130\5\u1821\u1823"+
		"\f\13\2\2\u1822\u1824\7h\2\2\u1823\u1822\3\2\2\2\u1823\u1824\3\2\2\2\u1824"+
		"\u1825\3\2\2\2\u1825\u1826\7I\2\2\u1826\u1829\7\u0400\2\2\u1827\u182a"+
		"\5\u00b4[\2\u1828\u182a\5\u0232\u011a\2\u1829\u1827\3\2\2\2\u1829\u1828"+
		"\3\2\2\2\u182a\u182b\3\2\2\2\u182b\u182c\7\u0401\2\2\u182c\u1842\3\2\2"+
		"\2\u182d\u182e\f\n\2\2\u182e\u182f\7Q\2\2\u182f\u1842\5\u021c\u010f\2"+
		"\u1830\u1831\f\b\2\2\u1831\u1832\5\u026a\u0136\2\u1832\u1833\tu\2\2\u1833"+
		"\u1834\7\u0400\2\2\u1834\u1835\5\u00b4[\2\u1835\u1836\7\u0401\2\2\u1836"+
		"\u1842\3\2\2\2\u1837\u1839\f\5\2\2\u1838\u183a\7h\2\2\u1839\u1838\3\2"+
		"\2\2\u1839\u183a\3\2\2\2\u183a\u183b\3\2\2\2\u183b\u183c\7Z\2\2\u183c"+
		"\u183f\5\u025e\u0130\2\u183d\u183e\7\u015c\2\2\u183e\u1840\7\u040f\2\2"+
		"\u183f\u183d\3\2\2\2\u183f\u1840\3\2\2\2\u1840\u1842\3\2\2\2\u1841\u180a"+
		"\3\2\2\2\u1841\u180e\3\2\2\2\u1841\u1817\3\2\2\2\u1841\u181b\3\2\2\2\u1841"+
		"\u1821\3\2\2\2\u1841\u182d\3\2\2\2\u1841\u1830\3\2\2\2\u1841\u1837\3\2"+
		"\2\2\u1842\u1845\3\2\2\2\u1843\u1841\3\2\2\2\u1843\u1844\3\2\2\2\u1844"+
		"\u025f\3\2\2\2\u1845\u1843\3\2\2\2\u1846\u1847\b\u0131\1\2\u1847\u1848"+
		"\tr\2\2\u1848\u184b\5\u0260\u0131\6\u1849\u184b\5\u0262\u0132\2\u184a"+
		"\u1846\3\2\2\2\u184a\u1849\3\2\2\2\u184b\u1858\3\2\2\2\u184c\u184d\f\5"+
		"\2\2\u184d\u184e\5\u026c\u0137\2\u184e\u184f\5\u0260\u0131\6\u184f\u1857"+
		"\3\2\2\2\u1850\u1851\f\4\2\2\u1851\u1853\7Q\2\2\u1852\u1854\7h\2\2\u1853"+
		"\u1852\3\2\2\2\u1853\u1854\3\2\2\2\u1854\u1855\3\2\2\2\u1855\u1857\ts"+
		"\2\2\u1856\u184c\3\2\2\2\u1856\u1850\3\2\2\2\u1857\u185a\3\2\2\2\u1858"+
		"\u1856\3\2\2\2\u1858\u1859\3\2\2\2\u1859\u0261\3\2\2\2\u185a\u1858\3\2"+
		"\2\2\u185b\u185e\b\u0132\1\2\u185c\u185d\7\u041a\2\2\u185d\u185f\7\u03e6"+
		"\2\2\u185e\u185c\3\2\2\2\u185e\u185f\3\2\2\2\u185f\u1860\3\2\2\2\u1860"+
		"\u1861\5\u0264\u0133\2\u1861\u189b\3\2\2\2\u1862\u1863\f\t\2\2\u1863\u1864"+
		"\5\u026a\u0136\2\u1864\u1865\5\u0262\u0132\n\u1865\u189a\3\2\2\2\u1866"+
		"\u1868\f\7\2\2\u1867\u1869\7h\2\2\u1868\u1867\3\2\2\2\u1868\u1869\3\2"+
		"\2\2\u1869\u186a\3\2\2\2\u186a\u186b\7\20\2\2\u186b\u186c\5\u0262\u0132"+
		"\2\u186c\u186d\7\f\2\2\u186d\u186e\5\u0262\u0132\b\u186e\u189a\3\2\2\2"+
		"\u186f\u1870\f\6\2\2\u1870\u1871\7\u0215\2\2\u1871\u1872\7Z\2\2\u1872"+
		"\u189a\5\u0262\u0132\7\u1873\u1875\f\13\2\2\u1874\u1876\7h\2\2\u1875\u1874"+
		"\3\2\2\2\u1875\u1876\3\2\2\2\u1876\u1877\3\2\2\2\u1877\u1878\7I\2\2\u1878"+
		"\u187b\7\u0400\2\2\u1879\u187c\5\u00b4[\2\u187a\u187c\5\u0234\u011b\2"+
		"\u187b\u1879\3\2\2\2\u187b\u187a\3\2\2\2\u187c\u187d\3\2\2\2\u187d\u187e"+
		"\7\u0401\2\2\u187e\u189a\3\2\2\2\u187f\u1880\f\n\2\2\u1880\u1881\7Q\2"+
		"\2\u1881\u189a\5\u021c\u010f\2\u1882\u1883\f\b\2\2\u1883\u1884\5\u026a"+
		"\u0136\2\u1884\u1885\tu\2\2\u1885\u1886\7\u0400\2\2\u1886\u1887\5\u00b4"+
		"[\2\u1887\u1888\7\u0401\2\2\u1888\u189a\3\2\2\2\u1889\u188b\f\5\2\2\u188a"+
		"\u188c\7h\2\2\u188b\u188a\3\2\2\2\u188b\u188c\3\2\2\2\u188c\u188d\3\2"+
		"\2\2\u188d\u188e\7Z\2\2\u188e\u1891\5\u0262\u0132\2\u188f\u1890\7\u015c"+
		"\2\2\u1890\u1892\7\u040f\2\2\u1891\u188f\3\2\2\2\u1891\u1892\3\2\2\2\u1892"+
		"\u189a\3\2\2\2\u1893\u1895\f\4\2\2\u1894\u1896\7h\2\2\u1895\u1894\3\2"+
		"\2\2\u1895\u1896\3\2\2\2\u1896\u1897\3\2\2\2\u1897\u1898\tt\2\2\u1898"+
		"\u189a\5\u025e\u0130\2\u1899\u1862\3\2\2\2\u1899\u1866\3\2\2\2\u1899\u186f"+
		"\3\2\2\2\u1899\u1873\3\2\2\2\u1899\u187f\3\2\2\2\u1899\u1882\3\2\2\2\u1899"+
		"\u1889\3\2\2\2\u1899\u1893\3\2\2\2\u189a\u189d\3\2\2\2\u189b\u1899\3\2"+
		"\2\2\u189b\u189c\3\2\2\2\u189c\u0263\3\2\2\2\u189d\u189b\3\2\2\2\u189e"+
		"\u189f\b\u0133\1\2\u189f\u18cc\5\u021e\u0110\2\u18a0\u18cc\5\u01f6\u00fc"+
		"\2\u18a1\u18cc\5\u0248\u0125\2\u18a2\u18cc\5\u01fc\u00ff\2\u18a3\u18a4"+
		"\5\u0268\u0135\2\u18a4\u18a5\5\u0264\u0133\13\u18a5\u18cc\3\2\2\2\u18a6"+
		"\u18a7\7\u00d2\2\2\u18a7\u18cc\5\u0264\u0133\n\u18a8\u18a9\7\u0400\2\2"+
		"\u18a9\u18ae\5\u0260\u0131\2\u18aa\u18ab\7\u0402\2\2\u18ab\u18ad\5\u0260"+
		"\u0131\2\u18ac\u18aa\3\2\2\2\u18ad\u18b0\3\2\2\2\u18ae\u18ac\3\2\2\2\u18ae"+
		"\u18af\3\2\2\2\u18af\u18b1\3\2\2\2\u18b0\u18ae\3\2\2\2\u18b1\u18b2\7\u0401"+
		"\2\2\u18b2\u18cc\3\2\2\2\u18b3\u18b4\7\u0203\2\2\u18b4\u18b5\7\u0400\2"+
		"\2\u18b5\u18b8\5\u0260\u0131\2\u18b6\u18b7\7\u0402\2\2\u18b7\u18b9\5\u0260"+
		"\u0131\2\u18b8\u18b6\3\2\2\2\u18b9\u18ba\3\2\2\2\u18ba\u18b8\3\2\2\2\u18ba"+
		"\u18bb\3\2\2\2\u18bb\u18bc\3\2\2\2\u18bc\u18bd\7\u0401\2\2\u18bd\u18cc"+
		"\3\2\2\2\u18be\u18bf\7\67\2\2\u18bf\u18c0\7\u0400\2\2\u18c0\u18c1\5\u00b4"+
		"[\2\u18c1\u18c2\7\u0401\2\2\u18c2\u18cc\3\2\2\2\u18c3\u18c4\7\u0400\2"+
		"\2\u18c4\u18c5\5\u00b4[\2\u18c5\u18c6\7\u0401\2\2\u18c6\u18cc\3\2\2\2"+
		"\u18c7\u18c8\7O\2\2\u18c8\u18c9\5\u0260\u0131\2\u18c9\u18ca\5<\37\2\u18ca"+
		"\u18cc\3\2\2\2\u18cb\u189e\3\2\2\2\u18cb\u18a0\3\2\2\2\u18cb\u18a1\3\2"+
		"\2\2\u18cb\u18a2\3\2\2\2\u18cb\u18a3\3\2\2\2\u18cb\u18a6\3\2\2\2\u18cb"+
		"\u18a8\3\2\2\2\u18cb\u18b3\3\2\2\2\u18cb\u18be\3\2\2\2\u18cb\u18c3\3\2"+
		"\2\2\u18cb\u18c7\3\2\2\2\u18cc\u18da\3\2\2\2\u18cd\u18ce\f\4\2\2\u18ce"+
		"\u18cf\5\u026e\u0138\2\u18cf\u18d0\5\u0264\u0133\5\u18d0\u18d9\3\2\2\2"+
		"\u18d1\u18d2\f\3\2\2\u18d2\u18d3\5\u0270\u0139\2\u18d3\u18d4\5\u0264\u0133"+
		"\4\u18d4\u18d9\3\2\2\2\u18d5\u18d6\f\r\2\2\u18d6\u18d7\7\32\2\2\u18d7"+
		"\u18d9\5\u0200\u0101\2\u18d8\u18cd\3\2\2\2\u18d8\u18d1\3\2\2\2\u18d8\u18d5"+
		"\3\2\2\2\u18d9\u18dc\3\2\2\2\u18da\u18d8\3\2\2\2\u18da\u18db\3\2\2\2\u18db"+
		"\u0265\3\2\2\2\u18dc\u18da\3\2\2\2\u18dd\u18de\b\u0134\1\2\u18de\u190b"+
		"\5\u021e\u0110\2\u18df\u190b\5\u01f6\u00fc\2\u18e0\u190b\5\u0248\u0125"+
		"\2\u18e1\u190b\5\u01fc\u00ff\2\u18e2\u18e3\5\u0268\u0135\2\u18e3\u18e4"+
		"\5\u0266\u0134\13\u18e4\u190b\3\2\2\2\u18e5\u18e6\7\u00d2\2\2\u18e6\u190b"+
		"\5\u0266\u0134\n\u18e7\u18e8\7\u0400\2\2\u18e8\u18ed\5\u025c\u012f\2\u18e9"+
		"\u18ea\7\u0402\2\2\u18ea\u18ec\5\u025c\u012f\2\u18eb\u18e9\3\2\2\2\u18ec"+
		"\u18ef\3\2\2\2\u18ed\u18eb\3\2\2\2\u18ed\u18ee\3\2\2\2\u18ee\u18f0\3\2"+
		"\2\2\u18ef\u18ed\3\2\2\2\u18f0\u18f1\7\u0401\2\2\u18f1\u190b\3\2\2\2\u18f2"+
		"\u18f3\7\u0203\2\2\u18f3\u18f4\7\u0400\2\2\u18f4\u18f7\5\u025c\u012f\2"+
		"\u18f5\u18f6\7\u0402\2\2\u18f6\u18f8\5\u025c\u012f\2\u18f7\u18f5\3\2\2"+
		"\2\u18f8\u18f9\3\2\2\2\u18f9\u18f7\3\2\2\2\u18f9\u18fa\3\2\2\2\u18fa\u18fb"+
		"\3\2\2\2\u18fb\u18fc\7\u0401\2\2\u18fc\u190b\3\2\2\2\u18fd\u18fe\7\67"+
		"\2\2\u18fe\u18ff\7\u0400\2\2\u18ff\u1900\5\u00b4[\2\u1900\u1901\7\u0401"+
		"\2\2\u1901\u190b\3\2\2\2\u1902\u1903\7\u0400\2\2\u1903\u1904\5\u00b4["+
		"\2\u1904\u1905\7\u0401\2\2\u1905\u190b\3\2\2\2\u1906\u1907\7O\2\2\u1907"+
		"\u1908\5\u025c\u012f\2\u1908\u1909\5<\37\2\u1909\u190b\3\2\2\2\u190a\u18dd"+
		"\3\2\2\2\u190a\u18df\3\2\2\2\u190a\u18e0\3\2\2\2\u190a\u18e1\3\2\2\2\u190a"+
		"\u18e2\3\2\2\2\u190a\u18e5\3\2\2\2\u190a\u18e7\3\2\2\2\u190a\u18f2\3\2"+
		"\2\2\u190a\u18fd\3\2\2\2\u190a\u1902\3\2\2\2\u190a\u1906\3\2\2\2\u190b"+
		"\u1919\3\2\2\2\u190c\u190d\f\4\2\2\u190d\u190e\5\u026e\u0138\2\u190e\u190f"+
		"\5\u0266\u0134\5\u190f\u1918\3\2\2\2\u1910\u1911\f\3\2\2\u1911\u1912\5"+
		"\u0270\u0139\2\u1912\u1913\5\u0266\u0134\4\u1913\u1918\3\2\2\2\u1914\u1915"+
		"\f\r\2\2\u1915\u1916\7\32\2\2\u1916\u1918\5\u0200\u0101\2\u1917\u190c"+
		"\3\2\2\2\u1917\u1910\3\2\2\2\u1917\u1914\3\2\2\2\u1918\u191b\3\2\2\2\u1919"+
		"\u1917\3\2\2\2\u1919\u191a\3\2\2\2\u191a\u0267\3\2\2\2\u191b\u1919\3\2"+
		"\2\2\u191c\u191d\tv\2\2\u191d\u0269\3\2\2\2\u191e\u192d\7\u03f7\2\2\u191f"+
		"\u192d\7\u03f8\2\2\u1920\u192d\7\u03f9\2\2\u1921\u1922\7\u03f9\2\2\u1922"+
		"\u192d\7\u03f7\2\2\u1923\u1924\7\u03f8\2\2\u1924\u192d\7\u03f7\2\2\u1925"+
		"\u1926\7\u03f9\2\2\u1926\u192d\7\u03f8\2\2\u1927\u1928\7\u03fa\2\2\u1928"+
		"\u192d\7\u03f7\2\2\u1929\u192a\7\u03f9\2\2\u192a\u192b\7\u03f7\2\2\u192b"+
		"\u192d\7\u03f8\2\2\u192c\u191e\3\2\2\2\u192c\u191f\3\2\2\2\u192c\u1920"+
		"\3\2\2\2\u192c\u1921\3\2\2\2\u192c\u1923\3\2\2\2\u192c\u1925\3\2\2\2\u192c"+
		"\u1927\3\2\2\2\u192c\u1929\3\2\2\2\u192d\u026b\3\2\2\2\u192e\u1936\7\f"+
		"\2\2\u192f\u1930\7\u03fd\2\2\u1930\u1936\7\u03fd\2\2\u1931\u1936\7\u00b2"+
		"\2\2\u1932\u1936\7p\2\2\u1933\u1934\7\u03fc\2\2\u1934\u1936\7\u03fc\2"+
		"\2\u1935\u192e\3\2\2\2\u1935\u192f\3\2\2\2\u1935\u1931\3\2\2\2\u1935\u1932"+
		"\3\2\2\2\u1935\u1933\3\2\2\2\u1936\u026d\3\2\2\2\u1937\u1938\7\u03f9\2"+
		"\2\u1938\u193f\7\u03f9\2\2\u1939\u193a\7\u03f8\2\2\u193a\u193f\7\u03f8"+
		"\2\2\u193b\u193f\7\u03fd\2\2\u193c\u193f\7\u03fe\2\2\u193d\u193f\7\u03fc"+
		"\2\2\u193e\u1937\3\2\2\2\u193e\u1939\3\2\2\2\u193e\u193b\3\2\2\2\u193e"+
		"\u193c\3\2\2\2\u193e\u193d\3\2\2\2\u193f\u026f\3\2\2\2\u1940\u1941\tw"+
		"\2\2\u1941\u0271\3\2\2\2\u1942\u1943\tx\2\2\u1943\u0273\3\2\2\2\u1944"+
		"\u1945\ty\2\2\u1945\u0275\3\2\2\2\u1946\u1947\tz\2\2\u1947\u0277\3\2\2"+
		"\2\u1948\u1949\t{\2\2\u1949\u0279\3\2\2\2\u194a\u194b\t|\2\2\u194b\u027b"+
		"\3\2\2\2\u194c\u194d\t}\2\2\u194d\u027d\3\2\2\2\u194e\u194f\t~\2\2\u194f"+
		"\u027f\3\2\2\2\u03ad\u0281\u0284\u028a\u028d\u0290\u0292\u0297\u029a\u029d"+
		"\u02a6\u02cd\u02d9\u02e4\u02f5\u02fa\u0306\u0321\u032a\u032f\u0335\u033a"+
		"\u033e\u0347\u034a\u034d\u0351\u0358\u035b\u0360\u0368\u036d\u0372\u0375"+
		"\u0377\u0383\u0386\u038a\u038d\u0391\u0394\u0398\u039b\u039e\u03a2\u03a5"+
		"\u03a9\u03af\u03b5\u03bb\u03c2\u03c9\u03cf\u03d5\u03de\u03e3\u03f3\u03fa"+
		"\u03fe\u0408\u040c\u0410\u0414\u0418\u041d\u0420\u0423\u0426\u0429\u042f"+
		"\u0433\u0439\u043e\u0441\u0444\u0446\u0451\u0455\u0458\u0466\u0469\u046d"+
		"\u0470\u0474\u0477\u047b\u047e\u0482\u0485\u0488\u048c\u048f\u0493\u0499"+
		"\u04a6\u04ad\u04b2\u04b5\u04ba\u04c2\u04c8\u04cc\u04cf\u04d4\u04d7\u04db"+
		"\u04de\u04e2\u04e5\u04ed\u04ef\u04f6\u04fc\u0504\u0507\u050e\u0511\u0513"+
		"\u0519\u051f\u0530\u0537\u053e\u0549\u054c\u0559\u0566\u056b\u057b\u0583"+
		"\u058d\u0593\u059d\u05a0\u05a5\u05b2\u05b9\u05be\u05c2\u05c4\u05c9\u05cc"+
		"\u05d2\u05d7\u05d9\u05dd\u05e0\u05e3\u05e9\u05ee\u05f0\u05f5\u05fc\u05fe"+
		"\u0605\u060a\u060e\u0611\u0619\u0621\u0623\u062b\u062f\u0632\u0638\u063d"+
		"\u0640\u0646\u0649\u064d\u0652\u0657\u065b\u0660\u0663\u0667\u066b\u066f"+
		"\u0673\u0678\u067d\u0682\u0688\u068d\u0692\u0698\u069d\u06a2\u06a7\u06ac"+
		"\u06b1\u06b6\u06bb\u06c0\u06c5\u06ca\u06d0\u06d5\u06db\u06e5\u06ec\u06ee"+
		"\u06f6\u06fb\u06fe\u0706\u070c\u071c\u0728\u072a\u072d\u0735\u073b\u0741"+
		"\u074e\u0755\u075d\u0760\u076b\u0773\u0776\u0782\u0789\u0791\u0794\u07a0"+
		"\u07a7\u07af\u07b2\u07b9\u07c1\u07c4\u07c6\u07cb\u07d3\u07dc\u07e0\u07e4"+
		"\u07e9\u07ef\u07f5\u07fa\u07ff\u0804\u0809\u080c\u0811\u0816\u0820\u0824"+
		"\u082b\u0830\u0833\u0838\u083b\u083f\u0843\u084b\u085e\u0861\u0864\u0868"+
		"\u0872\u087f\u0886\u0889\u0892\u0895\u0898\u08a3\u08a6\u08aa\u08b2\u08b5"+
		"\u08ba\u08c2\u08c8\u08cc\u08d0\u08d5\u08da\u08e1\u08e5\u08f0\u08f8\u08fb"+
		"\u0901\u0907\u0909\u090e\u0911\u0917\u091d\u091f\u0923\u0926\u0929\u092f"+
		"\u0935\u0938\u093e\u0944\u0946\u094b\u0953\u0955\u095e\u0963\u096b\u096f"+
		"\u0977\u0981\u0986\u098d\u0991\u0995\u09ad\u09b1\u09bd\u09c0\u09c9\u09da"+
		"\u09e6\u09ed\u09f4\u0a03\u0a10\u0a16\u0a1c\u0a22\u0a28\u0a2e\u0a34\u0a39"+
		"\u0a40\u0a47\u0a4e\u0a53\u0a56\u0a58\u0a66\u0a6d\u0a74\u0a7a\u0a7e\u0a82"+
		"\u0a89\u0a8c\u0a91\u0a98\u0a9f\u0aa3\u0aac\u0ab5\u0abe\u0ac1\u0ac5\u0ace"+
		"\u0ad2\u0ad5\u0ad8\u0ade\u0ae1\u0ae7\u0af0\u0af3\u0afe\u0b01\u0b06\u0b09"+
		"\u0b0e\u0b18\u0b1d\u0b23\u0b25\u0b2b\u0b2d\u0b33\u0b3b\u0b40\u0b48\u0b4b"+
		"\u0b50\u0b53\u0b58\u0b60\u0b68\u0b6e\u0b76\u0b7b\u0b83\u0b86\u0b8a\u0b8d"+
		"\u0b95\u0b9b\u0ba4\u0ba7\u0bab\u0baf\u0bb5\u0bb9\u0bbd\u0bbf\u0bc2\u0bc5"+
		"\u0bc8\u0bce\u0bd2\u0bd5\u0bd8\u0bdb\u0bde\u0be0\u0be4\u0bea\u0bf0\u0bf5"+
		"\u0bf8\u0bfe\u0c02\u0c0a\u0c0e\u0c11\u0c14\u0c1d\u0c21\u0c24\u0c28\u0c2c"+
		"\u0c2f\u0c32\u0c37\u0c3d\u0c41\u0c4b\u0c51\u0c55\u0c5b\u0c5f\u0c65\u0c68"+
		"\u0c74\u0c78\u0c7c\u0c84\u0c88\u0c90\u0c93\u0c97\u0c9a\u0ca2\u0ca7\u0caa"+
		"\u0cad\u0cb1\u0cb4\u0cbd\u0cc2\u0ccb\u0cd0\u0cd7\u0cde\u0ce6\u0ceb\u0cf3"+
		"\u0cf6\u0cf9\u0d00\u0d03\u0d0a\u0d0d\u0d15\u0d1b\u0d26\u0d29\u0d34\u0d3a"+
		"\u0d3e\u0d49\u0d4e\u0d50\u0d54\u0d5e\u0d68\u0d6e\u0d73\u0d76\u0d79\u0d7c"+
		"\u0d82\u0d87\u0d8a\u0d8d\u0d90\u0d92\u0d98\u0d9d\u0da0\u0da3\u0da7\u0dad"+
		"\u0db1\u0dbb\u0dbf\u0dc5\u0dce\u0dd1\u0dd5\u0dd8\u0ddc\u0de0\u0de3\u0de5"+
		"\u0ded\u0df9\u0dff\u0e01\u0e07\u0e09\u0e0b\u0e11\u0e19\u0e21\u0e27\u0e30"+
		"\u0e35\u0e37\u0e3b\u0e3f\u0e45\u0e4c\u0e50\u0e59\u0e5c\u0e60\u0e64\u0e68"+
		"\u0e6b\u0e6e\u0e71\u0e75\u0e79\u0e7c\u0e7f\u0e82\u0e89\u0e8d\u0e9c\u0ea9"+
		"\u0eb1\u0ebb\u0ebf\u0ec2\u0ec8\u0ecb\u0ece\u0ed7\u0ee0\u0eea\u0eee\u0ef8"+
		"\u0f02\u0f0a\u0f0d\u0f16\u0f19\u0f1d\u0f22\u0f26\u0f2f\u0f32\u0f51\u0f54"+
		"\u0f57\u0f8f\u0f94\u0fb0\u0fbe\u0fc5\u0fc9\u0fcf\u0fd7\u0fd9\u0fe4\u0fee"+
		"\u0ff5\u0ffb\u1003\u1008\u1010\u1018\u1020\u1028\u102e\u1031\u1035\u103a"+
		"\u103f\u1045\u1047\u1052\u1057\u105e\u1060\u106e\u1074\u1079\u107e\u1084"+
		"\u108b\u1093\u109b\u10a0\u10a6\u10a9\u10b1\u10b8\u10c1\u10c4\u10d5\u10dd"+
		"\u10e5\u10e9\u10f0\u10f6\u10fe\u1107\u110d\u1114\u111b\u1120\u1123\u1125"+
		"\u112b\u112d\u1131\u1133\u1136\u113f\u1145\u114c\u1153\u1158\u115b\u115d"+
		"\u1163\u1165\u1169\u116b\u116e\u1173\u117a\u1183\u1188\u1191\u1198\u119d"+
		"\u11a0\u11a2\u11a8\u11aa\u11ad\u11b9\u11bf\u11c8\u11d1\u11d6\u11df\u11e5"+
		"\u11f0\u11f3\u11ff\u1206\u120b\u121a\u1225\u1228\u1232\u123c\u1246\u1250"+
		"\u1254\u1258\u1261\u127d\u128f\u1297\u12a2\u12a9\u12ad\u12b4\u12b9\u12bc"+
		"\u12bf\u12c8\u12cc\u12ea\u12f1\u12f5\u12fc\u12ff\u130f\u1312\u131c\u1320"+
		"\u1326\u1329\u132e\u1332\u1339\u133c\u1342\u135a\u1367\u136a\u1374\u137c"+
		"\u1380\u1387\u138a\u1393\u1399\u139f\u13a9\u13ab\u13b1\u13b4\u13b7\u13c3"+
		"\u13c6\u13cc\u13cf\u13d7\u13df\u13e5\u13e9\u13f7\u1403\u140a\u140d\u1414"+
		"\u141b\u1420\u1425\u1430\u143b\u1441\u1446\u1453\u1455\u145a\u145f\u1461"+
		"\u1468\u146f\u1472\u1475\u147b\u147f\u1485\u148b\u1498\u149d\u14a5\u14a8"+
		"\u14ad\u14b2\u14ba\u14bd\u14c3\u14c7\u14d4\u14da\u14e6\u14e9\u14f2\u14f7"+
		"\u14fd\u1504\u1506\u150a\u1510\u1513\u151d\u1521\u1535\u153c\u153e\u1545"+
		"\u1547\u154b\u1550\u155b\u1560\u1566\u1569\u156d\u1572\u1575\u1579\u157d"+
		"\u157f\u1584\u1589\u1596\u1599\u159d\u15a0\u15a5\u15a8\u15ac\u15b1\u15b4"+
		"\u15b9\u15bc\u15c2\u15c5\u15c9\u15cc\u15cf\u15d3\u15d6\u15d9\u15dd\u15e0"+
		"\u15e3\u15e6\u15ea\u15ed\u15f0\u15f5\u15fa\u15ff\u1602\u1605\u160d\u1614"+
		"\u1618\u161d\u1620\u1625\u1629\u162b\u163b\u1644\u164c\u1655\u165f\u1667"+
		"\u166f\u1677\u167f\u1687\u168c\u1693\u1695\u169a\u169d\u16a2\u16a5\u16a9"+
		"\u16b7\u16be\u16c3\u16e5\u16e9\u16f1\u16f5\u16fe\u1706\u170b\u1713\u1718"+
		"\u171d\u171f\u1728\u172d\u1735\u173a\u1742\u174a\u174d\u1757\u1762\u176f"+
		"\u1777\u177b\u1780\u1789\u178c\u1798\u17a0\u17aa\u17ad\u17b1\u17b5\u17ce"+
		"\u17d9\u17e0\u17e4\u17eb\u17f3\u17f8\u1800\u1806\u1810\u181d\u1823\u1829"+
		"\u1839\u183f\u1841\u1843\u184a\u1853\u1856\u1858\u185e\u1868\u1875\u187b"+
		"\u188b\u1891\u1895\u1899\u189b\u18ae\u18ba\u18cb\u18d8\u18da\u18ed\u18f9"+
		"\u190a\u1917\u1919\u192c\u1935\u193e";
	public static final String _serializedATN = Utils.join(
		new String[] {
			_serializedATNSegment0,
			_serializedATNSegment1,
			_serializedATNSegment2
		},
		""
	);
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}