diff --git a/translator/CqlLexer.g4 b/translator/CqlLexer.g4 index 800c34a..530e0d8 100644 --- a/translator/CqlLexer.g4 +++ b/translator/CqlLexer.g4 @@ -25,131 +25,205 @@ options { fragment ALPHA: [A-Z]; -// Keywords (Reference: https://cassandra.apache.org/doc/stable/cassandra/cql/appendices.html#appendix-A) +// Keywords. If a keyword is non-reserved in Cassandra but reserved in Spanner, +// it is marked as reserved. Reference: +// Cassandra: https://cassandra.apache.org/doc/stable/cassandra/cql/appendices.html#appendix-A +// Spanner: https://cloud.google.com/spanner/docs/reference/standard-sql/lexical#reserved_keywords +// // When adding a new keyword, add entry to reservedKeyword or nonReservedKeyword in the CqlParser.g4. -K_ADD : 'ADD'; // reserved -K_AGGREGATE : 'AGGREGATE'; // non-reserved -K_ALL : 'ALL'; // non-reserved -K_ALLOW : 'ALLOW'; // reserved -K_ALTER : 'ALTER'; // reserved -K_AND : 'AND'; // reserved -K_APPLY : 'APPLY'; // reserved -K_AS : 'AS'; // non-reserved -K_ASC : 'ASC'; // reserved -K_ASCII : 'ASCII'; // non-reserved -K_AUTHORIZE : 'AUTHORIZE'; // reserved -K_BATCH : 'BATCH'; // reserved -K_BEGIN : 'BEGIN'; // reserved -K_BIGINT : 'BIGINT'; // non-reserved -K_BLOB : 'BLOB'; // non-reserved -K_BOOLEAN : 'BOOLEAN'; // non-reserved -K_BY : 'BY'; // reserved -K_CALLED : 'CALLED'; // non-reserved -K_CLUSTERING : 'CLUSTERING'; // non-reserved -K_COLUMNFAMILY : 'COLUMNFAMILY'; // reserved -K_COMPACT : 'COMPACT'; // non-reserved -K_CONTAINS : 'CONTAINS'; // non-reserved -K_COUNT : 'COUNT'; // non-reserved -K_COUNTER : 'COUNTER'; // non-reserved -K_CREATE : 'CREATE'; // reserved -K_CUSTOM : 'CUSTOM'; // non-reserved -K_DATE : 'DATE'; // non-reserved -K_DECIMAL : 'DECIMAL'; // non-reserved -K_DELETE : 'DELETE'; // reserved -K_DESC : 'DESC'; // reserved -K_DESCRIBE : 'DESCRIBE'; // reserved -K_DISTINCT : 'DISTINCT'; // non-reserved -K_DOUBLE : 'DOUBLE'; // non-reserved -K_DROP : 'DROP'; // reserved -K_ENTRIES : 'ENTRIES'; // reserved -K_EXECUTE : 'EXECUTE'; // reserved -K_EXISTS : 'EXISTS'; // non-reserved -K_FILTERING : 'FILTERING'; // non-reserved -K_FINALFUNC : 'FINALFUNC'; // non-reserved -K_FLOAT : 'FLOAT'; // non-reserved -K_FROM : 'FROM'; // reserved -K_FROZEN : 'FROZEN'; // non-reserved -K_FULL : 'FULL'; // reserved -K_FUNCTION : 'FUNCTION'; // non-reserved -K_FUNCTIONS : 'FUNCTIONS'; // non-reserved -K_GRANT : 'GRANT'; // reserved -K_IF : 'IF'; // reserved -K_IN : 'IN'; // reserved -K_INDEX : 'INDEX'; // reserved -K_INET : 'INET'; // non-reserved -K_INFINITY : 'INFINITY'; // reserved -K_INITCOND : 'INITCOND'; // non-reserved -K_INPUT : 'INPUT'; // non-reserved -K_INSERT : 'INSERT'; // reserved -K_INT : 'INT'; // non-reserved -K_INTO : 'INTO'; // reserved -K_JSON : 'JSON'; // non-reserved -K_KEY : 'KEY'; // non-reserved -K_KEYS : 'KEYS'; // non-reserved -K_KEYSPACE : 'KEYSPACE'; // reserved -K_KEYSPACES : 'KEYSPACES'; // non-reserved -K_LANGUAGE : 'LANGUAGE'; // non-reserved -K_LIMIT : 'LIMIT'; // reserved -K_LIST : 'LIST'; // non-reserved -K_LOGIN : 'LOGIN'; // non-reserved -K_MAP : 'MAP'; // non-reserved -K_MODIFY : 'MODIFY'; // reserved -K_NAN : 'NAN'; // reserved -K_NOLOGIN : 'NOLOGIN'; // non-reserved -K_NORECURSIVE : 'NORECURSIVE'; // reserved -K_NOSUPERUSER : 'NOSUPERUSER'; // non-reserved -K_NOT : 'NOT'; // reserved -K_NULL : 'NULL'; // reserved -K_OF : 'OF'; // reserved -K_ON : 'ON'; // reserved -K_OPTIONS : 'OPTIONS'; // non-reserved -K_OR : 'OR'; // reserved -K_ORDER : 'ORDER'; // reserved -K_PASSWORD : 'PASSWORD'; // non-reserved -K_PERMISSION : 'PERMISSION'; // non-reserved -K_PERMISSIONS : 'PERMISSIONS'; // non-reserved -K_PRIMARY : 'PRIMARY'; // reserved -K_RENAME : 'RENAME'; // reserved -K_REPLACE : 'REPLACE'; // reserved -K_RETURNS : 'RETURNS'; // non-reserved -K_REVOKE : 'REVOKE'; // reserved -K_ROLE : 'ROLE'; // non-reserved -K_ROLES : 'ROLES'; // non-reserved -K_SCHEMA : 'SCHEMA'; // reserved -K_SELECT : 'SELECT'; // reserved -K_SET : 'SET'; // reserved -K_SFUNC : 'SFUNC'; // non-reserved -K_SMALLINT : 'SMALLINT'; // non-reserved -K_STATIC : 'STATIC'; // non-reserved -K_STORAGE : 'STORAGE'; // non-reserved -K_STYPE : 'STYPE'; // non-reserved -K_SUPERUSER : 'SUPERUSER'; // non-reserved -K_TABLE : 'TABLE'; // reserved -K_TEXT : 'TEXT'; // non-reserved -K_TIME : 'TIME'; // non-reserved -K_TIMESTAMP : 'TIMESTAMP'; // non-reserved -K_TIMEUUID : 'TIMEUUID'; // non-reserved -K_TINYINT : 'TINYINT'; // non-reserved -K_TO : 'TO'; // reserved -K_TOKEN : 'TOKEN'; // reserved -K_TRIGGER : 'TRIGGER'; // non-reserved -K_TRUNCATE : 'TRUNCATE'; // reserved -K_TTL : 'TTL'; // non-reserved -K_TUPLE : 'TUPLE'; // non-reserved -K_TYPE : 'TYPE'; // non-reserved -K_UNLOGGED : 'UNLOGGED'; // reserved -K_UPDATE : 'UPDATE'; // reserved -K_USE : 'USE'; // reserved -K_USER : 'USER'; // non-reserved -K_USERS : 'USERS'; // non-reserved -K_USING : 'USING'; // reserved -K_UUID : 'UUID'; // non-reserved -K_VALUES : 'VALUES'; // non-reserved -K_VARCHAR : 'VARCHAR'; // non-reserved -K_VARINT : 'VARINT'; // non-reserved -K_WHERE : 'WHERE'; // reserved -K_WITH : 'WITH'; // reserved -K_WRITETIME : 'WRITETIME'; // non-reserved +K_ADD : 'ADD'; // reserved +K_AGGREGATE : 'AGGREGATE'; // non-reserved +K_ALL : 'ALL'; // reserved (non-reserved in Cassandra) +K_ALLOW : 'ALLOW'; // reserved +K_ALTER : 'ALTER'; // reserved +K_AND : 'AND'; // reserved +K_ANY : 'ANY'; // reserved +K_APPLY : 'APPLY'; // reserved +K_ARRAY : 'ARRAY'; // reserved +K_AS : 'AS'; // reserved (non-reserved in Cassandra) +K_ASC : 'ASC'; // reserved +K_ASCII : 'ASCII'; // non-reserved +K_ASSERT_ROWS_MODIFIED : 'ASSERT_ROWS_MODIFIED'; // reserved +K_AT : 'AT'; // reserved +K_AUTHORIZE : 'AUTHORIZE'; // reserved +K_BATCH : 'BATCH'; // reserved +K_BEGIN : 'BEGIN'; // reserved +K_BETWEEN : 'BETWEEN'; // reserved +K_BIGINT : 'BIGINT'; // non-reserved +K_BLOB : 'BLOB'; // non-reserved +K_BOOLEAN : 'BOOLEAN'; // non-reserved +K_BY : 'BY'; // reserved +K_CALLED : 'CALLED'; // non-reserved +K_CASE : 'CASE'; // reserved +K_CAST : 'CAST'; // reserved +K_CLUSTERING : 'CLUSTERING'; // non-reserved +K_COLLATE : 'COLLATE'; // reserved +K_COLUMNFAMILY : 'COLUMNFAMILY'; // reserved +K_COMPACT : 'COMPACT'; // non-reserved +K_CONTAINS : 'CONTAINS'; // reserved (non-reserved in Cassandra) +K_COUNT : 'COUNT'; // non-reserved +K_COUNTER : 'COUNTER'; // non-reserved +K_CREATE : 'CREATE'; // reserved +K_CROSS : 'CROSS'; // reserved +K_CUBE : 'CUBE'; // reserved +K_CURRENT : 'CURRENT'; // reserved +K_CUSTOM : 'CUSTOM'; // non-reserved +K_DATE : 'DATE'; // non-reserved +K_DECIMAL : 'DECIMAL'; // non-reserved +K_DEFAULT : 'DEFAULT'; // reserved +K_DEFINE : 'DEFINE'; // reserved +K_DELETE : 'DELETE'; // reserved +K_DESC : 'DESC'; // reserved +K_DESCRIBE : 'DESCRIBE'; // reserved +K_DISTINCT : 'DISTINCT'; // reserved (non-reserved in Cassandra) +K_DOUBLE : 'DOUBLE'; // non-reserved +K_DROP : 'DROP'; // reserved +K_ELSE : 'ELSE'; // reserved +K_END : 'END'; // reserved +K_ENTRIES : 'ENTRIES'; // reserved +K_ENUM : 'ENUM'; // reserved +K_ESCAPE : 'ESCAPE'; // reserved +K_EXCEPT : 'EXCEPT'; // reserved +K_EXCLUDE : 'EXCLUDE'; // reserved +K_EXECUTE : 'EXECUTE'; // reserved +K_EXISTS : 'EXISTS'; // reserved (non-reserved in Cassandra) +K_EXTRACT : 'EXTRACT'; // reserved +K_FALSE : 'FALSE'; // reserved +K_FETCH : 'FETCH'; // reserved +K_FILTERING : 'FILTERING'; // non-reserved +K_FINALFUNC : 'FINALFUNC'; // non-reserved +K_FLOAT : 'FLOAT'; // non-reserved +K_FOLLOWING : 'FOLLOWING'; // reserved +K_FOR : 'FOR'; // reserved +K_FROM : 'FROM'; // reserved +K_FROZEN : 'FROZEN'; // non-reserved +K_FULL : 'FULL'; // reserved +K_FUNCTION : 'FUNCTION'; // non-reserved +K_FUNCTIONS : 'FUNCTIONS'; // non-reserved +K_GRANT : 'GRANT'; // reserved +K_GROUP : 'GROUP'; // reserved +K_GROUPING : 'GROUPING'; // reserved +K_GROUPS : 'GROUPS'; // reserved +K_HASH : 'HASH'; // reserved +K_HAVING : 'HAVING'; // reserved +K_IF : 'IF'; // reserved +K_IGNORE : 'IGNORE'; // reserved +K_IN : 'IN'; // reserved +K_INDEX : 'INDEX'; // reserved +K_INET : 'INET'; // non-reserved +K_INFINITY : 'INFINITY'; // reserved +K_INITCOND : 'INITCOND'; // non-reserved +K_INNER : 'INNER'; // reserved +K_INPUT : 'INPUT'; // non-reserved +K_INSERT : 'INSERT'; // reserved +K_INT : 'INT'; // non-reserved +K_INTERSECT : 'INTERSECT'; // reserved +K_INTERVAL : 'INTERVAL'; // reserved +K_INTO : 'INTO'; // reserved +K_IS : 'IS'; // reserved +K_JOIN : 'JOIN'; // reserved +K_JSON : 'JSON'; // non-reserved +K_KEY : 'KEY'; // non-reserved +K_KEYS : 'KEYS'; // non-reserved +K_KEYSPACE : 'KEYSPACE'; // reserved +K_KEYSPACES : 'KEYSPACES'; // non-reserved +K_LANGUAGE : 'LANGUAGE'; // non-reserved +K_LATERAL : 'LATERAL'; // reserved +K_LEFT : 'LEFT'; // reserved +K_LIKE : 'LIKE'; // reserved +K_LIMIT : 'LIMIT'; // reserved +K_LIST : 'LIST'; // non-reserved +K_LOGIN : 'LOGIN'; // non-reserved +K_LOOKUP : 'LOOKUP'; // reserved +K_MAP : 'MAP'; // non-reserved +K_MERGE : 'MERGE'; // reserved +K_MODIFY : 'MODIFY'; // reserved +K_NAN : 'NAN'; // reserved +K_NATURAL : 'NATURAL'; // reserved +K_NEW : 'NEW'; // reserved +K_NO : 'NO'; // reserved +K_NOLOGIN : 'NOLOGIN'; // non-reserved +K_NORECURSIVE : 'NORECURSIVE'; // reserved +K_NOSUPERUSER : 'NOSUPERUSER'; // non-reserved +K_NOT : 'NOT'; // reserved +K_NULL : 'NULL'; // reserved +K_NULLS : 'NULLS'; // reserved +K_OF : 'OF'; // reserved +K_ON : 'ON'; // reserved +K_OPTIONS : 'OPTIONS'; // non-reserved +K_OR : 'OR'; // reserved +K_ORDER : 'ORDER'; // reserved +K_OUTER : 'OUTER'; // reserved +K_OVER : 'OVER'; // reserved +K_PARTITION : 'PARTITION'; // reserved +K_PASSWORD : 'PASSWORD'; // non-reserved +K_PERMISSION : 'PERMISSION'; // non-reserved +K_PERMISSIONS : 'PERMISSIONS'; // non-reserved +K_PRECEDING : 'PRECEDING'; // reserved +K_PRIMARY : 'PRIMARY'; // reserved +K_PROTO : 'PROTO'; // reserved +K_QUALIFY : 'QUALIFY'; // reserved +K_RANGE : 'RANGE'; // reserved +K_RECURSIVE : 'RECURSIVE'; // reserved +K_RENAME : 'RENAME'; // reserved +K_REPLACE : 'REPLACE'; // reserved +K_RESPECT : 'RESPECT'; // reserved +K_RETURNS : 'RETURNS'; // non-reserved +K_REVOKE : 'REVOKE'; // reserved +K_RIGHT : 'RIGHT'; // reserved +K_ROLE : 'ROLE'; // non-reserved +K_ROLES : 'ROLES'; // non-reserved +K_ROLLUP : 'ROLLUP'; // reserved +K_ROWS : 'ROWS'; // reserved +K_SCHEMA : 'SCHEMA'; // reserved +K_SELECT : 'SELECT'; // reserved +K_SET : 'SET'; // reserved +K_SFUNC : 'SFUNC'; // non-reserved +K_SMALLINT : 'SMALLINT'; // non-reserved +K_SOME : 'SOME'; // reserved +K_STATIC : 'STATIC'; // non-reserved +K_STORAGE : 'STORAGE'; // non-reserved +K_STRUCT : 'STRUCT'; // reserved +K_STYPE : 'STYPE'; // non-reserved +K_SUPERUSER : 'SUPERUSER'; // non-reserved +K_TABLE : 'TABLE'; // reserved +K_TABLESAMPLE : 'TABLESAMPLE'; // reserved +K_TEXT : 'TEXT'; // non-reserved +K_THEN : 'THEN'; // reserved +K_TIME : 'TIME'; // non-reserved +K_TIMESTAMP : 'TIMESTAMP'; // non-reserved +K_TIMEUUID : 'TIMEUUID'; // non-reserved +K_TINYINT : 'TINYINT'; // non-reserved +K_TO : 'TO'; // reserved +K_TOKEN : 'TOKEN'; // reserved +K_TREAT : 'TREAT'; // reserved +K_TRIGGER : 'TRIGGER'; // non-reserved +K_TRUE : 'TRUE'; // reserved +K_TRUNCATE : 'TRUNCATE'; // reserved +K_TTL : 'TTL'; // non-reserved +K_TUPLE : 'TUPLE'; // non-reserved +K_TYPE : 'TYPE'; // non-reserved +K_UNBOUNDED : 'UNBOUNDED'; // reserved +K_UNION : 'UNION'; // reserved +K_UNLOGGED : 'UNLOGGED'; // reserved +K_UNNEST : 'UNNEST'; // reserved +K_UPDATE : 'UPDATE'; // reserved +K_USE : 'USE'; // reserved +K_USER : 'USER'; // non-reserved +K_USERS : 'USERS'; // non-reserved +K_USING : 'USING'; // reserved +K_UUID : 'UUID'; // non-reserved +K_VALUES : 'VALUES'; // non-reserved +K_VARCHAR : 'VARCHAR'; // non-reserved +K_VARINT : 'VARINT'; // non-reserved +K_WHEN : 'WHEN'; // reserved +K_WHERE : 'WHERE'; // reserved +K_WINDOW : 'WINDOW'; // reserved +K_WITH : 'WITH'; // reserved +K_WITHIN : 'WITHIN'; // reserved +K_WRITETIME : 'WRITETIME'; // non-reserved +// The official Cassandra and Spanner appendix does not contain the below +// keywords, although they are recognized as such. K_MATERIALIZED : 'MATERIALIZED'; // reserved K_VIEW : 'VIEW'; // reserved diff --git a/translator/CqlParser.g4 b/translator/CqlParser.g4 index 29799bd..097e40e 100644 --- a/translator/CqlParser.g4 +++ b/translator/CqlParser.g4 @@ -208,68 +208,139 @@ keyword reservedKeyword : K_ADD + | K_ALL | K_ALLOW | K_ALTER | K_AND + | K_ANY | K_APPLY + | K_ARRAY + | K_AS | K_ASC + | K_ASSERT_ROWS_MODIFIED + | K_AT | K_AUTHORIZE | K_BATCH | K_BEGIN + | K_BETWEEN | K_BY + | K_CASE + | K_CAST + | K_COLLATE | K_COLUMNFAMILY + | K_CONTAINS | K_CREATE + | K_CROSS + | K_CUBE + | K_CURRENT + | K_DEFAULT + | K_DEFINE | K_DELETE | K_DESC | K_DESCRIBE + | K_DISTINCT | K_DROP + | K_ELSE + | K_END | K_ENTRIES + | K_ENUM + | K_ESCAPE + | K_EXCEPT + | K_EXCLUDE | K_EXECUTE + | K_EXISTS + | K_EXTRACT + | K_FALSE + | K_FETCH + | K_FOLLOWING + | K_FOR | K_FROM | K_FULL | K_GRANT + | K_GROUP + | K_GROUPING + | K_GROUPS + | K_HASH + | K_HAVING | K_IF + | K_IGNORE | K_IN | K_INDEX | K_INFINITY + | K_INNER | K_INSERT + | K_INTERSECT + | K_INTERVAL | K_INTO + | K_IS + | K_JOIN | K_KEYSPACE + | K_LATERAL + | K_LEFT + | K_LIKE | K_LIMIT + | K_LOOKUP + | K_MATERIALIZED + | K_MERGE | K_MODIFY | K_NAN + | K_NATURAL + | K_NEW + | K_NO | K_NORECURSIVE | K_NOT | K_NULL + | K_NULLS | K_OF | K_ON | K_OR | K_ORDER + | K_OUTER + | K_OVER + | K_PARTITION + | K_PRECEDING | K_PRIMARY + | K_PROTO + | K_QUALIFY + | K_RANGE + | K_RECURSIVE | K_RENAME | K_REPLACE + | K_RESPECT | K_REVOKE + | K_RIGHT + | K_ROLLUP + | K_ROWS | K_SCHEMA | K_SELECT | K_SET + | K_SOME + | K_STRUCT | K_TABLE + | K_TABLESAMPLE + | K_THEN | K_TO | K_TOKEN + | K_TREAT + | K_TRUE | K_TRUNCATE + | K_UNBOUNDED + | K_UNION | K_UNLOGGED + | K_UNNEST | K_UPDATE | K_USE | K_USING + | K_VIEW + | K_WHEN | K_WHERE + | K_WINDOW | K_WITH - | K_MATERIALIZED - | K_VIEW + | K_WITHIN ; nonReservedKeyword : K_AGGREGATE - | K_ALL - | K_AS | K_ASCII | K_BIGINT | K_BLOB @@ -277,15 +348,12 @@ nonReservedKeyword | K_CALLED | K_CLUSTERING | K_COMPACT - | K_CONTAINS | K_COUNT | K_COUNTER | K_CUSTOM | K_DATE | K_DECIMAL - | K_DISTINCT | K_DOUBLE - | K_EXISTS | K_FILTERING | K_FINALFUNC | K_FLOAT diff --git a/translator/cqlparser/CqlLexer.interp b/translator/cqlparser/CqlLexer.interp index c1d2aa9..cad1161 100644 --- a/translator/cqlparser/CqlLexer.interp +++ b/translator/cqlparser/CqlLexer.interp @@ -6,111 +6,176 @@ null 'ALLOW' 'ALTER' 'AND' +'ANY' 'APPLY' +'ARRAY' 'AS' 'ASC' 'ASCII' +'ASSERT_ROWS_MODIFIED' +'AT' 'AUTHORIZE' 'BATCH' 'BEGIN' +'BETWEEN' 'BIGINT' 'BLOB' 'BOOLEAN' 'BY' 'CALLED' +'CASE' +'CAST' 'CLUSTERING' +'COLLATE' 'COLUMNFAMILY' 'COMPACT' 'CONTAINS' 'COUNT' 'COUNTER' 'CREATE' +'CROSS' +'CUBE' +'CURRENT' 'CUSTOM' 'DATE' 'DECIMAL' +'DEFAULT' +'DEFINE' 'DELETE' 'DESC' 'DESCRIBE' 'DISTINCT' 'DOUBLE' 'DROP' +'ELSE' +'END' 'ENTRIES' +'ENUM' +'ESCAPE' +'EXCEPT' +'EXCLUDE' 'EXECUTE' 'EXISTS' +'EXTRACT' +'FALSE' +'FETCH' 'FILTERING' 'FINALFUNC' 'FLOAT' +'FOLLOWING' +'FOR' 'FROM' 'FROZEN' 'FULL' 'FUNCTION' 'FUNCTIONS' 'GRANT' +'GROUP' +'GROUPING' +'GROUPS' +'HASH' +'HAVING' 'IF' +'IGNORE' 'IN' 'INDEX' 'INET' 'INFINITY' 'INITCOND' +'INNER' 'INPUT' 'INSERT' 'INT' +'INTERSECT' +'INTERVAL' 'INTO' +'IS' +'JOIN' 'JSON' 'KEY' 'KEYS' 'KEYSPACE' 'KEYSPACES' 'LANGUAGE' +'LATERAL' +'LEFT' +'LIKE' 'LIMIT' 'LIST' 'LOGIN' +'LOOKUP' 'MAP' +'MERGE' 'MODIFY' 'NAN' +'NATURAL' +'NEW' +'NO' 'NOLOGIN' 'NORECURSIVE' 'NOSUPERUSER' 'NOT' 'NULL' +'NULLS' 'OF' 'ON' 'OPTIONS' 'OR' 'ORDER' +'OUTER' +'OVER' +'PARTITION' 'PASSWORD' 'PERMISSION' 'PERMISSIONS' +'PRECEDING' 'PRIMARY' +'PROTO' +'QUALIFY' +'RANGE' +'RECURSIVE' 'RENAME' 'REPLACE' +'RESPECT' 'RETURNS' 'REVOKE' +'RIGHT' 'ROLE' 'ROLES' +'ROLLUP' +'ROWS' 'SCHEMA' 'SELECT' 'SET' 'SFUNC' 'SMALLINT' +'SOME' 'STATIC' 'STORAGE' +'STRUCT' 'STYPE' 'SUPERUSER' 'TABLE' +'TABLESAMPLE' 'TEXT' +'THEN' 'TIME' 'TIMESTAMP' 'TIMEUUID' 'TINYINT' 'TO' 'TOKEN' +'TREAT' 'TRIGGER' +'TRUE' 'TRUNCATE' 'TTL' 'TUPLE' 'TYPE' +'UNBOUNDED' +'UNION' 'UNLOGGED' +'UNNEST' 'UPDATE' 'USE' 'USER' @@ -120,8 +185,11 @@ null 'VALUES' 'VARCHAR' 'VARINT' +'WHEN' 'WHERE' +'WINDOW' 'WITH' +'WITHIN' 'WRITETIME' 'MATERIALIZED' 'VIEW' @@ -149,111 +217,176 @@ K_ALL K_ALLOW K_ALTER K_AND +K_ANY K_APPLY +K_ARRAY K_AS K_ASC K_ASCII +K_ASSERT_ROWS_MODIFIED +K_AT K_AUTHORIZE K_BATCH K_BEGIN +K_BETWEEN K_BIGINT K_BLOB K_BOOLEAN K_BY K_CALLED +K_CASE +K_CAST K_CLUSTERING +K_COLLATE K_COLUMNFAMILY K_COMPACT K_CONTAINS K_COUNT K_COUNTER K_CREATE +K_CROSS +K_CUBE +K_CURRENT K_CUSTOM K_DATE K_DECIMAL +K_DEFAULT +K_DEFINE K_DELETE K_DESC K_DESCRIBE K_DISTINCT K_DOUBLE K_DROP +K_ELSE +K_END K_ENTRIES +K_ENUM +K_ESCAPE +K_EXCEPT +K_EXCLUDE K_EXECUTE K_EXISTS +K_EXTRACT +K_FALSE +K_FETCH K_FILTERING K_FINALFUNC K_FLOAT +K_FOLLOWING +K_FOR K_FROM K_FROZEN K_FULL K_FUNCTION K_FUNCTIONS K_GRANT +K_GROUP +K_GROUPING +K_GROUPS +K_HASH +K_HAVING K_IF +K_IGNORE K_IN K_INDEX K_INET K_INFINITY K_INITCOND +K_INNER K_INPUT K_INSERT K_INT +K_INTERSECT +K_INTERVAL K_INTO +K_IS +K_JOIN K_JSON K_KEY K_KEYS K_KEYSPACE K_KEYSPACES K_LANGUAGE +K_LATERAL +K_LEFT +K_LIKE K_LIMIT K_LIST K_LOGIN +K_LOOKUP K_MAP +K_MERGE K_MODIFY K_NAN +K_NATURAL +K_NEW +K_NO K_NOLOGIN K_NORECURSIVE K_NOSUPERUSER K_NOT K_NULL +K_NULLS K_OF K_ON K_OPTIONS K_OR K_ORDER +K_OUTER +K_OVER +K_PARTITION K_PASSWORD K_PERMISSION K_PERMISSIONS +K_PRECEDING K_PRIMARY +K_PROTO +K_QUALIFY +K_RANGE +K_RECURSIVE K_RENAME K_REPLACE +K_RESPECT K_RETURNS K_REVOKE +K_RIGHT K_ROLE K_ROLES +K_ROLLUP +K_ROWS K_SCHEMA K_SELECT K_SET K_SFUNC K_SMALLINT +K_SOME K_STATIC K_STORAGE +K_STRUCT K_STYPE K_SUPERUSER K_TABLE +K_TABLESAMPLE K_TEXT +K_THEN K_TIME K_TIMESTAMP K_TIMEUUID K_TINYINT K_TO K_TOKEN +K_TREAT K_TRIGGER +K_TRUE K_TRUNCATE K_TTL K_TUPLE K_TYPE +K_UNBOUNDED +K_UNION K_UNLOGGED +K_UNNEST K_UPDATE K_USE K_USER @@ -263,8 +396,11 @@ K_UUID K_VALUES K_VARCHAR K_VARINT +K_WHEN K_WHERE +K_WINDOW K_WITH +K_WITHIN K_WRITETIME K_MATERIALIZED K_VIEW @@ -292,111 +428,176 @@ K_ALL K_ALLOW K_ALTER K_AND +K_ANY K_APPLY +K_ARRAY K_AS K_ASC K_ASCII +K_ASSERT_ROWS_MODIFIED +K_AT K_AUTHORIZE K_BATCH K_BEGIN +K_BETWEEN K_BIGINT K_BLOB K_BOOLEAN K_BY K_CALLED +K_CASE +K_CAST K_CLUSTERING +K_COLLATE K_COLUMNFAMILY K_COMPACT K_CONTAINS K_COUNT K_COUNTER K_CREATE +K_CROSS +K_CUBE +K_CURRENT K_CUSTOM K_DATE K_DECIMAL +K_DEFAULT +K_DEFINE K_DELETE K_DESC K_DESCRIBE K_DISTINCT K_DOUBLE K_DROP +K_ELSE +K_END K_ENTRIES +K_ENUM +K_ESCAPE +K_EXCEPT +K_EXCLUDE K_EXECUTE K_EXISTS +K_EXTRACT +K_FALSE +K_FETCH K_FILTERING K_FINALFUNC K_FLOAT +K_FOLLOWING +K_FOR K_FROM K_FROZEN K_FULL K_FUNCTION K_FUNCTIONS K_GRANT +K_GROUP +K_GROUPING +K_GROUPS +K_HASH +K_HAVING K_IF +K_IGNORE K_IN K_INDEX K_INET K_INFINITY K_INITCOND +K_INNER K_INPUT K_INSERT K_INT +K_INTERSECT +K_INTERVAL K_INTO +K_IS +K_JOIN K_JSON K_KEY K_KEYS K_KEYSPACE K_KEYSPACES K_LANGUAGE +K_LATERAL +K_LEFT +K_LIKE K_LIMIT K_LIST K_LOGIN +K_LOOKUP K_MAP +K_MERGE K_MODIFY K_NAN +K_NATURAL +K_NEW +K_NO K_NOLOGIN K_NORECURSIVE K_NOSUPERUSER K_NOT K_NULL +K_NULLS K_OF K_ON K_OPTIONS K_OR K_ORDER +K_OUTER +K_OVER +K_PARTITION K_PASSWORD K_PERMISSION K_PERMISSIONS +K_PRECEDING K_PRIMARY +K_PROTO +K_QUALIFY +K_RANGE +K_RECURSIVE K_RENAME K_REPLACE +K_RESPECT K_RETURNS K_REVOKE +K_RIGHT K_ROLE K_ROLES +K_ROLLUP +K_ROWS K_SCHEMA K_SELECT K_SET K_SFUNC K_SMALLINT +K_SOME K_STATIC K_STORAGE +K_STRUCT K_STYPE K_SUPERUSER K_TABLE +K_TABLESAMPLE K_TEXT +K_THEN K_TIME K_TIMESTAMP K_TIMEUUID K_TINYINT K_TO K_TOKEN +K_TREAT K_TRIGGER +K_TRUE K_TRUNCATE K_TTL K_TUPLE K_TYPE +K_UNBOUNDED +K_UNION K_UNLOGGED +K_UNNEST K_UPDATE K_USE K_USER @@ -406,8 +607,11 @@ K_UUID K_VALUES K_VARCHAR K_VARINT +K_WHEN K_WHERE +K_WINDOW K_WITH +K_WITHIN K_WRITETIME K_MATERIALIZED K_VIEW @@ -435,4 +639,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 140, 1211, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 5, 135, 1153, 8, 135, 10, 135, 12, 135, 1156, 9, 135, 1, 136, 1, 136, 5, 136, 1160, 8, 136, 10, 136, 12, 136, 1163, 9, 136, 1, 136, 1, 136, 5, 136, 1167, 8, 136, 10, 136, 12, 136, 1170, 9, 136, 1, 137, 4, 137, 1173, 8, 137, 11, 137, 12, 137, 1174, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1184, 8, 138, 1, 138, 5, 138, 1187, 8, 138, 10, 138, 12, 138, 1190, 9, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 5, 139, 1200, 8, 139, 10, 139, 12, 139, 1203, 9, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 2, 1188, 1201, 0, 141, 1, 0, 3, 1, 5, 2, 7, 3, 9, 4, 11, 5, 13, 6, 15, 7, 17, 8, 19, 9, 21, 10, 23, 11, 25, 12, 27, 13, 29, 14, 31, 15, 33, 16, 35, 17, 37, 18, 39, 19, 41, 20, 43, 21, 45, 22, 47, 23, 49, 24, 51, 25, 53, 26, 55, 27, 57, 28, 59, 29, 61, 30, 63, 31, 65, 32, 67, 33, 69, 34, 71, 35, 73, 36, 75, 37, 77, 38, 79, 39, 81, 40, 83, 41, 85, 42, 87, 43, 89, 44, 91, 45, 93, 46, 95, 47, 97, 48, 99, 49, 101, 50, 103, 51, 105, 52, 107, 53, 109, 54, 111, 55, 113, 56, 115, 57, 117, 58, 119, 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 65, 133, 66, 135, 67, 137, 68, 139, 69, 141, 70, 143, 71, 145, 72, 147, 73, 149, 74, 151, 75, 153, 76, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, 82, 167, 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, 90, 183, 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, 98, 199, 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, 213, 106, 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 112, 227, 113, 229, 114, 231, 115, 233, 116, 235, 117, 237, 118, 239, 119, 241, 120, 243, 121, 245, 122, 247, 123, 249, 124, 251, 125, 253, 126, 255, 127, 257, 128, 259, 129, 261, 130, 263, 131, 265, 132, 267, 133, 269, 134, 271, 135, 273, 136, 275, 137, 277, 138, 279, 139, 281, 140, 1, 0, 30, 2, 0, 65, 90, 97, 122, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 71, 71, 103, 103, 2, 0, 82, 82, 114, 114, 2, 0, 69, 69, 101, 101, 2, 0, 84, 84, 116, 116, 2, 0, 76, 76, 108, 108, 2, 0, 79, 79, 111, 111, 2, 0, 87, 87, 119, 119, 2, 0, 78, 78, 110, 110, 2, 0, 80, 80, 112, 112, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, 66, 66, 98, 98, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 86, 86, 118, 118, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 5, 0, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1216, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 1, 283, 1, 0, 0, 0, 3, 285, 1, 0, 0, 0, 5, 289, 1, 0, 0, 0, 7, 299, 1, 0, 0, 0, 9, 303, 1, 0, 0, 0, 11, 309, 1, 0, 0, 0, 13, 315, 1, 0, 0, 0, 15, 319, 1, 0, 0, 0, 17, 325, 1, 0, 0, 0, 19, 328, 1, 0, 0, 0, 21, 332, 1, 0, 0, 0, 23, 338, 1, 0, 0, 0, 25, 348, 1, 0, 0, 0, 27, 354, 1, 0, 0, 0, 29, 360, 1, 0, 0, 0, 31, 367, 1, 0, 0, 0, 33, 372, 1, 0, 0, 0, 35, 380, 1, 0, 0, 0, 37, 383, 1, 0, 0, 0, 39, 390, 1, 0, 0, 0, 41, 401, 1, 0, 0, 0, 43, 414, 1, 0, 0, 0, 45, 422, 1, 0, 0, 0, 47, 431, 1, 0, 0, 0, 49, 437, 1, 0, 0, 0, 51, 445, 1, 0, 0, 0, 53, 452, 1, 0, 0, 0, 55, 459, 1, 0, 0, 0, 57, 464, 1, 0, 0, 0, 59, 472, 1, 0, 0, 0, 61, 479, 1, 0, 0, 0, 63, 484, 1, 0, 0, 0, 65, 493, 1, 0, 0, 0, 67, 502, 1, 0, 0, 0, 69, 509, 1, 0, 0, 0, 71, 514, 1, 0, 0, 0, 73, 522, 1, 0, 0, 0, 75, 530, 1, 0, 0, 0, 77, 537, 1, 0, 0, 0, 79, 547, 1, 0, 0, 0, 81, 557, 1, 0, 0, 0, 83, 563, 1, 0, 0, 0, 85, 568, 1, 0, 0, 0, 87, 575, 1, 0, 0, 0, 89, 580, 1, 0, 0, 0, 91, 589, 1, 0, 0, 0, 93, 599, 1, 0, 0, 0, 95, 605, 1, 0, 0, 0, 97, 608, 1, 0, 0, 0, 99, 611, 1, 0, 0, 0, 101, 617, 1, 0, 0, 0, 103, 622, 1, 0, 0, 0, 105, 631, 1, 0, 0, 0, 107, 640, 1, 0, 0, 0, 109, 646, 1, 0, 0, 0, 111, 653, 1, 0, 0, 0, 113, 657, 1, 0, 0, 0, 115, 662, 1, 0, 0, 0, 117, 667, 1, 0, 0, 0, 119, 671, 1, 0, 0, 0, 121, 676, 1, 0, 0, 0, 123, 685, 1, 0, 0, 0, 125, 695, 1, 0, 0, 0, 127, 704, 1, 0, 0, 0, 129, 710, 1, 0, 0, 0, 131, 715, 1, 0, 0, 0, 133, 721, 1, 0, 0, 0, 135, 725, 1, 0, 0, 0, 137, 732, 1, 0, 0, 0, 139, 736, 1, 0, 0, 0, 141, 744, 1, 0, 0, 0, 143, 756, 1, 0, 0, 0, 145, 768, 1, 0, 0, 0, 147, 772, 1, 0, 0, 0, 149, 777, 1, 0, 0, 0, 151, 780, 1, 0, 0, 0, 153, 783, 1, 0, 0, 0, 155, 791, 1, 0, 0, 0, 157, 794, 1, 0, 0, 0, 159, 800, 1, 0, 0, 0, 161, 809, 1, 0, 0, 0, 163, 820, 1, 0, 0, 0, 165, 832, 1, 0, 0, 0, 167, 840, 1, 0, 0, 0, 169, 847, 1, 0, 0, 0, 171, 855, 1, 0, 0, 0, 173, 863, 1, 0, 0, 0, 175, 870, 1, 0, 0, 0, 177, 875, 1, 0, 0, 0, 179, 881, 1, 0, 0, 0, 181, 888, 1, 0, 0, 0, 183, 895, 1, 0, 0, 0, 185, 899, 1, 0, 0, 0, 187, 905, 1, 0, 0, 0, 189, 914, 1, 0, 0, 0, 191, 921, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, 935, 1, 0, 0, 0, 197, 945, 1, 0, 0, 0, 199, 951, 1, 0, 0, 0, 201, 956, 1, 0, 0, 0, 203, 961, 1, 0, 0, 0, 205, 971, 1, 0, 0, 0, 207, 980, 1, 0, 0, 0, 209, 988, 1, 0, 0, 0, 211, 991, 1, 0, 0, 0, 213, 997, 1, 0, 0, 0, 215, 1005, 1, 0, 0, 0, 217, 1014, 1, 0, 0, 0, 219, 1018, 1, 0, 0, 0, 221, 1024, 1, 0, 0, 0, 223, 1029, 1, 0, 0, 0, 225, 1038, 1, 0, 0, 0, 227, 1045, 1, 0, 0, 0, 229, 1049, 1, 0, 0, 0, 231, 1054, 1, 0, 0, 0, 233, 1060, 1, 0, 0, 0, 235, 1066, 1, 0, 0, 0, 237, 1071, 1, 0, 0, 0, 239, 1078, 1, 0, 0, 0, 241, 1086, 1, 0, 0, 0, 243, 1093, 1, 0, 0, 0, 245, 1099, 1, 0, 0, 0, 247, 1104, 1, 0, 0, 0, 249, 1114, 1, 0, 0, 0, 251, 1127, 1, 0, 0, 0, 253, 1132, 1, 0, 0, 0, 255, 1134, 1, 0, 0, 0, 257, 1136, 1, 0, 0, 0, 259, 1138, 1, 0, 0, 0, 261, 1140, 1, 0, 0, 0, 263, 1142, 1, 0, 0, 0, 265, 1144, 1, 0, 0, 0, 267, 1146, 1, 0, 0, 0, 269, 1148, 1, 0, 0, 0, 271, 1150, 1, 0, 0, 0, 273, 1157, 1, 0, 0, 0, 275, 1172, 1, 0, 0, 0, 277, 1183, 1, 0, 0, 0, 279, 1195, 1, 0, 0, 0, 281, 1209, 1, 0, 0, 0, 283, 284, 7, 0, 0, 0, 284, 2, 1, 0, 0, 0, 285, 286, 7, 1, 0, 0, 286, 287, 7, 2, 0, 0, 287, 288, 7, 2, 0, 0, 288, 4, 1, 0, 0, 0, 289, 290, 7, 1, 0, 0, 290, 291, 7, 3, 0, 0, 291, 292, 7, 3, 0, 0, 292, 293, 7, 4, 0, 0, 293, 294, 7, 5, 0, 0, 294, 295, 7, 3, 0, 0, 295, 296, 7, 1, 0, 0, 296, 297, 7, 6, 0, 0, 297, 298, 7, 5, 0, 0, 298, 6, 1, 0, 0, 0, 299, 300, 7, 1, 0, 0, 300, 301, 7, 7, 0, 0, 301, 302, 7, 7, 0, 0, 302, 8, 1, 0, 0, 0, 303, 304, 7, 1, 0, 0, 304, 305, 7, 7, 0, 0, 305, 306, 7, 7, 0, 0, 306, 307, 7, 8, 0, 0, 307, 308, 7, 9, 0, 0, 308, 10, 1, 0, 0, 0, 309, 310, 7, 1, 0, 0, 310, 311, 7, 7, 0, 0, 311, 312, 7, 6, 0, 0, 312, 313, 7, 5, 0, 0, 313, 314, 7, 4, 0, 0, 314, 12, 1, 0, 0, 0, 315, 316, 7, 1, 0, 0, 316, 317, 7, 10, 0, 0, 317, 318, 7, 2, 0, 0, 318, 14, 1, 0, 0, 0, 319, 320, 7, 1, 0, 0, 320, 321, 7, 11, 0, 0, 321, 322, 7, 11, 0, 0, 322, 323, 7, 7, 0, 0, 323, 324, 7, 12, 0, 0, 324, 16, 1, 0, 0, 0, 325, 326, 7, 1, 0, 0, 326, 327, 7, 13, 0, 0, 327, 18, 1, 0, 0, 0, 328, 329, 7, 1, 0, 0, 329, 330, 7, 13, 0, 0, 330, 331, 7, 14, 0, 0, 331, 20, 1, 0, 0, 0, 332, 333, 7, 1, 0, 0, 333, 334, 7, 13, 0, 0, 334, 335, 7, 14, 0, 0, 335, 336, 7, 15, 0, 0, 336, 337, 7, 15, 0, 0, 337, 22, 1, 0, 0, 0, 338, 339, 7, 1, 0, 0, 339, 340, 7, 16, 0, 0, 340, 341, 7, 6, 0, 0, 341, 342, 7, 17, 0, 0, 342, 343, 7, 8, 0, 0, 343, 344, 7, 4, 0, 0, 344, 345, 7, 15, 0, 0, 345, 346, 7, 18, 0, 0, 346, 347, 7, 5, 0, 0, 347, 24, 1, 0, 0, 0, 348, 349, 7, 19, 0, 0, 349, 350, 7, 1, 0, 0, 350, 351, 7, 6, 0, 0, 351, 352, 7, 14, 0, 0, 352, 353, 7, 17, 0, 0, 353, 26, 1, 0, 0, 0, 354, 355, 7, 19, 0, 0, 355, 356, 7, 5, 0, 0, 356, 357, 7, 3, 0, 0, 357, 358, 7, 15, 0, 0, 358, 359, 7, 10, 0, 0, 359, 28, 1, 0, 0, 0, 360, 361, 7, 19, 0, 0, 361, 362, 7, 15, 0, 0, 362, 363, 7, 3, 0, 0, 363, 364, 7, 15, 0, 0, 364, 365, 7, 10, 0, 0, 365, 366, 7, 6, 0, 0, 366, 30, 1, 0, 0, 0, 367, 368, 7, 19, 0, 0, 368, 369, 7, 7, 0, 0, 369, 370, 7, 8, 0, 0, 370, 371, 7, 19, 0, 0, 371, 32, 1, 0, 0, 0, 372, 373, 7, 19, 0, 0, 373, 374, 7, 8, 0, 0, 374, 375, 7, 8, 0, 0, 375, 376, 7, 7, 0, 0, 376, 377, 7, 5, 0, 0, 377, 378, 7, 1, 0, 0, 378, 379, 7, 10, 0, 0, 379, 34, 1, 0, 0, 0, 380, 381, 7, 19, 0, 0, 381, 382, 7, 12, 0, 0, 382, 36, 1, 0, 0, 0, 383, 384, 7, 14, 0, 0, 384, 385, 7, 1, 0, 0, 385, 386, 7, 7, 0, 0, 386, 387, 7, 7, 0, 0, 387, 388, 7, 5, 0, 0, 388, 389, 7, 2, 0, 0, 389, 38, 1, 0, 0, 0, 390, 391, 7, 14, 0, 0, 391, 392, 7, 7, 0, 0, 392, 393, 7, 16, 0, 0, 393, 394, 7, 13, 0, 0, 394, 395, 7, 6, 0, 0, 395, 396, 7, 5, 0, 0, 396, 397, 7, 4, 0, 0, 397, 398, 7, 15, 0, 0, 398, 399, 7, 10, 0, 0, 399, 400, 7, 3, 0, 0, 400, 40, 1, 0, 0, 0, 401, 402, 7, 14, 0, 0, 402, 403, 7, 8, 0, 0, 403, 404, 7, 7, 0, 0, 404, 405, 7, 16, 0, 0, 405, 406, 7, 20, 0, 0, 406, 407, 7, 10, 0, 0, 407, 408, 7, 21, 0, 0, 408, 409, 7, 1, 0, 0, 409, 410, 7, 20, 0, 0, 410, 411, 7, 15, 0, 0, 411, 412, 7, 7, 0, 0, 412, 413, 7, 12, 0, 0, 413, 42, 1, 0, 0, 0, 414, 415, 7, 14, 0, 0, 415, 416, 7, 8, 0, 0, 416, 417, 7, 20, 0, 0, 417, 418, 7, 11, 0, 0, 418, 419, 7, 1, 0, 0, 419, 420, 7, 14, 0, 0, 420, 421, 7, 6, 0, 0, 421, 44, 1, 0, 0, 0, 422, 423, 7, 14, 0, 0, 423, 424, 7, 8, 0, 0, 424, 425, 7, 10, 0, 0, 425, 426, 7, 6, 0, 0, 426, 427, 7, 1, 0, 0, 427, 428, 7, 15, 0, 0, 428, 429, 7, 10, 0, 0, 429, 430, 7, 13, 0, 0, 430, 46, 1, 0, 0, 0, 431, 432, 7, 14, 0, 0, 432, 433, 7, 8, 0, 0, 433, 434, 7, 16, 0, 0, 434, 435, 7, 10, 0, 0, 435, 436, 7, 6, 0, 0, 436, 48, 1, 0, 0, 0, 437, 438, 7, 14, 0, 0, 438, 439, 7, 8, 0, 0, 439, 440, 7, 16, 0, 0, 440, 441, 7, 10, 0, 0, 441, 442, 7, 6, 0, 0, 442, 443, 7, 5, 0, 0, 443, 444, 7, 4, 0, 0, 444, 50, 1, 0, 0, 0, 445, 446, 7, 14, 0, 0, 446, 447, 7, 4, 0, 0, 447, 448, 7, 5, 0, 0, 448, 449, 7, 1, 0, 0, 449, 450, 7, 6, 0, 0, 450, 451, 7, 5, 0, 0, 451, 52, 1, 0, 0, 0, 452, 453, 7, 14, 0, 0, 453, 454, 7, 16, 0, 0, 454, 455, 7, 13, 0, 0, 455, 456, 7, 6, 0, 0, 456, 457, 7, 8, 0, 0, 457, 458, 7, 20, 0, 0, 458, 54, 1, 0, 0, 0, 459, 460, 7, 2, 0, 0, 460, 461, 7, 1, 0, 0, 461, 462, 7, 6, 0, 0, 462, 463, 7, 5, 0, 0, 463, 56, 1, 0, 0, 0, 464, 465, 7, 2, 0, 0, 465, 466, 7, 5, 0, 0, 466, 467, 7, 14, 0, 0, 467, 468, 7, 15, 0, 0, 468, 469, 7, 20, 0, 0, 469, 470, 7, 1, 0, 0, 470, 471, 7, 7, 0, 0, 471, 58, 1, 0, 0, 0, 472, 473, 7, 2, 0, 0, 473, 474, 7, 5, 0, 0, 474, 475, 7, 7, 0, 0, 475, 476, 7, 5, 0, 0, 476, 477, 7, 6, 0, 0, 477, 478, 7, 5, 0, 0, 478, 60, 1, 0, 0, 0, 479, 480, 7, 2, 0, 0, 480, 481, 7, 5, 0, 0, 481, 482, 7, 13, 0, 0, 482, 483, 7, 14, 0, 0, 483, 62, 1, 0, 0, 0, 484, 485, 7, 2, 0, 0, 485, 486, 7, 5, 0, 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 14, 0, 0, 488, 489, 7, 4, 0, 0, 489, 490, 7, 15, 0, 0, 490, 491, 7, 19, 0, 0, 491, 492, 7, 5, 0, 0, 492, 64, 1, 0, 0, 0, 493, 494, 7, 2, 0, 0, 494, 495, 7, 15, 0, 0, 495, 496, 7, 13, 0, 0, 496, 497, 7, 6, 0, 0, 497, 498, 7, 15, 0, 0, 498, 499, 7, 10, 0, 0, 499, 500, 7, 14, 0, 0, 500, 501, 7, 6, 0, 0, 501, 66, 1, 0, 0, 0, 502, 503, 7, 2, 0, 0, 503, 504, 7, 8, 0, 0, 504, 505, 7, 16, 0, 0, 505, 506, 7, 19, 0, 0, 506, 507, 7, 7, 0, 0, 507, 508, 7, 5, 0, 0, 508, 68, 1, 0, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 4, 0, 0, 511, 512, 7, 8, 0, 0, 512, 513, 7, 11, 0, 0, 513, 70, 1, 0, 0, 0, 514, 515, 7, 5, 0, 0, 515, 516, 7, 10, 0, 0, 516, 517, 7, 6, 0, 0, 517, 518, 7, 4, 0, 0, 518, 519, 7, 15, 0, 0, 519, 520, 7, 5, 0, 0, 520, 521, 7, 13, 0, 0, 521, 72, 1, 0, 0, 0, 522, 523, 7, 5, 0, 0, 523, 524, 7, 22, 0, 0, 524, 525, 7, 5, 0, 0, 525, 526, 7, 14, 0, 0, 526, 527, 7, 16, 0, 0, 527, 528, 7, 6, 0, 0, 528, 529, 7, 5, 0, 0, 529, 74, 1, 0, 0, 0, 530, 531, 7, 5, 0, 0, 531, 532, 7, 22, 0, 0, 532, 533, 7, 15, 0, 0, 533, 534, 7, 13, 0, 0, 534, 535, 7, 6, 0, 0, 535, 536, 7, 13, 0, 0, 536, 76, 1, 0, 0, 0, 537, 538, 7, 21, 0, 0, 538, 539, 7, 15, 0, 0, 539, 540, 7, 7, 0, 0, 540, 541, 7, 6, 0, 0, 541, 542, 7, 5, 0, 0, 542, 543, 7, 4, 0, 0, 543, 544, 7, 15, 0, 0, 544, 545, 7, 10, 0, 0, 545, 546, 7, 3, 0, 0, 546, 78, 1, 0, 0, 0, 547, 548, 7, 21, 0, 0, 548, 549, 7, 15, 0, 0, 549, 550, 7, 10, 0, 0, 550, 551, 7, 1, 0, 0, 551, 552, 7, 7, 0, 0, 552, 553, 7, 21, 0, 0, 553, 554, 7, 16, 0, 0, 554, 555, 7, 10, 0, 0, 555, 556, 7, 14, 0, 0, 556, 80, 1, 0, 0, 0, 557, 558, 7, 21, 0, 0, 558, 559, 7, 7, 0, 0, 559, 560, 7, 8, 0, 0, 560, 561, 7, 1, 0, 0, 561, 562, 7, 6, 0, 0, 562, 82, 1, 0, 0, 0, 563, 564, 7, 21, 0, 0, 564, 565, 7, 4, 0, 0, 565, 566, 7, 8, 0, 0, 566, 567, 7, 20, 0, 0, 567, 84, 1, 0, 0, 0, 568, 569, 7, 21, 0, 0, 569, 570, 7, 4, 0, 0, 570, 571, 7, 8, 0, 0, 571, 572, 7, 18, 0, 0, 572, 573, 7, 5, 0, 0, 573, 574, 7, 10, 0, 0, 574, 86, 1, 0, 0, 0, 575, 576, 7, 21, 0, 0, 576, 577, 7, 16, 0, 0, 577, 578, 7, 7, 0, 0, 578, 579, 7, 7, 0, 0, 579, 88, 1, 0, 0, 0, 580, 581, 7, 21, 0, 0, 581, 582, 7, 16, 0, 0, 582, 583, 7, 10, 0, 0, 583, 584, 7, 14, 0, 0, 584, 585, 7, 6, 0, 0, 585, 586, 7, 15, 0, 0, 586, 587, 7, 8, 0, 0, 587, 588, 7, 10, 0, 0, 588, 90, 1, 0, 0, 0, 589, 590, 7, 21, 0, 0, 590, 591, 7, 16, 0, 0, 591, 592, 7, 10, 0, 0, 592, 593, 7, 14, 0, 0, 593, 594, 7, 6, 0, 0, 594, 595, 7, 15, 0, 0, 595, 596, 7, 8, 0, 0, 596, 597, 7, 10, 0, 0, 597, 598, 7, 13, 0, 0, 598, 92, 1, 0, 0, 0, 599, 600, 7, 3, 0, 0, 600, 601, 7, 4, 0, 0, 601, 602, 7, 1, 0, 0, 602, 603, 7, 10, 0, 0, 603, 604, 7, 6, 0, 0, 604, 94, 1, 0, 0, 0, 605, 606, 7, 15, 0, 0, 606, 607, 7, 21, 0, 0, 607, 96, 1, 0, 0, 0, 608, 609, 7, 15, 0, 0, 609, 610, 7, 10, 0, 0, 610, 98, 1, 0, 0, 0, 611, 612, 7, 15, 0, 0, 612, 613, 7, 10, 0, 0, 613, 614, 7, 2, 0, 0, 614, 615, 7, 5, 0, 0, 615, 616, 7, 22, 0, 0, 616, 100, 1, 0, 0, 0, 617, 618, 7, 15, 0, 0, 618, 619, 7, 10, 0, 0, 619, 620, 7, 5, 0, 0, 620, 621, 7, 6, 0, 0, 621, 102, 1, 0, 0, 0, 622, 623, 7, 15, 0, 0, 623, 624, 7, 10, 0, 0, 624, 625, 7, 21, 0, 0, 625, 626, 7, 15, 0, 0, 626, 627, 7, 10, 0, 0, 627, 628, 7, 15, 0, 0, 628, 629, 7, 6, 0, 0, 629, 630, 7, 12, 0, 0, 630, 104, 1, 0, 0, 0, 631, 632, 7, 15, 0, 0, 632, 633, 7, 10, 0, 0, 633, 634, 7, 15, 0, 0, 634, 635, 7, 6, 0, 0, 635, 636, 7, 14, 0, 0, 636, 637, 7, 8, 0, 0, 637, 638, 7, 10, 0, 0, 638, 639, 7, 2, 0, 0, 639, 106, 1, 0, 0, 0, 640, 641, 7, 15, 0, 0, 641, 642, 7, 10, 0, 0, 642, 643, 7, 11, 0, 0, 643, 644, 7, 16, 0, 0, 644, 645, 7, 6, 0, 0, 645, 108, 1, 0, 0, 0, 646, 647, 7, 15, 0, 0, 647, 648, 7, 10, 0, 0, 648, 649, 7, 13, 0, 0, 649, 650, 7, 5, 0, 0, 650, 651, 7, 4, 0, 0, 651, 652, 7, 6, 0, 0, 652, 110, 1, 0, 0, 0, 653, 654, 7, 15, 0, 0, 654, 655, 7, 10, 0, 0, 655, 656, 7, 6, 0, 0, 656, 112, 1, 0, 0, 0, 657, 658, 7, 15, 0, 0, 658, 659, 7, 10, 0, 0, 659, 660, 7, 6, 0, 0, 660, 661, 7, 8, 0, 0, 661, 114, 1, 0, 0, 0, 662, 663, 7, 23, 0, 0, 663, 664, 7, 13, 0, 0, 664, 665, 7, 8, 0, 0, 665, 666, 7, 10, 0, 0, 666, 116, 1, 0, 0, 0, 667, 668, 7, 24, 0, 0, 668, 669, 7, 5, 0, 0, 669, 670, 7, 12, 0, 0, 670, 118, 1, 0, 0, 0, 671, 672, 7, 24, 0, 0, 672, 673, 7, 5, 0, 0, 673, 674, 7, 12, 0, 0, 674, 675, 7, 13, 0, 0, 675, 120, 1, 0, 0, 0, 676, 677, 7, 24, 0, 0, 677, 678, 7, 5, 0, 0, 678, 679, 7, 12, 0, 0, 679, 680, 7, 13, 0, 0, 680, 681, 7, 11, 0, 0, 681, 682, 7, 1, 0, 0, 682, 683, 7, 14, 0, 0, 683, 684, 7, 5, 0, 0, 684, 122, 1, 0, 0, 0, 685, 686, 7, 24, 0, 0, 686, 687, 7, 5, 0, 0, 687, 688, 7, 12, 0, 0, 688, 689, 7, 13, 0, 0, 689, 690, 7, 11, 0, 0, 690, 691, 7, 1, 0, 0, 691, 692, 7, 14, 0, 0, 692, 693, 7, 5, 0, 0, 693, 694, 7, 13, 0, 0, 694, 124, 1, 0, 0, 0, 695, 696, 7, 7, 0, 0, 696, 697, 7, 1, 0, 0, 697, 698, 7, 10, 0, 0, 698, 699, 7, 3, 0, 0, 699, 700, 7, 16, 0, 0, 700, 701, 7, 1, 0, 0, 701, 702, 7, 3, 0, 0, 702, 703, 7, 5, 0, 0, 703, 126, 1, 0, 0, 0, 704, 705, 7, 7, 0, 0, 705, 706, 7, 15, 0, 0, 706, 707, 7, 20, 0, 0, 707, 708, 7, 15, 0, 0, 708, 709, 7, 6, 0, 0, 709, 128, 1, 0, 0, 0, 710, 711, 7, 7, 0, 0, 711, 712, 7, 15, 0, 0, 712, 713, 7, 13, 0, 0, 713, 714, 7, 6, 0, 0, 714, 130, 1, 0, 0, 0, 715, 716, 7, 7, 0, 0, 716, 717, 7, 8, 0, 0, 717, 718, 7, 3, 0, 0, 718, 719, 7, 15, 0, 0, 719, 720, 7, 10, 0, 0, 720, 132, 1, 0, 0, 0, 721, 722, 7, 20, 0, 0, 722, 723, 7, 1, 0, 0, 723, 724, 7, 11, 0, 0, 724, 134, 1, 0, 0, 0, 725, 726, 7, 20, 0, 0, 726, 727, 7, 8, 0, 0, 727, 728, 7, 2, 0, 0, 728, 729, 7, 15, 0, 0, 729, 730, 7, 21, 0, 0, 730, 731, 7, 12, 0, 0, 731, 136, 1, 0, 0, 0, 732, 733, 7, 10, 0, 0, 733, 734, 7, 1, 0, 0, 734, 735, 7, 10, 0, 0, 735, 138, 1, 0, 0, 0, 736, 737, 7, 10, 0, 0, 737, 738, 7, 8, 0, 0, 738, 739, 7, 7, 0, 0, 739, 740, 7, 8, 0, 0, 740, 741, 7, 3, 0, 0, 741, 742, 7, 15, 0, 0, 742, 743, 7, 10, 0, 0, 743, 140, 1, 0, 0, 0, 744, 745, 7, 10, 0, 0, 745, 746, 7, 8, 0, 0, 746, 747, 7, 4, 0, 0, 747, 748, 7, 5, 0, 0, 748, 749, 7, 14, 0, 0, 749, 750, 7, 16, 0, 0, 750, 751, 7, 4, 0, 0, 751, 752, 7, 13, 0, 0, 752, 753, 7, 15, 0, 0, 753, 754, 7, 25, 0, 0, 754, 755, 7, 5, 0, 0, 755, 142, 1, 0, 0, 0, 756, 757, 7, 10, 0, 0, 757, 758, 7, 8, 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, 7, 16, 0, 0, 760, 761, 7, 11, 0, 0, 761, 762, 7, 5, 0, 0, 762, 763, 7, 4, 0, 0, 763, 764, 7, 16, 0, 0, 764, 765, 7, 13, 0, 0, 765, 766, 7, 5, 0, 0, 766, 767, 7, 4, 0, 0, 767, 144, 1, 0, 0, 0, 768, 769, 7, 10, 0, 0, 769, 770, 7, 8, 0, 0, 770, 771, 7, 6, 0, 0, 771, 146, 1, 0, 0, 0, 772, 773, 7, 10, 0, 0, 773, 774, 7, 16, 0, 0, 774, 775, 7, 7, 0, 0, 775, 776, 7, 7, 0, 0, 776, 148, 1, 0, 0, 0, 777, 778, 7, 8, 0, 0, 778, 779, 7, 21, 0, 0, 779, 150, 1, 0, 0, 0, 780, 781, 7, 8, 0, 0, 781, 782, 7, 10, 0, 0, 782, 152, 1, 0, 0, 0, 783, 784, 7, 8, 0, 0, 784, 785, 7, 11, 0, 0, 785, 786, 7, 6, 0, 0, 786, 787, 7, 15, 0, 0, 787, 788, 7, 8, 0, 0, 788, 789, 7, 10, 0, 0, 789, 790, 7, 13, 0, 0, 790, 154, 1, 0, 0, 0, 791, 792, 7, 8, 0, 0, 792, 793, 7, 4, 0, 0, 793, 156, 1, 0, 0, 0, 794, 795, 7, 8, 0, 0, 795, 796, 7, 4, 0, 0, 796, 797, 7, 2, 0, 0, 797, 798, 7, 5, 0, 0, 798, 799, 7, 4, 0, 0, 799, 158, 1, 0, 0, 0, 800, 801, 7, 11, 0, 0, 801, 802, 7, 1, 0, 0, 802, 803, 7, 13, 0, 0, 803, 804, 7, 13, 0, 0, 804, 805, 7, 9, 0, 0, 805, 806, 7, 8, 0, 0, 806, 807, 7, 4, 0, 0, 807, 808, 7, 2, 0, 0, 808, 160, 1, 0, 0, 0, 809, 810, 7, 11, 0, 0, 810, 811, 7, 5, 0, 0, 811, 812, 7, 4, 0, 0, 812, 813, 7, 20, 0, 0, 813, 814, 7, 15, 0, 0, 814, 815, 7, 13, 0, 0, 815, 816, 7, 13, 0, 0, 816, 817, 7, 15, 0, 0, 817, 818, 7, 8, 0, 0, 818, 819, 7, 10, 0, 0, 819, 162, 1, 0, 0, 0, 820, 821, 7, 11, 0, 0, 821, 822, 7, 5, 0, 0, 822, 823, 7, 4, 0, 0, 823, 824, 7, 20, 0, 0, 824, 825, 7, 15, 0, 0, 825, 826, 7, 13, 0, 0, 826, 827, 7, 13, 0, 0, 827, 828, 7, 15, 0, 0, 828, 829, 7, 8, 0, 0, 829, 830, 7, 10, 0, 0, 830, 831, 7, 13, 0, 0, 831, 164, 1, 0, 0, 0, 832, 833, 7, 11, 0, 0, 833, 834, 7, 4, 0, 0, 834, 835, 7, 15, 0, 0, 835, 836, 7, 20, 0, 0, 836, 837, 7, 1, 0, 0, 837, 838, 7, 4, 0, 0, 838, 839, 7, 12, 0, 0, 839, 166, 1, 0, 0, 0, 840, 841, 7, 4, 0, 0, 841, 842, 7, 5, 0, 0, 842, 843, 7, 10, 0, 0, 843, 844, 7, 1, 0, 0, 844, 845, 7, 20, 0, 0, 845, 846, 7, 5, 0, 0, 846, 168, 1, 0, 0, 0, 847, 848, 7, 4, 0, 0, 848, 849, 7, 5, 0, 0, 849, 850, 7, 11, 0, 0, 850, 851, 7, 7, 0, 0, 851, 852, 7, 1, 0, 0, 852, 853, 7, 14, 0, 0, 853, 854, 7, 5, 0, 0, 854, 170, 1, 0, 0, 0, 855, 856, 7, 4, 0, 0, 856, 857, 7, 5, 0, 0, 857, 858, 7, 6, 0, 0, 858, 859, 7, 16, 0, 0, 859, 860, 7, 4, 0, 0, 860, 861, 7, 10, 0, 0, 861, 862, 7, 13, 0, 0, 862, 172, 1, 0, 0, 0, 863, 864, 7, 4, 0, 0, 864, 865, 7, 5, 0, 0, 865, 866, 7, 25, 0, 0, 866, 867, 7, 8, 0, 0, 867, 868, 7, 24, 0, 0, 868, 869, 7, 5, 0, 0, 869, 174, 1, 0, 0, 0, 870, 871, 7, 4, 0, 0, 871, 872, 7, 8, 0, 0, 872, 873, 7, 7, 0, 0, 873, 874, 7, 5, 0, 0, 874, 176, 1, 0, 0, 0, 875, 876, 7, 4, 0, 0, 876, 877, 7, 8, 0, 0, 877, 878, 7, 7, 0, 0, 878, 879, 7, 5, 0, 0, 879, 880, 7, 13, 0, 0, 880, 178, 1, 0, 0, 0, 881, 882, 7, 13, 0, 0, 882, 883, 7, 14, 0, 0, 883, 884, 7, 17, 0, 0, 884, 885, 7, 5, 0, 0, 885, 886, 7, 20, 0, 0, 886, 887, 7, 1, 0, 0, 887, 180, 1, 0, 0, 0, 888, 889, 7, 13, 0, 0, 889, 890, 7, 5, 0, 0, 890, 891, 7, 7, 0, 0, 891, 892, 7, 5, 0, 0, 892, 893, 7, 14, 0, 0, 893, 894, 7, 6, 0, 0, 894, 182, 1, 0, 0, 0, 895, 896, 7, 13, 0, 0, 896, 897, 7, 5, 0, 0, 897, 898, 7, 6, 0, 0, 898, 184, 1, 0, 0, 0, 899, 900, 7, 13, 0, 0, 900, 901, 7, 21, 0, 0, 901, 902, 7, 16, 0, 0, 902, 903, 7, 10, 0, 0, 903, 904, 7, 14, 0, 0, 904, 186, 1, 0, 0, 0, 905, 906, 7, 13, 0, 0, 906, 907, 7, 20, 0, 0, 907, 908, 7, 1, 0, 0, 908, 909, 7, 7, 0, 0, 909, 910, 7, 7, 0, 0, 910, 911, 7, 15, 0, 0, 911, 912, 7, 10, 0, 0, 912, 913, 7, 6, 0, 0, 913, 188, 1, 0, 0, 0, 914, 915, 7, 13, 0, 0, 915, 916, 7, 6, 0, 0, 916, 917, 7, 1, 0, 0, 917, 918, 7, 6, 0, 0, 918, 919, 7, 15, 0, 0, 919, 920, 7, 14, 0, 0, 920, 190, 1, 0, 0, 0, 921, 922, 7, 13, 0, 0, 922, 923, 7, 6, 0, 0, 923, 924, 7, 8, 0, 0, 924, 925, 7, 4, 0, 0, 925, 926, 7, 1, 0, 0, 926, 927, 7, 3, 0, 0, 927, 928, 7, 5, 0, 0, 928, 192, 1, 0, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 6, 0, 0, 931, 932, 7, 12, 0, 0, 932, 933, 7, 11, 0, 0, 933, 934, 7, 5, 0, 0, 934, 194, 1, 0, 0, 0, 935, 936, 7, 13, 0, 0, 936, 937, 7, 16, 0, 0, 937, 938, 7, 11, 0, 0, 938, 939, 7, 5, 0, 0, 939, 940, 7, 4, 0, 0, 940, 941, 7, 16, 0, 0, 941, 942, 7, 13, 0, 0, 942, 943, 7, 5, 0, 0, 943, 944, 7, 4, 0, 0, 944, 196, 1, 0, 0, 0, 945, 946, 7, 6, 0, 0, 946, 947, 7, 1, 0, 0, 947, 948, 7, 19, 0, 0, 948, 949, 7, 7, 0, 0, 949, 950, 7, 5, 0, 0, 950, 198, 1, 0, 0, 0, 951, 952, 7, 6, 0, 0, 952, 953, 7, 5, 0, 0, 953, 954, 7, 22, 0, 0, 954, 955, 7, 6, 0, 0, 955, 200, 1, 0, 0, 0, 956, 957, 7, 6, 0, 0, 957, 958, 7, 15, 0, 0, 958, 959, 7, 20, 0, 0, 959, 960, 7, 5, 0, 0, 960, 202, 1, 0, 0, 0, 961, 962, 7, 6, 0, 0, 962, 963, 7, 15, 0, 0, 963, 964, 7, 20, 0, 0, 964, 965, 7, 5, 0, 0, 965, 966, 7, 13, 0, 0, 966, 967, 7, 6, 0, 0, 967, 968, 7, 1, 0, 0, 968, 969, 7, 20, 0, 0, 969, 970, 7, 11, 0, 0, 970, 204, 1, 0, 0, 0, 971, 972, 7, 6, 0, 0, 972, 973, 7, 15, 0, 0, 973, 974, 7, 20, 0, 0, 974, 975, 7, 5, 0, 0, 975, 976, 7, 16, 0, 0, 976, 977, 7, 16, 0, 0, 977, 978, 7, 15, 0, 0, 978, 979, 7, 2, 0, 0, 979, 206, 1, 0, 0, 0, 980, 981, 7, 6, 0, 0, 981, 982, 7, 15, 0, 0, 982, 983, 7, 10, 0, 0, 983, 984, 7, 12, 0, 0, 984, 985, 7, 15, 0, 0, 985, 986, 7, 10, 0, 0, 986, 987, 7, 6, 0, 0, 987, 208, 1, 0, 0, 0, 988, 989, 7, 6, 0, 0, 989, 990, 7, 8, 0, 0, 990, 210, 1, 0, 0, 0, 991, 992, 7, 6, 0, 0, 992, 993, 7, 8, 0, 0, 993, 994, 7, 24, 0, 0, 994, 995, 7, 5, 0, 0, 995, 996, 7, 10, 0, 0, 996, 212, 1, 0, 0, 0, 997, 998, 7, 6, 0, 0, 998, 999, 7, 4, 0, 0, 999, 1000, 7, 15, 0, 0, 1000, 1001, 7, 3, 0, 0, 1001, 1002, 7, 3, 0, 0, 1002, 1003, 7, 5, 0, 0, 1003, 1004, 7, 4, 0, 0, 1004, 214, 1, 0, 0, 0, 1005, 1006, 7, 6, 0, 0, 1006, 1007, 7, 4, 0, 0, 1007, 1008, 7, 16, 0, 0, 1008, 1009, 7, 10, 0, 0, 1009, 1010, 7, 14, 0, 0, 1010, 1011, 7, 1, 0, 0, 1011, 1012, 7, 6, 0, 0, 1012, 1013, 7, 5, 0, 0, 1013, 216, 1, 0, 0, 0, 1014, 1015, 7, 6, 0, 0, 1015, 1016, 7, 6, 0, 0, 1016, 1017, 7, 7, 0, 0, 1017, 218, 1, 0, 0, 0, 1018, 1019, 7, 6, 0, 0, 1019, 1020, 7, 16, 0, 0, 1020, 1021, 7, 11, 0, 0, 1021, 1022, 7, 7, 0, 0, 1022, 1023, 7, 5, 0, 0, 1023, 220, 1, 0, 0, 0, 1024, 1025, 7, 6, 0, 0, 1025, 1026, 7, 12, 0, 0, 1026, 1027, 7, 11, 0, 0, 1027, 1028, 7, 5, 0, 0, 1028, 222, 1, 0, 0, 0, 1029, 1030, 7, 16, 0, 0, 1030, 1031, 7, 10, 0, 0, 1031, 1032, 7, 7, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 7, 3, 0, 0, 1034, 1035, 7, 3, 0, 0, 1035, 1036, 7, 5, 0, 0, 1036, 1037, 7, 2, 0, 0, 1037, 224, 1, 0, 0, 0, 1038, 1039, 7, 16, 0, 0, 1039, 1040, 7, 11, 0, 0, 1040, 1041, 7, 2, 0, 0, 1041, 1042, 7, 1, 0, 0, 1042, 1043, 7, 6, 0, 0, 1043, 1044, 7, 5, 0, 0, 1044, 226, 1, 0, 0, 0, 1045, 1046, 7, 16, 0, 0, 1046, 1047, 7, 13, 0, 0, 1047, 1048, 7, 5, 0, 0, 1048, 228, 1, 0, 0, 0, 1049, 1050, 7, 16, 0, 0, 1050, 1051, 7, 13, 0, 0, 1051, 1052, 7, 5, 0, 0, 1052, 1053, 7, 4, 0, 0, 1053, 230, 1, 0, 0, 0, 1054, 1055, 7, 16, 0, 0, 1055, 1056, 7, 13, 0, 0, 1056, 1057, 7, 5, 0, 0, 1057, 1058, 7, 4, 0, 0, 1058, 1059, 7, 13, 0, 0, 1059, 232, 1, 0, 0, 0, 1060, 1061, 7, 16, 0, 0, 1061, 1062, 7, 13, 0, 0, 1062, 1063, 7, 15, 0, 0, 1063, 1064, 7, 10, 0, 0, 1064, 1065, 7, 3, 0, 0, 1065, 234, 1, 0, 0, 0, 1066, 1067, 7, 16, 0, 0, 1067, 1068, 7, 16, 0, 0, 1068, 1069, 7, 15, 0, 0, 1069, 1070, 7, 2, 0, 0, 1070, 236, 1, 0, 0, 0, 1071, 1072, 7, 25, 0, 0, 1072, 1073, 7, 1, 0, 0, 1073, 1074, 7, 7, 0, 0, 1074, 1075, 7, 16, 0, 0, 1075, 1076, 7, 5, 0, 0, 1076, 1077, 7, 13, 0, 0, 1077, 238, 1, 0, 0, 0, 1078, 1079, 7, 25, 0, 0, 1079, 1080, 7, 1, 0, 0, 1080, 1081, 7, 4, 0, 0, 1081, 1082, 7, 14, 0, 0, 1082, 1083, 7, 17, 0, 0, 1083, 1084, 7, 1, 0, 0, 1084, 1085, 7, 4, 0, 0, 1085, 240, 1, 0, 0, 0, 1086, 1087, 7, 25, 0, 0, 1087, 1088, 7, 1, 0, 0, 1088, 1089, 7, 4, 0, 0, 1089, 1090, 7, 15, 0, 0, 1090, 1091, 7, 10, 0, 0, 1091, 1092, 7, 6, 0, 0, 1092, 242, 1, 0, 0, 0, 1093, 1094, 7, 9, 0, 0, 1094, 1095, 7, 17, 0, 0, 1095, 1096, 7, 5, 0, 0, 1096, 1097, 7, 4, 0, 0, 1097, 1098, 7, 5, 0, 0, 1098, 244, 1, 0, 0, 0, 1099, 1100, 7, 9, 0, 0, 1100, 1101, 7, 15, 0, 0, 1101, 1102, 7, 6, 0, 0, 1102, 1103, 7, 17, 0, 0, 1103, 246, 1, 0, 0, 0, 1104, 1105, 7, 9, 0, 0, 1105, 1106, 7, 4, 0, 0, 1106, 1107, 7, 15, 0, 0, 1107, 1108, 7, 6, 0, 0, 1108, 1109, 7, 5, 0, 0, 1109, 1110, 7, 6, 0, 0, 1110, 1111, 7, 15, 0, 0, 1111, 1112, 7, 20, 0, 0, 1112, 1113, 7, 5, 0, 0, 1113, 248, 1, 0, 0, 0, 1114, 1115, 7, 20, 0, 0, 1115, 1116, 7, 1, 0, 0, 1116, 1117, 7, 6, 0, 0, 1117, 1118, 7, 5, 0, 0, 1118, 1119, 7, 4, 0, 0, 1119, 1120, 7, 15, 0, 0, 1120, 1121, 7, 1, 0, 0, 1121, 1122, 7, 7, 0, 0, 1122, 1123, 7, 15, 0, 0, 1123, 1124, 7, 18, 0, 0, 1124, 1125, 7, 5, 0, 0, 1125, 1126, 7, 2, 0, 0, 1126, 250, 1, 0, 0, 0, 1127, 1128, 7, 25, 0, 0, 1128, 1129, 7, 15, 0, 0, 1129, 1130, 7, 5, 0, 0, 1130, 1131, 7, 9, 0, 0, 1131, 252, 1, 0, 0, 0, 1132, 1133, 5, 59, 0, 0, 1133, 254, 1, 0, 0, 0, 1134, 1135, 5, 39, 0, 0, 1135, 256, 1, 0, 0, 0, 1136, 1137, 5, 34, 0, 0, 1137, 258, 1, 0, 0, 0, 1138, 1139, 5, 46, 0, 0, 1139, 260, 1, 0, 0, 0, 1140, 1141, 5, 44, 0, 0, 1141, 262, 1, 0, 0, 0, 1142, 1143, 5, 40, 0, 0, 1143, 264, 1, 0, 0, 0, 1144, 1145, 5, 41, 0, 0, 1145, 266, 1, 0, 0, 0, 1146, 1147, 5, 60, 0, 0, 1147, 268, 1, 0, 0, 0, 1148, 1149, 5, 62, 0, 0, 1149, 270, 1, 0, 0, 0, 1150, 1154, 3, 1, 0, 0, 1151, 1153, 7, 26, 0, 0, 1152, 1151, 1, 0, 0, 0, 1153, 1156, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 272, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1161, 3, 1, 0, 0, 1158, 1160, 7, 27, 0, 0, 1159, 1158, 1, 0, 0, 0, 1160, 1163, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1164, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 1168, 5, 45, 0, 0, 1165, 1167, 7, 27, 0, 0, 1166, 1165, 1, 0, 0, 0, 1167, 1170, 1, 0, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 274, 1, 0, 0, 0, 1170, 1168, 1, 0, 0, 0, 1171, 1173, 7, 28, 0, 0, 1172, 1171, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1177, 6, 137, 0, 0, 1177, 276, 1, 0, 0, 0, 1178, 1179, 5, 45, 0, 0, 1179, 1180, 5, 45, 0, 0, 1180, 1184, 5, 32, 0, 0, 1181, 1182, 5, 47, 0, 0, 1182, 1184, 5, 47, 0, 0, 1183, 1178, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1188, 1, 0, 0, 0, 1185, 1187, 9, 0, 0, 0, 1186, 1185, 1, 0, 0, 0, 1187, 1190, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1191, 1, 0, 0, 0, 1190, 1188, 1, 0, 0, 0, 1191, 1192, 7, 29, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 6, 138, 0, 0, 1194, 278, 1, 0, 0, 0, 1195, 1196, 5, 47, 0, 0, 1196, 1197, 5, 42, 0, 0, 1197, 1201, 1, 0, 0, 0, 1198, 1200, 9, 0, 0, 0, 1199, 1198, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1202, 1204, 1, 0, 0, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1205, 5, 42, 0, 0, 1205, 1206, 5, 47, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 6, 139, 0, 0, 1208, 280, 1, 0, 0, 0, 1209, 1210, 9, 0, 0, 0, 1210, 282, 1, 0, 0, 0, 8, 0, 1154, 1161, 1168, 1174, 1183, 1188, 1201, 1, 0, 1, 0] \ No newline at end of file +[4, 0, 208, 1806, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 5, 203, 1748, 8, 203, 10, 203, 12, 203, 1751, 9, 203, 1, 204, 1, 204, 5, 204, 1755, 8, 204, 10, 204, 12, 204, 1758, 9, 204, 1, 204, 1, 204, 5, 204, 1762, 8, 204, 10, 204, 12, 204, 1765, 9, 204, 1, 205, 4, 205, 1768, 8, 205, 11, 205, 12, 205, 1769, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 1779, 8, 206, 1, 206, 5, 206, 1782, 8, 206, 10, 206, 12, 206, 1785, 9, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 5, 207, 1795, 8, 207, 10, 207, 12, 207, 1798, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 2, 1783, 1796, 0, 209, 1, 0, 3, 1, 5, 2, 7, 3, 9, 4, 11, 5, 13, 6, 15, 7, 17, 8, 19, 9, 21, 10, 23, 11, 25, 12, 27, 13, 29, 14, 31, 15, 33, 16, 35, 17, 37, 18, 39, 19, 41, 20, 43, 21, 45, 22, 47, 23, 49, 24, 51, 25, 53, 26, 55, 27, 57, 28, 59, 29, 61, 30, 63, 31, 65, 32, 67, 33, 69, 34, 71, 35, 73, 36, 75, 37, 77, 38, 79, 39, 81, 40, 83, 41, 85, 42, 87, 43, 89, 44, 91, 45, 93, 46, 95, 47, 97, 48, 99, 49, 101, 50, 103, 51, 105, 52, 107, 53, 109, 54, 111, 55, 113, 56, 115, 57, 117, 58, 119, 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 65, 133, 66, 135, 67, 137, 68, 139, 69, 141, 70, 143, 71, 145, 72, 147, 73, 149, 74, 151, 75, 153, 76, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, 82, 167, 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, 90, 183, 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, 98, 199, 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, 213, 106, 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 112, 227, 113, 229, 114, 231, 115, 233, 116, 235, 117, 237, 118, 239, 119, 241, 120, 243, 121, 245, 122, 247, 123, 249, 124, 251, 125, 253, 126, 255, 127, 257, 128, 259, 129, 261, 130, 263, 131, 265, 132, 267, 133, 269, 134, 271, 135, 273, 136, 275, 137, 277, 138, 279, 139, 281, 140, 283, 141, 285, 142, 287, 143, 289, 144, 291, 145, 293, 146, 295, 147, 297, 148, 299, 149, 301, 150, 303, 151, 305, 152, 307, 153, 309, 154, 311, 155, 313, 156, 315, 157, 317, 158, 319, 159, 321, 160, 323, 161, 325, 162, 327, 163, 329, 164, 331, 165, 333, 166, 335, 167, 337, 168, 339, 169, 341, 170, 343, 171, 345, 172, 347, 173, 349, 174, 351, 175, 353, 176, 355, 177, 357, 178, 359, 179, 361, 180, 363, 181, 365, 182, 367, 183, 369, 184, 371, 185, 373, 186, 375, 187, 377, 188, 379, 189, 381, 190, 383, 191, 385, 192, 387, 193, 389, 194, 391, 195, 393, 196, 395, 197, 397, 198, 399, 199, 401, 200, 403, 201, 405, 202, 407, 203, 409, 204, 411, 205, 413, 206, 415, 207, 417, 208, 1, 0, 31, 2, 0, 65, 90, 97, 122, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 71, 71, 103, 103, 2, 0, 82, 82, 114, 114, 2, 0, 69, 69, 101, 101, 2, 0, 84, 84, 116, 116, 2, 0, 76, 76, 108, 108, 2, 0, 79, 79, 111, 111, 2, 0, 87, 87, 119, 119, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 80, 80, 112, 112, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, 66, 66, 98, 98, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 81, 81, 113, 113, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 5, 0, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1811, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 1, 419, 1, 0, 0, 0, 3, 421, 1, 0, 0, 0, 5, 425, 1, 0, 0, 0, 7, 435, 1, 0, 0, 0, 9, 439, 1, 0, 0, 0, 11, 445, 1, 0, 0, 0, 13, 451, 1, 0, 0, 0, 15, 455, 1, 0, 0, 0, 17, 459, 1, 0, 0, 0, 19, 465, 1, 0, 0, 0, 21, 471, 1, 0, 0, 0, 23, 474, 1, 0, 0, 0, 25, 478, 1, 0, 0, 0, 27, 484, 1, 0, 0, 0, 29, 505, 1, 0, 0, 0, 31, 508, 1, 0, 0, 0, 33, 518, 1, 0, 0, 0, 35, 524, 1, 0, 0, 0, 37, 530, 1, 0, 0, 0, 39, 538, 1, 0, 0, 0, 41, 545, 1, 0, 0, 0, 43, 550, 1, 0, 0, 0, 45, 558, 1, 0, 0, 0, 47, 561, 1, 0, 0, 0, 49, 568, 1, 0, 0, 0, 51, 573, 1, 0, 0, 0, 53, 578, 1, 0, 0, 0, 55, 589, 1, 0, 0, 0, 57, 597, 1, 0, 0, 0, 59, 610, 1, 0, 0, 0, 61, 618, 1, 0, 0, 0, 63, 627, 1, 0, 0, 0, 65, 633, 1, 0, 0, 0, 67, 641, 1, 0, 0, 0, 69, 648, 1, 0, 0, 0, 71, 654, 1, 0, 0, 0, 73, 659, 1, 0, 0, 0, 75, 667, 1, 0, 0, 0, 77, 674, 1, 0, 0, 0, 79, 679, 1, 0, 0, 0, 81, 687, 1, 0, 0, 0, 83, 695, 1, 0, 0, 0, 85, 702, 1, 0, 0, 0, 87, 709, 1, 0, 0, 0, 89, 714, 1, 0, 0, 0, 91, 723, 1, 0, 0, 0, 93, 732, 1, 0, 0, 0, 95, 739, 1, 0, 0, 0, 97, 744, 1, 0, 0, 0, 99, 749, 1, 0, 0, 0, 101, 753, 1, 0, 0, 0, 103, 761, 1, 0, 0, 0, 105, 766, 1, 0, 0, 0, 107, 773, 1, 0, 0, 0, 109, 780, 1, 0, 0, 0, 111, 788, 1, 0, 0, 0, 113, 796, 1, 0, 0, 0, 115, 803, 1, 0, 0, 0, 117, 811, 1, 0, 0, 0, 119, 817, 1, 0, 0, 0, 121, 823, 1, 0, 0, 0, 123, 833, 1, 0, 0, 0, 125, 843, 1, 0, 0, 0, 127, 849, 1, 0, 0, 0, 129, 859, 1, 0, 0, 0, 131, 863, 1, 0, 0, 0, 133, 868, 1, 0, 0, 0, 135, 875, 1, 0, 0, 0, 137, 880, 1, 0, 0, 0, 139, 889, 1, 0, 0, 0, 141, 899, 1, 0, 0, 0, 143, 905, 1, 0, 0, 0, 145, 911, 1, 0, 0, 0, 147, 920, 1, 0, 0, 0, 149, 927, 1, 0, 0, 0, 151, 932, 1, 0, 0, 0, 153, 939, 1, 0, 0, 0, 155, 942, 1, 0, 0, 0, 157, 949, 1, 0, 0, 0, 159, 952, 1, 0, 0, 0, 161, 958, 1, 0, 0, 0, 163, 963, 1, 0, 0, 0, 165, 972, 1, 0, 0, 0, 167, 981, 1, 0, 0, 0, 169, 987, 1, 0, 0, 0, 171, 993, 1, 0, 0, 0, 173, 1000, 1, 0, 0, 0, 175, 1004, 1, 0, 0, 0, 177, 1014, 1, 0, 0, 0, 179, 1023, 1, 0, 0, 0, 181, 1028, 1, 0, 0, 0, 183, 1031, 1, 0, 0, 0, 185, 1036, 1, 0, 0, 0, 187, 1041, 1, 0, 0, 0, 189, 1045, 1, 0, 0, 0, 191, 1050, 1, 0, 0, 0, 193, 1059, 1, 0, 0, 0, 195, 1069, 1, 0, 0, 0, 197, 1078, 1, 0, 0, 0, 199, 1086, 1, 0, 0, 0, 201, 1091, 1, 0, 0, 0, 203, 1096, 1, 0, 0, 0, 205, 1102, 1, 0, 0, 0, 207, 1107, 1, 0, 0, 0, 209, 1113, 1, 0, 0, 0, 211, 1120, 1, 0, 0, 0, 213, 1124, 1, 0, 0, 0, 215, 1130, 1, 0, 0, 0, 217, 1137, 1, 0, 0, 0, 219, 1141, 1, 0, 0, 0, 221, 1149, 1, 0, 0, 0, 223, 1153, 1, 0, 0, 0, 225, 1156, 1, 0, 0, 0, 227, 1164, 1, 0, 0, 0, 229, 1176, 1, 0, 0, 0, 231, 1188, 1, 0, 0, 0, 233, 1192, 1, 0, 0, 0, 235, 1197, 1, 0, 0, 0, 237, 1203, 1, 0, 0, 0, 239, 1206, 1, 0, 0, 0, 241, 1209, 1, 0, 0, 0, 243, 1217, 1, 0, 0, 0, 245, 1220, 1, 0, 0, 0, 247, 1226, 1, 0, 0, 0, 249, 1232, 1, 0, 0, 0, 251, 1237, 1, 0, 0, 0, 253, 1247, 1, 0, 0, 0, 255, 1256, 1, 0, 0, 0, 257, 1267, 1, 0, 0, 0, 259, 1279, 1, 0, 0, 0, 261, 1289, 1, 0, 0, 0, 263, 1297, 1, 0, 0, 0, 265, 1303, 1, 0, 0, 0, 267, 1311, 1, 0, 0, 0, 269, 1317, 1, 0, 0, 0, 271, 1327, 1, 0, 0, 0, 273, 1334, 1, 0, 0, 0, 275, 1342, 1, 0, 0, 0, 277, 1350, 1, 0, 0, 0, 279, 1358, 1, 0, 0, 0, 281, 1365, 1, 0, 0, 0, 283, 1371, 1, 0, 0, 0, 285, 1376, 1, 0, 0, 0, 287, 1382, 1, 0, 0, 0, 289, 1389, 1, 0, 0, 0, 291, 1394, 1, 0, 0, 0, 293, 1401, 1, 0, 0, 0, 295, 1408, 1, 0, 0, 0, 297, 1412, 1, 0, 0, 0, 299, 1418, 1, 0, 0, 0, 301, 1427, 1, 0, 0, 0, 303, 1432, 1, 0, 0, 0, 305, 1439, 1, 0, 0, 0, 307, 1447, 1, 0, 0, 0, 309, 1454, 1, 0, 0, 0, 311, 1460, 1, 0, 0, 0, 313, 1470, 1, 0, 0, 0, 315, 1476, 1, 0, 0, 0, 317, 1488, 1, 0, 0, 0, 319, 1493, 1, 0, 0, 0, 321, 1498, 1, 0, 0, 0, 323, 1503, 1, 0, 0, 0, 325, 1513, 1, 0, 0, 0, 327, 1522, 1, 0, 0, 0, 329, 1530, 1, 0, 0, 0, 331, 1533, 1, 0, 0, 0, 333, 1539, 1, 0, 0, 0, 335, 1545, 1, 0, 0, 0, 337, 1553, 1, 0, 0, 0, 339, 1558, 1, 0, 0, 0, 341, 1567, 1, 0, 0, 0, 343, 1571, 1, 0, 0, 0, 345, 1577, 1, 0, 0, 0, 347, 1582, 1, 0, 0, 0, 349, 1592, 1, 0, 0, 0, 351, 1598, 1, 0, 0, 0, 353, 1607, 1, 0, 0, 0, 355, 1614, 1, 0, 0, 0, 357, 1621, 1, 0, 0, 0, 359, 1625, 1, 0, 0, 0, 361, 1630, 1, 0, 0, 0, 363, 1636, 1, 0, 0, 0, 365, 1642, 1, 0, 0, 0, 367, 1647, 1, 0, 0, 0, 369, 1654, 1, 0, 0, 0, 371, 1662, 1, 0, 0, 0, 373, 1669, 1, 0, 0, 0, 375, 1674, 1, 0, 0, 0, 377, 1680, 1, 0, 0, 0, 379, 1687, 1, 0, 0, 0, 381, 1692, 1, 0, 0, 0, 383, 1699, 1, 0, 0, 0, 385, 1709, 1, 0, 0, 0, 387, 1722, 1, 0, 0, 0, 389, 1727, 1, 0, 0, 0, 391, 1729, 1, 0, 0, 0, 393, 1731, 1, 0, 0, 0, 395, 1733, 1, 0, 0, 0, 397, 1735, 1, 0, 0, 0, 399, 1737, 1, 0, 0, 0, 401, 1739, 1, 0, 0, 0, 403, 1741, 1, 0, 0, 0, 405, 1743, 1, 0, 0, 0, 407, 1745, 1, 0, 0, 0, 409, 1752, 1, 0, 0, 0, 411, 1767, 1, 0, 0, 0, 413, 1778, 1, 0, 0, 0, 415, 1790, 1, 0, 0, 0, 417, 1804, 1, 0, 0, 0, 419, 420, 7, 0, 0, 0, 420, 2, 1, 0, 0, 0, 421, 422, 7, 1, 0, 0, 422, 423, 7, 2, 0, 0, 423, 424, 7, 2, 0, 0, 424, 4, 1, 0, 0, 0, 425, 426, 7, 1, 0, 0, 426, 427, 7, 3, 0, 0, 427, 428, 7, 3, 0, 0, 428, 429, 7, 4, 0, 0, 429, 430, 7, 5, 0, 0, 430, 431, 7, 3, 0, 0, 431, 432, 7, 1, 0, 0, 432, 433, 7, 6, 0, 0, 433, 434, 7, 5, 0, 0, 434, 6, 1, 0, 0, 0, 435, 436, 7, 1, 0, 0, 436, 437, 7, 7, 0, 0, 437, 438, 7, 7, 0, 0, 438, 8, 1, 0, 0, 0, 439, 440, 7, 1, 0, 0, 440, 441, 7, 7, 0, 0, 441, 442, 7, 7, 0, 0, 442, 443, 7, 8, 0, 0, 443, 444, 7, 9, 0, 0, 444, 10, 1, 0, 0, 0, 445, 446, 7, 1, 0, 0, 446, 447, 7, 7, 0, 0, 447, 448, 7, 6, 0, 0, 448, 449, 7, 5, 0, 0, 449, 450, 7, 4, 0, 0, 450, 12, 1, 0, 0, 0, 451, 452, 7, 1, 0, 0, 452, 453, 7, 10, 0, 0, 453, 454, 7, 2, 0, 0, 454, 14, 1, 0, 0, 0, 455, 456, 7, 1, 0, 0, 456, 457, 7, 10, 0, 0, 457, 458, 7, 11, 0, 0, 458, 16, 1, 0, 0, 0, 459, 460, 7, 1, 0, 0, 460, 461, 7, 12, 0, 0, 461, 462, 7, 12, 0, 0, 462, 463, 7, 7, 0, 0, 463, 464, 7, 11, 0, 0, 464, 18, 1, 0, 0, 0, 465, 466, 7, 1, 0, 0, 466, 467, 7, 4, 0, 0, 467, 468, 7, 4, 0, 0, 468, 469, 7, 1, 0, 0, 469, 470, 7, 11, 0, 0, 470, 20, 1, 0, 0, 0, 471, 472, 7, 1, 0, 0, 472, 473, 7, 13, 0, 0, 473, 22, 1, 0, 0, 0, 474, 475, 7, 1, 0, 0, 475, 476, 7, 13, 0, 0, 476, 477, 7, 14, 0, 0, 477, 24, 1, 0, 0, 0, 478, 479, 7, 1, 0, 0, 479, 480, 7, 13, 0, 0, 480, 481, 7, 14, 0, 0, 481, 482, 7, 15, 0, 0, 482, 483, 7, 15, 0, 0, 483, 26, 1, 0, 0, 0, 484, 485, 7, 1, 0, 0, 485, 486, 7, 13, 0, 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 5, 0, 0, 488, 489, 7, 4, 0, 0, 489, 490, 7, 6, 0, 0, 490, 491, 5, 95, 0, 0, 491, 492, 7, 4, 0, 0, 492, 493, 7, 8, 0, 0, 493, 494, 7, 9, 0, 0, 494, 495, 7, 13, 0, 0, 495, 496, 5, 95, 0, 0, 496, 497, 7, 16, 0, 0, 497, 498, 7, 8, 0, 0, 498, 499, 7, 2, 0, 0, 499, 500, 7, 15, 0, 0, 500, 501, 7, 17, 0, 0, 501, 502, 7, 15, 0, 0, 502, 503, 7, 5, 0, 0, 503, 504, 7, 2, 0, 0, 504, 28, 1, 0, 0, 0, 505, 506, 7, 1, 0, 0, 506, 507, 7, 6, 0, 0, 507, 30, 1, 0, 0, 0, 508, 509, 7, 1, 0, 0, 509, 510, 7, 18, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 19, 0, 0, 512, 513, 7, 8, 0, 0, 513, 514, 7, 4, 0, 0, 514, 515, 7, 15, 0, 0, 515, 516, 7, 20, 0, 0, 516, 517, 7, 5, 0, 0, 517, 32, 1, 0, 0, 0, 518, 519, 7, 21, 0, 0, 519, 520, 7, 1, 0, 0, 520, 521, 7, 6, 0, 0, 521, 522, 7, 14, 0, 0, 522, 523, 7, 19, 0, 0, 523, 34, 1, 0, 0, 0, 524, 525, 7, 21, 0, 0, 525, 526, 7, 5, 0, 0, 526, 527, 7, 3, 0, 0, 527, 528, 7, 15, 0, 0, 528, 529, 7, 10, 0, 0, 529, 36, 1, 0, 0, 0, 530, 531, 7, 21, 0, 0, 531, 532, 7, 5, 0, 0, 532, 533, 7, 6, 0, 0, 533, 534, 7, 9, 0, 0, 534, 535, 7, 5, 0, 0, 535, 536, 7, 5, 0, 0, 536, 537, 7, 10, 0, 0, 537, 38, 1, 0, 0, 0, 538, 539, 7, 21, 0, 0, 539, 540, 7, 15, 0, 0, 540, 541, 7, 3, 0, 0, 541, 542, 7, 15, 0, 0, 542, 543, 7, 10, 0, 0, 543, 544, 7, 6, 0, 0, 544, 40, 1, 0, 0, 0, 545, 546, 7, 21, 0, 0, 546, 547, 7, 7, 0, 0, 547, 548, 7, 8, 0, 0, 548, 549, 7, 21, 0, 0, 549, 42, 1, 0, 0, 0, 550, 551, 7, 21, 0, 0, 551, 552, 7, 8, 0, 0, 552, 553, 7, 8, 0, 0, 553, 554, 7, 7, 0, 0, 554, 555, 7, 5, 0, 0, 555, 556, 7, 1, 0, 0, 556, 557, 7, 10, 0, 0, 557, 44, 1, 0, 0, 0, 558, 559, 7, 21, 0, 0, 559, 560, 7, 11, 0, 0, 560, 46, 1, 0, 0, 0, 561, 562, 7, 14, 0, 0, 562, 563, 7, 1, 0, 0, 563, 564, 7, 7, 0, 0, 564, 565, 7, 7, 0, 0, 565, 566, 7, 5, 0, 0, 566, 567, 7, 2, 0, 0, 567, 48, 1, 0, 0, 0, 568, 569, 7, 14, 0, 0, 569, 570, 7, 1, 0, 0, 570, 571, 7, 13, 0, 0, 571, 572, 7, 5, 0, 0, 572, 50, 1, 0, 0, 0, 573, 574, 7, 14, 0, 0, 574, 575, 7, 1, 0, 0, 575, 576, 7, 13, 0, 0, 576, 577, 7, 6, 0, 0, 577, 52, 1, 0, 0, 0, 578, 579, 7, 14, 0, 0, 579, 580, 7, 7, 0, 0, 580, 581, 7, 18, 0, 0, 581, 582, 7, 13, 0, 0, 582, 583, 7, 6, 0, 0, 583, 584, 7, 5, 0, 0, 584, 585, 7, 4, 0, 0, 585, 586, 7, 15, 0, 0, 586, 587, 7, 10, 0, 0, 587, 588, 7, 3, 0, 0, 588, 54, 1, 0, 0, 0, 589, 590, 7, 14, 0, 0, 590, 591, 7, 8, 0, 0, 591, 592, 7, 7, 0, 0, 592, 593, 7, 7, 0, 0, 593, 594, 7, 1, 0, 0, 594, 595, 7, 6, 0, 0, 595, 596, 7, 5, 0, 0, 596, 56, 1, 0, 0, 0, 597, 598, 7, 14, 0, 0, 598, 599, 7, 8, 0, 0, 599, 600, 7, 7, 0, 0, 600, 601, 7, 18, 0, 0, 601, 602, 7, 16, 0, 0, 602, 603, 7, 10, 0, 0, 603, 604, 7, 17, 0, 0, 604, 605, 7, 1, 0, 0, 605, 606, 7, 16, 0, 0, 606, 607, 7, 15, 0, 0, 607, 608, 7, 7, 0, 0, 608, 609, 7, 11, 0, 0, 609, 58, 1, 0, 0, 0, 610, 611, 7, 14, 0, 0, 611, 612, 7, 8, 0, 0, 612, 613, 7, 16, 0, 0, 613, 614, 7, 12, 0, 0, 614, 615, 7, 1, 0, 0, 615, 616, 7, 14, 0, 0, 616, 617, 7, 6, 0, 0, 617, 60, 1, 0, 0, 0, 618, 619, 7, 14, 0, 0, 619, 620, 7, 8, 0, 0, 620, 621, 7, 10, 0, 0, 621, 622, 7, 6, 0, 0, 622, 623, 7, 1, 0, 0, 623, 624, 7, 15, 0, 0, 624, 625, 7, 10, 0, 0, 625, 626, 7, 13, 0, 0, 626, 62, 1, 0, 0, 0, 627, 628, 7, 14, 0, 0, 628, 629, 7, 8, 0, 0, 629, 630, 7, 18, 0, 0, 630, 631, 7, 10, 0, 0, 631, 632, 7, 6, 0, 0, 632, 64, 1, 0, 0, 0, 633, 634, 7, 14, 0, 0, 634, 635, 7, 8, 0, 0, 635, 636, 7, 18, 0, 0, 636, 637, 7, 10, 0, 0, 637, 638, 7, 6, 0, 0, 638, 639, 7, 5, 0, 0, 639, 640, 7, 4, 0, 0, 640, 66, 1, 0, 0, 0, 641, 642, 7, 14, 0, 0, 642, 643, 7, 4, 0, 0, 643, 644, 7, 5, 0, 0, 644, 645, 7, 1, 0, 0, 645, 646, 7, 6, 0, 0, 646, 647, 7, 5, 0, 0, 647, 68, 1, 0, 0, 0, 648, 649, 7, 14, 0, 0, 649, 650, 7, 4, 0, 0, 650, 651, 7, 8, 0, 0, 651, 652, 7, 13, 0, 0, 652, 653, 7, 13, 0, 0, 653, 70, 1, 0, 0, 0, 654, 655, 7, 14, 0, 0, 655, 656, 7, 18, 0, 0, 656, 657, 7, 21, 0, 0, 657, 658, 7, 5, 0, 0, 658, 72, 1, 0, 0, 0, 659, 660, 7, 14, 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 4, 0, 0, 662, 663, 7, 4, 0, 0, 663, 664, 7, 5, 0, 0, 664, 665, 7, 10, 0, 0, 665, 666, 7, 6, 0, 0, 666, 74, 1, 0, 0, 0, 667, 668, 7, 14, 0, 0, 668, 669, 7, 18, 0, 0, 669, 670, 7, 13, 0, 0, 670, 671, 7, 6, 0, 0, 671, 672, 7, 8, 0, 0, 672, 673, 7, 16, 0, 0, 673, 76, 1, 0, 0, 0, 674, 675, 7, 2, 0, 0, 675, 676, 7, 1, 0, 0, 676, 677, 7, 6, 0, 0, 677, 678, 7, 5, 0, 0, 678, 78, 1, 0, 0, 0, 679, 680, 7, 2, 0, 0, 680, 681, 7, 5, 0, 0, 681, 682, 7, 14, 0, 0, 682, 683, 7, 15, 0, 0, 683, 684, 7, 16, 0, 0, 684, 685, 7, 1, 0, 0, 685, 686, 7, 7, 0, 0, 686, 80, 1, 0, 0, 0, 687, 688, 7, 2, 0, 0, 688, 689, 7, 5, 0, 0, 689, 690, 7, 17, 0, 0, 690, 691, 7, 1, 0, 0, 691, 692, 7, 18, 0, 0, 692, 693, 7, 7, 0, 0, 693, 694, 7, 6, 0, 0, 694, 82, 1, 0, 0, 0, 695, 696, 7, 2, 0, 0, 696, 697, 7, 5, 0, 0, 697, 698, 7, 17, 0, 0, 698, 699, 7, 15, 0, 0, 699, 700, 7, 10, 0, 0, 700, 701, 7, 5, 0, 0, 701, 84, 1, 0, 0, 0, 702, 703, 7, 2, 0, 0, 703, 704, 7, 5, 0, 0, 704, 705, 7, 7, 0, 0, 705, 706, 7, 5, 0, 0, 706, 707, 7, 6, 0, 0, 707, 708, 7, 5, 0, 0, 708, 86, 1, 0, 0, 0, 709, 710, 7, 2, 0, 0, 710, 711, 7, 5, 0, 0, 711, 712, 7, 13, 0, 0, 712, 713, 7, 14, 0, 0, 713, 88, 1, 0, 0, 0, 714, 715, 7, 2, 0, 0, 715, 716, 7, 5, 0, 0, 716, 717, 7, 13, 0, 0, 717, 718, 7, 14, 0, 0, 718, 719, 7, 4, 0, 0, 719, 720, 7, 15, 0, 0, 720, 721, 7, 21, 0, 0, 721, 722, 7, 5, 0, 0, 722, 90, 1, 0, 0, 0, 723, 724, 7, 2, 0, 0, 724, 725, 7, 15, 0, 0, 725, 726, 7, 13, 0, 0, 726, 727, 7, 6, 0, 0, 727, 728, 7, 15, 0, 0, 728, 729, 7, 10, 0, 0, 729, 730, 7, 14, 0, 0, 730, 731, 7, 6, 0, 0, 731, 92, 1, 0, 0, 0, 732, 733, 7, 2, 0, 0, 733, 734, 7, 8, 0, 0, 734, 735, 7, 18, 0, 0, 735, 736, 7, 21, 0, 0, 736, 737, 7, 7, 0, 0, 737, 738, 7, 5, 0, 0, 738, 94, 1, 0, 0, 0, 739, 740, 7, 2, 0, 0, 740, 741, 7, 4, 0, 0, 741, 742, 7, 8, 0, 0, 742, 743, 7, 12, 0, 0, 743, 96, 1, 0, 0, 0, 744, 745, 7, 5, 0, 0, 745, 746, 7, 7, 0, 0, 746, 747, 7, 13, 0, 0, 747, 748, 7, 5, 0, 0, 748, 98, 1, 0, 0, 0, 749, 750, 7, 5, 0, 0, 750, 751, 7, 10, 0, 0, 751, 752, 7, 2, 0, 0, 752, 100, 1, 0, 0, 0, 753, 754, 7, 5, 0, 0, 754, 755, 7, 10, 0, 0, 755, 756, 7, 6, 0, 0, 756, 757, 7, 4, 0, 0, 757, 758, 7, 15, 0, 0, 758, 759, 7, 5, 0, 0, 759, 760, 7, 13, 0, 0, 760, 102, 1, 0, 0, 0, 761, 762, 7, 5, 0, 0, 762, 763, 7, 10, 0, 0, 763, 764, 7, 18, 0, 0, 764, 765, 7, 16, 0, 0, 765, 104, 1, 0, 0, 0, 766, 767, 7, 5, 0, 0, 767, 768, 7, 13, 0, 0, 768, 769, 7, 14, 0, 0, 769, 770, 7, 1, 0, 0, 770, 771, 7, 12, 0, 0, 771, 772, 7, 5, 0, 0, 772, 106, 1, 0, 0, 0, 773, 774, 7, 5, 0, 0, 774, 775, 7, 22, 0, 0, 775, 776, 7, 14, 0, 0, 776, 777, 7, 5, 0, 0, 777, 778, 7, 12, 0, 0, 778, 779, 7, 6, 0, 0, 779, 108, 1, 0, 0, 0, 780, 781, 7, 5, 0, 0, 781, 782, 7, 22, 0, 0, 782, 783, 7, 14, 0, 0, 783, 784, 7, 7, 0, 0, 784, 785, 7, 18, 0, 0, 785, 786, 7, 2, 0, 0, 786, 787, 7, 5, 0, 0, 787, 110, 1, 0, 0, 0, 788, 789, 7, 5, 0, 0, 789, 790, 7, 22, 0, 0, 790, 791, 7, 5, 0, 0, 791, 792, 7, 14, 0, 0, 792, 793, 7, 18, 0, 0, 793, 794, 7, 6, 0, 0, 794, 795, 7, 5, 0, 0, 795, 112, 1, 0, 0, 0, 796, 797, 7, 5, 0, 0, 797, 798, 7, 22, 0, 0, 798, 799, 7, 15, 0, 0, 799, 800, 7, 13, 0, 0, 800, 801, 7, 6, 0, 0, 801, 802, 7, 13, 0, 0, 802, 114, 1, 0, 0, 0, 803, 804, 7, 5, 0, 0, 804, 805, 7, 22, 0, 0, 805, 806, 7, 6, 0, 0, 806, 807, 7, 4, 0, 0, 807, 808, 7, 1, 0, 0, 808, 809, 7, 14, 0, 0, 809, 810, 7, 6, 0, 0, 810, 116, 1, 0, 0, 0, 811, 812, 7, 17, 0, 0, 812, 813, 7, 1, 0, 0, 813, 814, 7, 7, 0, 0, 814, 815, 7, 13, 0, 0, 815, 816, 7, 5, 0, 0, 816, 118, 1, 0, 0, 0, 817, 818, 7, 17, 0, 0, 818, 819, 7, 5, 0, 0, 819, 820, 7, 6, 0, 0, 820, 821, 7, 14, 0, 0, 821, 822, 7, 19, 0, 0, 822, 120, 1, 0, 0, 0, 823, 824, 7, 17, 0, 0, 824, 825, 7, 15, 0, 0, 825, 826, 7, 7, 0, 0, 826, 827, 7, 6, 0, 0, 827, 828, 7, 5, 0, 0, 828, 829, 7, 4, 0, 0, 829, 830, 7, 15, 0, 0, 830, 831, 7, 10, 0, 0, 831, 832, 7, 3, 0, 0, 832, 122, 1, 0, 0, 0, 833, 834, 7, 17, 0, 0, 834, 835, 7, 15, 0, 0, 835, 836, 7, 10, 0, 0, 836, 837, 7, 1, 0, 0, 837, 838, 7, 7, 0, 0, 838, 839, 7, 17, 0, 0, 839, 840, 7, 18, 0, 0, 840, 841, 7, 10, 0, 0, 841, 842, 7, 14, 0, 0, 842, 124, 1, 0, 0, 0, 843, 844, 7, 17, 0, 0, 844, 845, 7, 7, 0, 0, 845, 846, 7, 8, 0, 0, 846, 847, 7, 1, 0, 0, 847, 848, 7, 6, 0, 0, 848, 126, 1, 0, 0, 0, 849, 850, 7, 17, 0, 0, 850, 851, 7, 8, 0, 0, 851, 852, 7, 7, 0, 0, 852, 853, 7, 7, 0, 0, 853, 854, 7, 8, 0, 0, 854, 855, 7, 9, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 10, 0, 0, 857, 858, 7, 3, 0, 0, 858, 128, 1, 0, 0, 0, 859, 860, 7, 17, 0, 0, 860, 861, 7, 8, 0, 0, 861, 862, 7, 4, 0, 0, 862, 130, 1, 0, 0, 0, 863, 864, 7, 17, 0, 0, 864, 865, 7, 4, 0, 0, 865, 866, 7, 8, 0, 0, 866, 867, 7, 16, 0, 0, 867, 132, 1, 0, 0, 0, 868, 869, 7, 17, 0, 0, 869, 870, 7, 4, 0, 0, 870, 871, 7, 8, 0, 0, 871, 872, 7, 20, 0, 0, 872, 873, 7, 5, 0, 0, 873, 874, 7, 10, 0, 0, 874, 134, 1, 0, 0, 0, 875, 876, 7, 17, 0, 0, 876, 877, 7, 18, 0, 0, 877, 878, 7, 7, 0, 0, 878, 879, 7, 7, 0, 0, 879, 136, 1, 0, 0, 0, 880, 881, 7, 17, 0, 0, 881, 882, 7, 18, 0, 0, 882, 883, 7, 10, 0, 0, 883, 884, 7, 14, 0, 0, 884, 885, 7, 6, 0, 0, 885, 886, 7, 15, 0, 0, 886, 887, 7, 8, 0, 0, 887, 888, 7, 10, 0, 0, 888, 138, 1, 0, 0, 0, 889, 890, 7, 17, 0, 0, 890, 891, 7, 18, 0, 0, 891, 892, 7, 10, 0, 0, 892, 893, 7, 14, 0, 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 15, 0, 0, 895, 896, 7, 8, 0, 0, 896, 897, 7, 10, 0, 0, 897, 898, 7, 13, 0, 0, 898, 140, 1, 0, 0, 0, 899, 900, 7, 3, 0, 0, 900, 901, 7, 4, 0, 0, 901, 902, 7, 1, 0, 0, 902, 903, 7, 10, 0, 0, 903, 904, 7, 6, 0, 0, 904, 142, 1, 0, 0, 0, 905, 906, 7, 3, 0, 0, 906, 907, 7, 4, 0, 0, 907, 908, 7, 8, 0, 0, 908, 909, 7, 18, 0, 0, 909, 910, 7, 12, 0, 0, 910, 144, 1, 0, 0, 0, 911, 912, 7, 3, 0, 0, 912, 913, 7, 4, 0, 0, 913, 914, 7, 8, 0, 0, 914, 915, 7, 18, 0, 0, 915, 916, 7, 12, 0, 0, 916, 917, 7, 15, 0, 0, 917, 918, 7, 10, 0, 0, 918, 919, 7, 3, 0, 0, 919, 146, 1, 0, 0, 0, 920, 921, 7, 3, 0, 0, 921, 922, 7, 4, 0, 0, 922, 923, 7, 8, 0, 0, 923, 924, 7, 18, 0, 0, 924, 925, 7, 12, 0, 0, 925, 926, 7, 13, 0, 0, 926, 148, 1, 0, 0, 0, 927, 928, 7, 19, 0, 0, 928, 929, 7, 1, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 19, 0, 0, 931, 150, 1, 0, 0, 0, 932, 933, 7, 19, 0, 0, 933, 934, 7, 1, 0, 0, 934, 935, 7, 23, 0, 0, 935, 936, 7, 15, 0, 0, 936, 937, 7, 10, 0, 0, 937, 938, 7, 3, 0, 0, 938, 152, 1, 0, 0, 0, 939, 940, 7, 15, 0, 0, 940, 941, 7, 17, 0, 0, 941, 154, 1, 0, 0, 0, 942, 943, 7, 15, 0, 0, 943, 944, 7, 3, 0, 0, 944, 945, 7, 10, 0, 0, 945, 946, 7, 8, 0, 0, 946, 947, 7, 4, 0, 0, 947, 948, 7, 5, 0, 0, 948, 156, 1, 0, 0, 0, 949, 950, 7, 15, 0, 0, 950, 951, 7, 10, 0, 0, 951, 158, 1, 0, 0, 0, 952, 953, 7, 15, 0, 0, 953, 954, 7, 10, 0, 0, 954, 955, 7, 2, 0, 0, 955, 956, 7, 5, 0, 0, 956, 957, 7, 22, 0, 0, 957, 160, 1, 0, 0, 0, 958, 959, 7, 15, 0, 0, 959, 960, 7, 10, 0, 0, 960, 961, 7, 5, 0, 0, 961, 962, 7, 6, 0, 0, 962, 162, 1, 0, 0, 0, 963, 964, 7, 15, 0, 0, 964, 965, 7, 10, 0, 0, 965, 966, 7, 17, 0, 0, 966, 967, 7, 15, 0, 0, 967, 968, 7, 10, 0, 0, 968, 969, 7, 15, 0, 0, 969, 970, 7, 6, 0, 0, 970, 971, 7, 11, 0, 0, 971, 164, 1, 0, 0, 0, 972, 973, 7, 15, 0, 0, 973, 974, 7, 10, 0, 0, 974, 975, 7, 15, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, 7, 14, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 10, 0, 0, 979, 980, 7, 2, 0, 0, 980, 166, 1, 0, 0, 0, 981, 982, 7, 15, 0, 0, 982, 983, 7, 10, 0, 0, 983, 984, 7, 10, 0, 0, 984, 985, 7, 5, 0, 0, 985, 986, 7, 4, 0, 0, 986, 168, 1, 0, 0, 0, 987, 988, 7, 15, 0, 0, 988, 989, 7, 10, 0, 0, 989, 990, 7, 12, 0, 0, 990, 991, 7, 18, 0, 0, 991, 992, 7, 6, 0, 0, 992, 170, 1, 0, 0, 0, 993, 994, 7, 15, 0, 0, 994, 995, 7, 10, 0, 0, 995, 996, 7, 13, 0, 0, 996, 997, 7, 5, 0, 0, 997, 998, 7, 4, 0, 0, 998, 999, 7, 6, 0, 0, 999, 172, 1, 0, 0, 0, 1000, 1001, 7, 15, 0, 0, 1001, 1002, 7, 10, 0, 0, 1002, 1003, 7, 6, 0, 0, 1003, 174, 1, 0, 0, 0, 1004, 1005, 7, 15, 0, 0, 1005, 1006, 7, 10, 0, 0, 1006, 1007, 7, 6, 0, 0, 1007, 1008, 7, 5, 0, 0, 1008, 1009, 7, 4, 0, 0, 1009, 1010, 7, 13, 0, 0, 1010, 1011, 7, 5, 0, 0, 1011, 1012, 7, 14, 0, 0, 1012, 1013, 7, 6, 0, 0, 1013, 176, 1, 0, 0, 0, 1014, 1015, 7, 15, 0, 0, 1015, 1016, 7, 10, 0, 0, 1016, 1017, 7, 6, 0, 0, 1017, 1018, 7, 5, 0, 0, 1018, 1019, 7, 4, 0, 0, 1019, 1020, 7, 23, 0, 0, 1020, 1021, 7, 1, 0, 0, 1021, 1022, 7, 7, 0, 0, 1022, 178, 1, 0, 0, 0, 1023, 1024, 7, 15, 0, 0, 1024, 1025, 7, 10, 0, 0, 1025, 1026, 7, 6, 0, 0, 1026, 1027, 7, 8, 0, 0, 1027, 180, 1, 0, 0, 0, 1028, 1029, 7, 15, 0, 0, 1029, 1030, 7, 13, 0, 0, 1030, 182, 1, 0, 0, 0, 1031, 1032, 7, 24, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 7, 15, 0, 0, 1034, 1035, 7, 10, 0, 0, 1035, 184, 1, 0, 0, 0, 1036, 1037, 7, 24, 0, 0, 1037, 1038, 7, 13, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 10, 0, 0, 1040, 186, 1, 0, 0, 0, 1041, 1042, 7, 25, 0, 0, 1042, 1043, 7, 5, 0, 0, 1043, 1044, 7, 11, 0, 0, 1044, 188, 1, 0, 0, 0, 1045, 1046, 7, 25, 0, 0, 1046, 1047, 7, 5, 0, 0, 1047, 1048, 7, 11, 0, 0, 1048, 1049, 7, 13, 0, 0, 1049, 190, 1, 0, 0, 0, 1050, 1051, 7, 25, 0, 0, 1051, 1052, 7, 5, 0, 0, 1052, 1053, 7, 11, 0, 0, 1053, 1054, 7, 13, 0, 0, 1054, 1055, 7, 12, 0, 0, 1055, 1056, 7, 1, 0, 0, 1056, 1057, 7, 14, 0, 0, 1057, 1058, 7, 5, 0, 0, 1058, 192, 1, 0, 0, 0, 1059, 1060, 7, 25, 0, 0, 1060, 1061, 7, 5, 0, 0, 1061, 1062, 7, 11, 0, 0, 1062, 1063, 7, 13, 0, 0, 1063, 1064, 7, 12, 0, 0, 1064, 1065, 7, 1, 0, 0, 1065, 1066, 7, 14, 0, 0, 1066, 1067, 7, 5, 0, 0, 1067, 1068, 7, 13, 0, 0, 1068, 194, 1, 0, 0, 0, 1069, 1070, 7, 7, 0, 0, 1070, 1071, 7, 1, 0, 0, 1071, 1072, 7, 10, 0, 0, 1072, 1073, 7, 3, 0, 0, 1073, 1074, 7, 18, 0, 0, 1074, 1075, 7, 1, 0, 0, 1075, 1076, 7, 3, 0, 0, 1076, 1077, 7, 5, 0, 0, 1077, 196, 1, 0, 0, 0, 1078, 1079, 7, 7, 0, 0, 1079, 1080, 7, 1, 0, 0, 1080, 1081, 7, 6, 0, 0, 1081, 1082, 7, 5, 0, 0, 1082, 1083, 7, 4, 0, 0, 1083, 1084, 7, 1, 0, 0, 1084, 1085, 7, 7, 0, 0, 1085, 198, 1, 0, 0, 0, 1086, 1087, 7, 7, 0, 0, 1087, 1088, 7, 5, 0, 0, 1088, 1089, 7, 17, 0, 0, 1089, 1090, 7, 6, 0, 0, 1090, 200, 1, 0, 0, 0, 1091, 1092, 7, 7, 0, 0, 1092, 1093, 7, 15, 0, 0, 1093, 1094, 7, 25, 0, 0, 1094, 1095, 7, 5, 0, 0, 1095, 202, 1, 0, 0, 0, 1096, 1097, 7, 7, 0, 0, 1097, 1098, 7, 15, 0, 0, 1098, 1099, 7, 16, 0, 0, 1099, 1100, 7, 15, 0, 0, 1100, 1101, 7, 6, 0, 0, 1101, 204, 1, 0, 0, 0, 1102, 1103, 7, 7, 0, 0, 1103, 1104, 7, 15, 0, 0, 1104, 1105, 7, 13, 0, 0, 1105, 1106, 7, 6, 0, 0, 1106, 206, 1, 0, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 8, 0, 0, 1109, 1110, 7, 3, 0, 0, 1110, 1111, 7, 15, 0, 0, 1111, 1112, 7, 10, 0, 0, 1112, 208, 1, 0, 0, 0, 1113, 1114, 7, 7, 0, 0, 1114, 1115, 7, 8, 0, 0, 1115, 1116, 7, 8, 0, 0, 1116, 1117, 7, 25, 0, 0, 1117, 1118, 7, 18, 0, 0, 1118, 1119, 7, 12, 0, 0, 1119, 210, 1, 0, 0, 0, 1120, 1121, 7, 16, 0, 0, 1121, 1122, 7, 1, 0, 0, 1122, 1123, 7, 12, 0, 0, 1123, 212, 1, 0, 0, 0, 1124, 1125, 7, 16, 0, 0, 1125, 1126, 7, 5, 0, 0, 1126, 1127, 7, 4, 0, 0, 1127, 1128, 7, 3, 0, 0, 1128, 1129, 7, 5, 0, 0, 1129, 214, 1, 0, 0, 0, 1130, 1131, 7, 16, 0, 0, 1131, 1132, 7, 8, 0, 0, 1132, 1133, 7, 2, 0, 0, 1133, 1134, 7, 15, 0, 0, 1134, 1135, 7, 17, 0, 0, 1135, 1136, 7, 11, 0, 0, 1136, 216, 1, 0, 0, 0, 1137, 1138, 7, 10, 0, 0, 1138, 1139, 7, 1, 0, 0, 1139, 1140, 7, 10, 0, 0, 1140, 218, 1, 0, 0, 0, 1141, 1142, 7, 10, 0, 0, 1142, 1143, 7, 1, 0, 0, 1143, 1144, 7, 6, 0, 0, 1144, 1145, 7, 18, 0, 0, 1145, 1146, 7, 4, 0, 0, 1146, 1147, 7, 1, 0, 0, 1147, 1148, 7, 7, 0, 0, 1148, 220, 1, 0, 0, 0, 1149, 1150, 7, 10, 0, 0, 1150, 1151, 7, 5, 0, 0, 1151, 1152, 7, 9, 0, 0, 1152, 222, 1, 0, 0, 0, 1153, 1154, 7, 10, 0, 0, 1154, 1155, 7, 8, 0, 0, 1155, 224, 1, 0, 0, 0, 1156, 1157, 7, 10, 0, 0, 1157, 1158, 7, 8, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 8, 0, 0, 1160, 1161, 7, 3, 0, 0, 1161, 1162, 7, 15, 0, 0, 1162, 1163, 7, 10, 0, 0, 1163, 226, 1, 0, 0, 0, 1164, 1165, 7, 10, 0, 0, 1165, 1166, 7, 8, 0, 0, 1166, 1167, 7, 4, 0, 0, 1167, 1168, 7, 5, 0, 0, 1168, 1169, 7, 14, 0, 0, 1169, 1170, 7, 18, 0, 0, 1170, 1171, 7, 4, 0, 0, 1171, 1172, 7, 13, 0, 0, 1172, 1173, 7, 15, 0, 0, 1173, 1174, 7, 23, 0, 0, 1174, 1175, 7, 5, 0, 0, 1175, 228, 1, 0, 0, 0, 1176, 1177, 7, 10, 0, 0, 1177, 1178, 7, 8, 0, 0, 1178, 1179, 7, 13, 0, 0, 1179, 1180, 7, 18, 0, 0, 1180, 1181, 7, 12, 0, 0, 1181, 1182, 7, 5, 0, 0, 1182, 1183, 7, 4, 0, 0, 1183, 1184, 7, 18, 0, 0, 1184, 1185, 7, 13, 0, 0, 1185, 1186, 7, 5, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, 230, 1, 0, 0, 0, 1188, 1189, 7, 10, 0, 0, 1189, 1190, 7, 8, 0, 0, 1190, 1191, 7, 6, 0, 0, 1191, 232, 1, 0, 0, 0, 1192, 1193, 7, 10, 0, 0, 1193, 1194, 7, 18, 0, 0, 1194, 1195, 7, 7, 0, 0, 1195, 1196, 7, 7, 0, 0, 1196, 234, 1, 0, 0, 0, 1197, 1198, 7, 10, 0, 0, 1198, 1199, 7, 18, 0, 0, 1199, 1200, 7, 7, 0, 0, 1200, 1201, 7, 7, 0, 0, 1201, 1202, 7, 13, 0, 0, 1202, 236, 1, 0, 0, 0, 1203, 1204, 7, 8, 0, 0, 1204, 1205, 7, 17, 0, 0, 1205, 238, 1, 0, 0, 0, 1206, 1207, 7, 8, 0, 0, 1207, 1208, 7, 10, 0, 0, 1208, 240, 1, 0, 0, 0, 1209, 1210, 7, 8, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, 7, 6, 0, 0, 1212, 1213, 7, 15, 0, 0, 1213, 1214, 7, 8, 0, 0, 1214, 1215, 7, 10, 0, 0, 1215, 1216, 7, 13, 0, 0, 1216, 242, 1, 0, 0, 0, 1217, 1218, 7, 8, 0, 0, 1218, 1219, 7, 4, 0, 0, 1219, 244, 1, 0, 0, 0, 1220, 1221, 7, 8, 0, 0, 1221, 1222, 7, 4, 0, 0, 1222, 1223, 7, 2, 0, 0, 1223, 1224, 7, 5, 0, 0, 1224, 1225, 7, 4, 0, 0, 1225, 246, 1, 0, 0, 0, 1226, 1227, 7, 8, 0, 0, 1227, 1228, 7, 18, 0, 0, 1228, 1229, 7, 6, 0, 0, 1229, 1230, 7, 5, 0, 0, 1230, 1231, 7, 4, 0, 0, 1231, 248, 1, 0, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 1234, 7, 23, 0, 0, 1234, 1235, 7, 5, 0, 0, 1235, 1236, 7, 4, 0, 0, 1236, 250, 1, 0, 0, 0, 1237, 1238, 7, 12, 0, 0, 1238, 1239, 7, 1, 0, 0, 1239, 1240, 7, 4, 0, 0, 1240, 1241, 7, 6, 0, 0, 1241, 1242, 7, 15, 0, 0, 1242, 1243, 7, 6, 0, 0, 1243, 1244, 7, 15, 0, 0, 1244, 1245, 7, 8, 0, 0, 1245, 1246, 7, 10, 0, 0, 1246, 252, 1, 0, 0, 0, 1247, 1248, 7, 12, 0, 0, 1248, 1249, 7, 1, 0, 0, 1249, 1250, 7, 13, 0, 0, 1250, 1251, 7, 13, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 8, 0, 0, 1253, 1254, 7, 4, 0, 0, 1254, 1255, 7, 2, 0, 0, 1255, 254, 1, 0, 0, 0, 1256, 1257, 7, 12, 0, 0, 1257, 1258, 7, 5, 0, 0, 1258, 1259, 7, 4, 0, 0, 1259, 1260, 7, 16, 0, 0, 1260, 1261, 7, 15, 0, 0, 1261, 1262, 7, 13, 0, 0, 1262, 1263, 7, 13, 0, 0, 1263, 1264, 7, 15, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, 7, 10, 0, 0, 1266, 256, 1, 0, 0, 0, 1267, 1268, 7, 12, 0, 0, 1268, 1269, 7, 5, 0, 0, 1269, 1270, 7, 4, 0, 0, 1270, 1271, 7, 16, 0, 0, 1271, 1272, 7, 15, 0, 0, 1272, 1273, 7, 13, 0, 0, 1273, 1274, 7, 13, 0, 0, 1274, 1275, 7, 15, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1277, 7, 10, 0, 0, 1277, 1278, 7, 13, 0, 0, 1278, 258, 1, 0, 0, 0, 1279, 1280, 7, 12, 0, 0, 1280, 1281, 7, 4, 0, 0, 1281, 1282, 7, 5, 0, 0, 1282, 1283, 7, 14, 0, 0, 1283, 1284, 7, 5, 0, 0, 1284, 1285, 7, 2, 0, 0, 1285, 1286, 7, 15, 0, 0, 1286, 1287, 7, 10, 0, 0, 1287, 1288, 7, 3, 0, 0, 1288, 260, 1, 0, 0, 0, 1289, 1290, 7, 12, 0, 0, 1290, 1291, 7, 4, 0, 0, 1291, 1292, 7, 15, 0, 0, 1292, 1293, 7, 16, 0, 0, 1293, 1294, 7, 1, 0, 0, 1294, 1295, 7, 4, 0, 0, 1295, 1296, 7, 11, 0, 0, 1296, 262, 1, 0, 0, 0, 1297, 1298, 7, 12, 0, 0, 1298, 1299, 7, 4, 0, 0, 1299, 1300, 7, 8, 0, 0, 1300, 1301, 7, 6, 0, 0, 1301, 1302, 7, 8, 0, 0, 1302, 264, 1, 0, 0, 0, 1303, 1304, 7, 26, 0, 0, 1304, 1305, 7, 18, 0, 0, 1305, 1306, 7, 1, 0, 0, 1306, 1307, 7, 7, 0, 0, 1307, 1308, 7, 15, 0, 0, 1308, 1309, 7, 17, 0, 0, 1309, 1310, 7, 11, 0, 0, 1310, 266, 1, 0, 0, 0, 1311, 1312, 7, 4, 0, 0, 1312, 1313, 7, 1, 0, 0, 1313, 1314, 7, 10, 0, 0, 1314, 1315, 7, 3, 0, 0, 1315, 1316, 7, 5, 0, 0, 1316, 268, 1, 0, 0, 0, 1317, 1318, 7, 4, 0, 0, 1318, 1319, 7, 5, 0, 0, 1319, 1320, 7, 14, 0, 0, 1320, 1321, 7, 18, 0, 0, 1321, 1322, 7, 4, 0, 0, 1322, 1323, 7, 13, 0, 0, 1323, 1324, 7, 15, 0, 0, 1324, 1325, 7, 23, 0, 0, 1325, 1326, 7, 5, 0, 0, 1326, 270, 1, 0, 0, 0, 1327, 1328, 7, 4, 0, 0, 1328, 1329, 7, 5, 0, 0, 1329, 1330, 7, 10, 0, 0, 1330, 1331, 7, 1, 0, 0, 1331, 1332, 7, 16, 0, 0, 1332, 1333, 7, 5, 0, 0, 1333, 272, 1, 0, 0, 0, 1334, 1335, 7, 4, 0, 0, 1335, 1336, 7, 5, 0, 0, 1336, 1337, 7, 12, 0, 0, 1337, 1338, 7, 7, 0, 0, 1338, 1339, 7, 1, 0, 0, 1339, 1340, 7, 14, 0, 0, 1340, 1341, 7, 5, 0, 0, 1341, 274, 1, 0, 0, 0, 1342, 1343, 7, 4, 0, 0, 1343, 1344, 7, 5, 0, 0, 1344, 1345, 7, 13, 0, 0, 1345, 1346, 7, 12, 0, 0, 1346, 1347, 7, 5, 0, 0, 1347, 1348, 7, 14, 0, 0, 1348, 1349, 7, 6, 0, 0, 1349, 276, 1, 0, 0, 0, 1350, 1351, 7, 4, 0, 0, 1351, 1352, 7, 5, 0, 0, 1352, 1353, 7, 6, 0, 0, 1353, 1354, 7, 18, 0, 0, 1354, 1355, 7, 4, 0, 0, 1355, 1356, 7, 10, 0, 0, 1356, 1357, 7, 13, 0, 0, 1357, 278, 1, 0, 0, 0, 1358, 1359, 7, 4, 0, 0, 1359, 1360, 7, 5, 0, 0, 1360, 1361, 7, 23, 0, 0, 1361, 1362, 7, 8, 0, 0, 1362, 1363, 7, 25, 0, 0, 1363, 1364, 7, 5, 0, 0, 1364, 280, 1, 0, 0, 0, 1365, 1366, 7, 4, 0, 0, 1366, 1367, 7, 15, 0, 0, 1367, 1368, 7, 3, 0, 0, 1368, 1369, 7, 19, 0, 0, 1369, 1370, 7, 6, 0, 0, 1370, 282, 1, 0, 0, 0, 1371, 1372, 7, 4, 0, 0, 1372, 1373, 7, 8, 0, 0, 1373, 1374, 7, 7, 0, 0, 1374, 1375, 7, 5, 0, 0, 1375, 284, 1, 0, 0, 0, 1376, 1377, 7, 4, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 1379, 7, 7, 0, 0, 1379, 1380, 7, 5, 0, 0, 1380, 1381, 7, 13, 0, 0, 1381, 286, 1, 0, 0, 0, 1382, 1383, 7, 4, 0, 0, 1383, 1384, 7, 8, 0, 0, 1384, 1385, 7, 7, 0, 0, 1385, 1386, 7, 7, 0, 0, 1386, 1387, 7, 18, 0, 0, 1387, 1388, 7, 12, 0, 0, 1388, 288, 1, 0, 0, 0, 1389, 1390, 7, 4, 0, 0, 1390, 1391, 7, 8, 0, 0, 1391, 1392, 7, 9, 0, 0, 1392, 1393, 7, 13, 0, 0, 1393, 290, 1, 0, 0, 0, 1394, 1395, 7, 13, 0, 0, 1395, 1396, 7, 14, 0, 0, 1396, 1397, 7, 19, 0, 0, 1397, 1398, 7, 5, 0, 0, 1398, 1399, 7, 16, 0, 0, 1399, 1400, 7, 1, 0, 0, 1400, 292, 1, 0, 0, 0, 1401, 1402, 7, 13, 0, 0, 1402, 1403, 7, 5, 0, 0, 1403, 1404, 7, 7, 0, 0, 1404, 1405, 7, 5, 0, 0, 1405, 1406, 7, 14, 0, 0, 1406, 1407, 7, 6, 0, 0, 1407, 294, 1, 0, 0, 0, 1408, 1409, 7, 13, 0, 0, 1409, 1410, 7, 5, 0, 0, 1410, 1411, 7, 6, 0, 0, 1411, 296, 1, 0, 0, 0, 1412, 1413, 7, 13, 0, 0, 1413, 1414, 7, 17, 0, 0, 1414, 1415, 7, 18, 0, 0, 1415, 1416, 7, 10, 0, 0, 1416, 1417, 7, 14, 0, 0, 1417, 298, 1, 0, 0, 0, 1418, 1419, 7, 13, 0, 0, 1419, 1420, 7, 16, 0, 0, 1420, 1421, 7, 1, 0, 0, 1421, 1422, 7, 7, 0, 0, 1422, 1423, 7, 7, 0, 0, 1423, 1424, 7, 15, 0, 0, 1424, 1425, 7, 10, 0, 0, 1425, 1426, 7, 6, 0, 0, 1426, 300, 1, 0, 0, 0, 1427, 1428, 7, 13, 0, 0, 1428, 1429, 7, 8, 0, 0, 1429, 1430, 7, 16, 0, 0, 1430, 1431, 7, 5, 0, 0, 1431, 302, 1, 0, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 7, 6, 0, 0, 1434, 1435, 7, 1, 0, 0, 1435, 1436, 7, 6, 0, 0, 1436, 1437, 7, 15, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 304, 1, 0, 0, 0, 1439, 1440, 7, 13, 0, 0, 1440, 1441, 7, 6, 0, 0, 1441, 1442, 7, 8, 0, 0, 1442, 1443, 7, 4, 0, 0, 1443, 1444, 7, 1, 0, 0, 1444, 1445, 7, 3, 0, 0, 1445, 1446, 7, 5, 0, 0, 1446, 306, 1, 0, 0, 0, 1447, 1448, 7, 13, 0, 0, 1448, 1449, 7, 6, 0, 0, 1449, 1450, 7, 4, 0, 0, 1450, 1451, 7, 18, 0, 0, 1451, 1452, 7, 14, 0, 0, 1452, 1453, 7, 6, 0, 0, 1453, 308, 1, 0, 0, 0, 1454, 1455, 7, 13, 0, 0, 1455, 1456, 7, 6, 0, 0, 1456, 1457, 7, 11, 0, 0, 1457, 1458, 7, 12, 0, 0, 1458, 1459, 7, 5, 0, 0, 1459, 310, 1, 0, 0, 0, 1460, 1461, 7, 13, 0, 0, 1461, 1462, 7, 18, 0, 0, 1462, 1463, 7, 12, 0, 0, 1463, 1464, 7, 5, 0, 0, 1464, 1465, 7, 4, 0, 0, 1465, 1466, 7, 18, 0, 0, 1466, 1467, 7, 13, 0, 0, 1467, 1468, 7, 5, 0, 0, 1468, 1469, 7, 4, 0, 0, 1469, 312, 1, 0, 0, 0, 1470, 1471, 7, 6, 0, 0, 1471, 1472, 7, 1, 0, 0, 1472, 1473, 7, 21, 0, 0, 1473, 1474, 7, 7, 0, 0, 1474, 1475, 7, 5, 0, 0, 1475, 314, 1, 0, 0, 0, 1476, 1477, 7, 6, 0, 0, 1477, 1478, 7, 1, 0, 0, 1478, 1479, 7, 21, 0, 0, 1479, 1480, 7, 7, 0, 0, 1480, 1481, 7, 5, 0, 0, 1481, 1482, 7, 13, 0, 0, 1482, 1483, 7, 1, 0, 0, 1483, 1484, 7, 16, 0, 0, 1484, 1485, 7, 12, 0, 0, 1485, 1486, 7, 7, 0, 0, 1486, 1487, 7, 5, 0, 0, 1487, 316, 1, 0, 0, 0, 1488, 1489, 7, 6, 0, 0, 1489, 1490, 7, 5, 0, 0, 1490, 1491, 7, 22, 0, 0, 1491, 1492, 7, 6, 0, 0, 1492, 318, 1, 0, 0, 0, 1493, 1494, 7, 6, 0, 0, 1494, 1495, 7, 19, 0, 0, 1495, 1496, 7, 5, 0, 0, 1496, 1497, 7, 10, 0, 0, 1497, 320, 1, 0, 0, 0, 1498, 1499, 7, 6, 0, 0, 1499, 1500, 7, 15, 0, 0, 1500, 1501, 7, 16, 0, 0, 1501, 1502, 7, 5, 0, 0, 1502, 322, 1, 0, 0, 0, 1503, 1504, 7, 6, 0, 0, 1504, 1505, 7, 15, 0, 0, 1505, 1506, 7, 16, 0, 0, 1506, 1507, 7, 5, 0, 0, 1507, 1508, 7, 13, 0, 0, 1508, 1509, 7, 6, 0, 0, 1509, 1510, 7, 1, 0, 0, 1510, 1511, 7, 16, 0, 0, 1511, 1512, 7, 12, 0, 0, 1512, 324, 1, 0, 0, 0, 1513, 1514, 7, 6, 0, 0, 1514, 1515, 7, 15, 0, 0, 1515, 1516, 7, 16, 0, 0, 1516, 1517, 7, 5, 0, 0, 1517, 1518, 7, 18, 0, 0, 1518, 1519, 7, 18, 0, 0, 1519, 1520, 7, 15, 0, 0, 1520, 1521, 7, 2, 0, 0, 1521, 326, 1, 0, 0, 0, 1522, 1523, 7, 6, 0, 0, 1523, 1524, 7, 15, 0, 0, 1524, 1525, 7, 10, 0, 0, 1525, 1526, 7, 11, 0, 0, 1526, 1527, 7, 15, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 328, 1, 0, 0, 0, 1530, 1531, 7, 6, 0, 0, 1531, 1532, 7, 8, 0, 0, 1532, 330, 1, 0, 0, 0, 1533, 1534, 7, 6, 0, 0, 1534, 1535, 7, 8, 0, 0, 1535, 1536, 7, 25, 0, 0, 1536, 1537, 7, 5, 0, 0, 1537, 1538, 7, 10, 0, 0, 1538, 332, 1, 0, 0, 0, 1539, 1540, 7, 6, 0, 0, 1540, 1541, 7, 4, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 1, 0, 0, 1543, 1544, 7, 6, 0, 0, 1544, 334, 1, 0, 0, 0, 1545, 1546, 7, 6, 0, 0, 1546, 1547, 7, 4, 0, 0, 1547, 1548, 7, 15, 0, 0, 1548, 1549, 7, 3, 0, 0, 1549, 1550, 7, 3, 0, 0, 1550, 1551, 7, 5, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 336, 1, 0, 0, 0, 1553, 1554, 7, 6, 0, 0, 1554, 1555, 7, 4, 0, 0, 1555, 1556, 7, 18, 0, 0, 1556, 1557, 7, 5, 0, 0, 1557, 338, 1, 0, 0, 0, 1558, 1559, 7, 6, 0, 0, 1559, 1560, 7, 4, 0, 0, 1560, 1561, 7, 18, 0, 0, 1561, 1562, 7, 10, 0, 0, 1562, 1563, 7, 14, 0, 0, 1563, 1564, 7, 1, 0, 0, 1564, 1565, 7, 6, 0, 0, 1565, 1566, 7, 5, 0, 0, 1566, 340, 1, 0, 0, 0, 1567, 1568, 7, 6, 0, 0, 1568, 1569, 7, 6, 0, 0, 1569, 1570, 7, 7, 0, 0, 1570, 342, 1, 0, 0, 0, 1571, 1572, 7, 6, 0, 0, 1572, 1573, 7, 18, 0, 0, 1573, 1574, 7, 12, 0, 0, 1574, 1575, 7, 7, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 344, 1, 0, 0, 0, 1577, 1578, 7, 6, 0, 0, 1578, 1579, 7, 11, 0, 0, 1579, 1580, 7, 12, 0, 0, 1580, 1581, 7, 5, 0, 0, 1581, 346, 1, 0, 0, 0, 1582, 1583, 7, 18, 0, 0, 1583, 1584, 7, 10, 0, 0, 1584, 1585, 7, 21, 0, 0, 1585, 1586, 7, 8, 0, 0, 1586, 1587, 7, 18, 0, 0, 1587, 1588, 7, 10, 0, 0, 1588, 1589, 7, 2, 0, 0, 1589, 1590, 7, 5, 0, 0, 1590, 1591, 7, 2, 0, 0, 1591, 348, 1, 0, 0, 0, 1592, 1593, 7, 18, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 1595, 7, 15, 0, 0, 1595, 1596, 7, 8, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 350, 1, 0, 0, 0, 1598, 1599, 7, 18, 0, 0, 1599, 1600, 7, 10, 0, 0, 1600, 1601, 7, 7, 0, 0, 1601, 1602, 7, 8, 0, 0, 1602, 1603, 7, 3, 0, 0, 1603, 1604, 7, 3, 0, 0, 1604, 1605, 7, 5, 0, 0, 1605, 1606, 7, 2, 0, 0, 1606, 352, 1, 0, 0, 0, 1607, 1608, 7, 18, 0, 0, 1608, 1609, 7, 10, 0, 0, 1609, 1610, 7, 10, 0, 0, 1610, 1611, 7, 5, 0, 0, 1611, 1612, 7, 13, 0, 0, 1612, 1613, 7, 6, 0, 0, 1613, 354, 1, 0, 0, 0, 1614, 1615, 7, 18, 0, 0, 1615, 1616, 7, 12, 0, 0, 1616, 1617, 7, 2, 0, 0, 1617, 1618, 7, 1, 0, 0, 1618, 1619, 7, 6, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 356, 1, 0, 0, 0, 1621, 1622, 7, 18, 0, 0, 1622, 1623, 7, 13, 0, 0, 1623, 1624, 7, 5, 0, 0, 1624, 358, 1, 0, 0, 0, 1625, 1626, 7, 18, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, 7, 4, 0, 0, 1629, 360, 1, 0, 0, 0, 1630, 1631, 7, 18, 0, 0, 1631, 1632, 7, 13, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 13, 0, 0, 1635, 362, 1, 0, 0, 0, 1636, 1637, 7, 18, 0, 0, 1637, 1638, 7, 13, 0, 0, 1638, 1639, 7, 15, 0, 0, 1639, 1640, 7, 10, 0, 0, 1640, 1641, 7, 3, 0, 0, 1641, 364, 1, 0, 0, 0, 1642, 1643, 7, 18, 0, 0, 1643, 1644, 7, 18, 0, 0, 1644, 1645, 7, 15, 0, 0, 1645, 1646, 7, 2, 0, 0, 1646, 366, 1, 0, 0, 0, 1647, 1648, 7, 23, 0, 0, 1648, 1649, 7, 1, 0, 0, 1649, 1650, 7, 7, 0, 0, 1650, 1651, 7, 18, 0, 0, 1651, 1652, 7, 5, 0, 0, 1652, 1653, 7, 13, 0, 0, 1653, 368, 1, 0, 0, 0, 1654, 1655, 7, 23, 0, 0, 1655, 1656, 7, 1, 0, 0, 1656, 1657, 7, 4, 0, 0, 1657, 1658, 7, 14, 0, 0, 1658, 1659, 7, 19, 0, 0, 1659, 1660, 7, 1, 0, 0, 1660, 1661, 7, 4, 0, 0, 1661, 370, 1, 0, 0, 0, 1662, 1663, 7, 23, 0, 0, 1663, 1664, 7, 1, 0, 0, 1664, 1665, 7, 4, 0, 0, 1665, 1666, 7, 15, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 1668, 7, 6, 0, 0, 1668, 372, 1, 0, 0, 0, 1669, 1670, 7, 9, 0, 0, 1670, 1671, 7, 19, 0, 0, 1671, 1672, 7, 5, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 374, 1, 0, 0, 0, 1674, 1675, 7, 9, 0, 0, 1675, 1676, 7, 19, 0, 0, 1676, 1677, 7, 5, 0, 0, 1677, 1678, 7, 4, 0, 0, 1678, 1679, 7, 5, 0, 0, 1679, 376, 1, 0, 0, 0, 1680, 1681, 7, 9, 0, 0, 1681, 1682, 7, 15, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 1684, 7, 2, 0, 0, 1684, 1685, 7, 8, 0, 0, 1685, 1686, 7, 9, 0, 0, 1686, 378, 1, 0, 0, 0, 1687, 1688, 7, 9, 0, 0, 1688, 1689, 7, 15, 0, 0, 1689, 1690, 7, 6, 0, 0, 1690, 1691, 7, 19, 0, 0, 1691, 380, 1, 0, 0, 0, 1692, 1693, 7, 9, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, 7, 6, 0, 0, 1695, 1696, 7, 19, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, 7, 10, 0, 0, 1698, 382, 1, 0, 0, 0, 1699, 1700, 7, 9, 0, 0, 1700, 1701, 7, 4, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 6, 0, 0, 1703, 1704, 7, 5, 0, 0, 1704, 1705, 7, 6, 0, 0, 1705, 1706, 7, 15, 0, 0, 1706, 1707, 7, 16, 0, 0, 1707, 1708, 7, 5, 0, 0, 1708, 384, 1, 0, 0, 0, 1709, 1710, 7, 16, 0, 0, 1710, 1711, 7, 1, 0, 0, 1711, 1712, 7, 6, 0, 0, 1712, 1713, 7, 5, 0, 0, 1713, 1714, 7, 4, 0, 0, 1714, 1715, 7, 15, 0, 0, 1715, 1716, 7, 1, 0, 0, 1716, 1717, 7, 7, 0, 0, 1717, 1718, 7, 15, 0, 0, 1718, 1719, 7, 20, 0, 0, 1719, 1720, 7, 5, 0, 0, 1720, 1721, 7, 2, 0, 0, 1721, 386, 1, 0, 0, 0, 1722, 1723, 7, 23, 0, 0, 1723, 1724, 7, 15, 0, 0, 1724, 1725, 7, 5, 0, 0, 1725, 1726, 7, 9, 0, 0, 1726, 388, 1, 0, 0, 0, 1727, 1728, 5, 59, 0, 0, 1728, 390, 1, 0, 0, 0, 1729, 1730, 5, 39, 0, 0, 1730, 392, 1, 0, 0, 0, 1731, 1732, 5, 34, 0, 0, 1732, 394, 1, 0, 0, 0, 1733, 1734, 5, 46, 0, 0, 1734, 396, 1, 0, 0, 0, 1735, 1736, 5, 44, 0, 0, 1736, 398, 1, 0, 0, 0, 1737, 1738, 5, 40, 0, 0, 1738, 400, 1, 0, 0, 0, 1739, 1740, 5, 41, 0, 0, 1740, 402, 1, 0, 0, 0, 1741, 1742, 5, 60, 0, 0, 1742, 404, 1, 0, 0, 0, 1743, 1744, 5, 62, 0, 0, 1744, 406, 1, 0, 0, 0, 1745, 1749, 3, 1, 0, 0, 1746, 1748, 7, 27, 0, 0, 1747, 1746, 1, 0, 0, 0, 1748, 1751, 1, 0, 0, 0, 1749, 1747, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 408, 1, 0, 0, 0, 1751, 1749, 1, 0, 0, 0, 1752, 1756, 3, 1, 0, 0, 1753, 1755, 7, 28, 0, 0, 1754, 1753, 1, 0, 0, 0, 1755, 1758, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1759, 1, 0, 0, 0, 1758, 1756, 1, 0, 0, 0, 1759, 1763, 5, 45, 0, 0, 1760, 1762, 7, 28, 0, 0, 1761, 1760, 1, 0, 0, 0, 1762, 1765, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 410, 1, 0, 0, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1768, 7, 29, 0, 0, 1767, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1767, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 6, 205, 0, 0, 1772, 412, 1, 0, 0, 0, 1773, 1774, 5, 45, 0, 0, 1774, 1775, 5, 45, 0, 0, 1775, 1779, 5, 32, 0, 0, 1776, 1777, 5, 47, 0, 0, 1777, 1779, 5, 47, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1779, 1783, 1, 0, 0, 0, 1780, 1782, 9, 0, 0, 0, 1781, 1780, 1, 0, 0, 0, 1782, 1785, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1783, 1781, 1, 0, 0, 0, 1784, 1786, 1, 0, 0, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1787, 7, 30, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 6, 206, 0, 0, 1789, 414, 1, 0, 0, 0, 1790, 1791, 5, 47, 0, 0, 1791, 1792, 5, 42, 0, 0, 1792, 1796, 1, 0, 0, 0, 1793, 1795, 9, 0, 0, 0, 1794, 1793, 1, 0, 0, 0, 1795, 1798, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1796, 1794, 1, 0, 0, 0, 1797, 1799, 1, 0, 0, 0, 1798, 1796, 1, 0, 0, 0, 1799, 1800, 5, 42, 0, 0, 1800, 1801, 5, 47, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1803, 6, 207, 0, 0, 1803, 416, 1, 0, 0, 0, 1804, 1805, 9, 0, 0, 0, 1805, 418, 1, 0, 0, 0, 8, 0, 1749, 1756, 1763, 1769, 1778, 1783, 1796, 1, 0, 1, 0] \ No newline at end of file diff --git a/translator/cqlparser/CqlLexer.tokens b/translator/cqlparser/CqlLexer.tokens index 2bceb29..b7fbb2d 100644 --- a/translator/cqlparser/CqlLexer.tokens +++ b/translator/cqlparser/CqlLexer.tokens @@ -4,271 +4,407 @@ K_ALL=3 K_ALLOW=4 K_ALTER=5 K_AND=6 -K_APPLY=7 -K_AS=8 -K_ASC=9 -K_ASCII=10 -K_AUTHORIZE=11 -K_BATCH=12 -K_BEGIN=13 -K_BIGINT=14 -K_BLOB=15 -K_BOOLEAN=16 -K_BY=17 -K_CALLED=18 -K_CLUSTERING=19 -K_COLUMNFAMILY=20 -K_COMPACT=21 -K_CONTAINS=22 -K_COUNT=23 -K_COUNTER=24 -K_CREATE=25 -K_CUSTOM=26 -K_DATE=27 -K_DECIMAL=28 -K_DELETE=29 -K_DESC=30 -K_DESCRIBE=31 -K_DISTINCT=32 -K_DOUBLE=33 -K_DROP=34 -K_ENTRIES=35 -K_EXECUTE=36 -K_EXISTS=37 -K_FILTERING=38 -K_FINALFUNC=39 -K_FLOAT=40 -K_FROM=41 -K_FROZEN=42 -K_FULL=43 -K_FUNCTION=44 -K_FUNCTIONS=45 -K_GRANT=46 -K_IF=47 -K_IN=48 -K_INDEX=49 -K_INET=50 -K_INFINITY=51 -K_INITCOND=52 -K_INPUT=53 -K_INSERT=54 -K_INT=55 -K_INTO=56 -K_JSON=57 -K_KEY=58 -K_KEYS=59 -K_KEYSPACE=60 -K_KEYSPACES=61 -K_LANGUAGE=62 -K_LIMIT=63 -K_LIST=64 -K_LOGIN=65 -K_MAP=66 -K_MODIFY=67 -K_NAN=68 -K_NOLOGIN=69 -K_NORECURSIVE=70 -K_NOSUPERUSER=71 -K_NOT=72 -K_NULL=73 -K_OF=74 -K_ON=75 -K_OPTIONS=76 -K_OR=77 -K_ORDER=78 -K_PASSWORD=79 -K_PERMISSION=80 -K_PERMISSIONS=81 -K_PRIMARY=82 -K_RENAME=83 -K_REPLACE=84 -K_RETURNS=85 -K_REVOKE=86 -K_ROLE=87 -K_ROLES=88 -K_SCHEMA=89 -K_SELECT=90 -K_SET=91 -K_SFUNC=92 -K_SMALLINT=93 -K_STATIC=94 -K_STORAGE=95 -K_STYPE=96 -K_SUPERUSER=97 -K_TABLE=98 -K_TEXT=99 -K_TIME=100 -K_TIMESTAMP=101 -K_TIMEUUID=102 -K_TINYINT=103 -K_TO=104 -K_TOKEN=105 -K_TRIGGER=106 -K_TRUNCATE=107 -K_TTL=108 -K_TUPLE=109 -K_TYPE=110 -K_UNLOGGED=111 -K_UPDATE=112 -K_USE=113 -K_USER=114 -K_USERS=115 -K_USING=116 -K_UUID=117 -K_VALUES=118 -K_VARCHAR=119 -K_VARINT=120 -K_WHERE=121 -K_WITH=122 -K_WRITETIME=123 -K_MATERIALIZED=124 -K_VIEW=125 -SEMICOLON=126 -SQUOTE=127 -DQUOTE=128 -DOT=129 -COMMA=130 -L_PAREN=131 -R_PAREN=132 -L_ANGLE_BRACKET=133 -R_ANGLE_BRACKET=134 -IDENTIFIER=135 -IDENTIFIER_WITH_HYPHEN=136 -WS=137 -COMMENT=138 -MULTILINE_COMMENT=139 -UNKNOWN=140 +K_ANY=7 +K_APPLY=8 +K_ARRAY=9 +K_AS=10 +K_ASC=11 +K_ASCII=12 +K_ASSERT_ROWS_MODIFIED=13 +K_AT=14 +K_AUTHORIZE=15 +K_BATCH=16 +K_BEGIN=17 +K_BETWEEN=18 +K_BIGINT=19 +K_BLOB=20 +K_BOOLEAN=21 +K_BY=22 +K_CALLED=23 +K_CASE=24 +K_CAST=25 +K_CLUSTERING=26 +K_COLLATE=27 +K_COLUMNFAMILY=28 +K_COMPACT=29 +K_CONTAINS=30 +K_COUNT=31 +K_COUNTER=32 +K_CREATE=33 +K_CROSS=34 +K_CUBE=35 +K_CURRENT=36 +K_CUSTOM=37 +K_DATE=38 +K_DECIMAL=39 +K_DEFAULT=40 +K_DEFINE=41 +K_DELETE=42 +K_DESC=43 +K_DESCRIBE=44 +K_DISTINCT=45 +K_DOUBLE=46 +K_DROP=47 +K_ELSE=48 +K_END=49 +K_ENTRIES=50 +K_ENUM=51 +K_ESCAPE=52 +K_EXCEPT=53 +K_EXCLUDE=54 +K_EXECUTE=55 +K_EXISTS=56 +K_EXTRACT=57 +K_FALSE=58 +K_FETCH=59 +K_FILTERING=60 +K_FINALFUNC=61 +K_FLOAT=62 +K_FOLLOWING=63 +K_FOR=64 +K_FROM=65 +K_FROZEN=66 +K_FULL=67 +K_FUNCTION=68 +K_FUNCTIONS=69 +K_GRANT=70 +K_GROUP=71 +K_GROUPING=72 +K_GROUPS=73 +K_HASH=74 +K_HAVING=75 +K_IF=76 +K_IGNORE=77 +K_IN=78 +K_INDEX=79 +K_INET=80 +K_INFINITY=81 +K_INITCOND=82 +K_INNER=83 +K_INPUT=84 +K_INSERT=85 +K_INT=86 +K_INTERSECT=87 +K_INTERVAL=88 +K_INTO=89 +K_IS=90 +K_JOIN=91 +K_JSON=92 +K_KEY=93 +K_KEYS=94 +K_KEYSPACE=95 +K_KEYSPACES=96 +K_LANGUAGE=97 +K_LATERAL=98 +K_LEFT=99 +K_LIKE=100 +K_LIMIT=101 +K_LIST=102 +K_LOGIN=103 +K_LOOKUP=104 +K_MAP=105 +K_MERGE=106 +K_MODIFY=107 +K_NAN=108 +K_NATURAL=109 +K_NEW=110 +K_NO=111 +K_NOLOGIN=112 +K_NORECURSIVE=113 +K_NOSUPERUSER=114 +K_NOT=115 +K_NULL=116 +K_NULLS=117 +K_OF=118 +K_ON=119 +K_OPTIONS=120 +K_OR=121 +K_ORDER=122 +K_OUTER=123 +K_OVER=124 +K_PARTITION=125 +K_PASSWORD=126 +K_PERMISSION=127 +K_PERMISSIONS=128 +K_PRECEDING=129 +K_PRIMARY=130 +K_PROTO=131 +K_QUALIFY=132 +K_RANGE=133 +K_RECURSIVE=134 +K_RENAME=135 +K_REPLACE=136 +K_RESPECT=137 +K_RETURNS=138 +K_REVOKE=139 +K_RIGHT=140 +K_ROLE=141 +K_ROLES=142 +K_ROLLUP=143 +K_ROWS=144 +K_SCHEMA=145 +K_SELECT=146 +K_SET=147 +K_SFUNC=148 +K_SMALLINT=149 +K_SOME=150 +K_STATIC=151 +K_STORAGE=152 +K_STRUCT=153 +K_STYPE=154 +K_SUPERUSER=155 +K_TABLE=156 +K_TABLESAMPLE=157 +K_TEXT=158 +K_THEN=159 +K_TIME=160 +K_TIMESTAMP=161 +K_TIMEUUID=162 +K_TINYINT=163 +K_TO=164 +K_TOKEN=165 +K_TREAT=166 +K_TRIGGER=167 +K_TRUE=168 +K_TRUNCATE=169 +K_TTL=170 +K_TUPLE=171 +K_TYPE=172 +K_UNBOUNDED=173 +K_UNION=174 +K_UNLOGGED=175 +K_UNNEST=176 +K_UPDATE=177 +K_USE=178 +K_USER=179 +K_USERS=180 +K_USING=181 +K_UUID=182 +K_VALUES=183 +K_VARCHAR=184 +K_VARINT=185 +K_WHEN=186 +K_WHERE=187 +K_WINDOW=188 +K_WITH=189 +K_WITHIN=190 +K_WRITETIME=191 +K_MATERIALIZED=192 +K_VIEW=193 +SEMICOLON=194 +SQUOTE=195 +DQUOTE=196 +DOT=197 +COMMA=198 +L_PAREN=199 +R_PAREN=200 +L_ANGLE_BRACKET=201 +R_ANGLE_BRACKET=202 +IDENTIFIER=203 +IDENTIFIER_WITH_HYPHEN=204 +WS=205 +COMMENT=206 +MULTILINE_COMMENT=207 +UNKNOWN=208 'ADD'=1 'AGGREGATE'=2 'ALL'=3 'ALLOW'=4 'ALTER'=5 'AND'=6 -'APPLY'=7 -'AS'=8 -'ASC'=9 -'ASCII'=10 -'AUTHORIZE'=11 -'BATCH'=12 -'BEGIN'=13 -'BIGINT'=14 -'BLOB'=15 -'BOOLEAN'=16 -'BY'=17 -'CALLED'=18 -'CLUSTERING'=19 -'COLUMNFAMILY'=20 -'COMPACT'=21 -'CONTAINS'=22 -'COUNT'=23 -'COUNTER'=24 -'CREATE'=25 -'CUSTOM'=26 -'DATE'=27 -'DECIMAL'=28 -'DELETE'=29 -'DESC'=30 -'DESCRIBE'=31 -'DISTINCT'=32 -'DOUBLE'=33 -'DROP'=34 -'ENTRIES'=35 -'EXECUTE'=36 -'EXISTS'=37 -'FILTERING'=38 -'FINALFUNC'=39 -'FLOAT'=40 -'FROM'=41 -'FROZEN'=42 -'FULL'=43 -'FUNCTION'=44 -'FUNCTIONS'=45 -'GRANT'=46 -'IF'=47 -'IN'=48 -'INDEX'=49 -'INET'=50 -'INFINITY'=51 -'INITCOND'=52 -'INPUT'=53 -'INSERT'=54 -'INT'=55 -'INTO'=56 -'JSON'=57 -'KEY'=58 -'KEYS'=59 -'KEYSPACE'=60 -'KEYSPACES'=61 -'LANGUAGE'=62 -'LIMIT'=63 -'LIST'=64 -'LOGIN'=65 -'MAP'=66 -'MODIFY'=67 -'NAN'=68 -'NOLOGIN'=69 -'NORECURSIVE'=70 -'NOSUPERUSER'=71 -'NOT'=72 -'NULL'=73 -'OF'=74 -'ON'=75 -'OPTIONS'=76 -'OR'=77 -'ORDER'=78 -'PASSWORD'=79 -'PERMISSION'=80 -'PERMISSIONS'=81 -'PRIMARY'=82 -'RENAME'=83 -'REPLACE'=84 -'RETURNS'=85 -'REVOKE'=86 -'ROLE'=87 -'ROLES'=88 -'SCHEMA'=89 -'SELECT'=90 -'SET'=91 -'SFUNC'=92 -'SMALLINT'=93 -'STATIC'=94 -'STORAGE'=95 -'STYPE'=96 -'SUPERUSER'=97 -'TABLE'=98 -'TEXT'=99 -'TIME'=100 -'TIMESTAMP'=101 -'TIMEUUID'=102 -'TINYINT'=103 -'TO'=104 -'TOKEN'=105 -'TRIGGER'=106 -'TRUNCATE'=107 -'TTL'=108 -'TUPLE'=109 -'TYPE'=110 -'UNLOGGED'=111 -'UPDATE'=112 -'USE'=113 -'USER'=114 -'USERS'=115 -'USING'=116 -'UUID'=117 -'VALUES'=118 -'VARCHAR'=119 -'VARINT'=120 -'WHERE'=121 -'WITH'=122 -'WRITETIME'=123 -'MATERIALIZED'=124 -'VIEW'=125 -';'=126 -'\''=127 -'"'=128 -'.'=129 -','=130 -'('=131 -')'=132 -'<'=133 -'>'=134 +'ANY'=7 +'APPLY'=8 +'ARRAY'=9 +'AS'=10 +'ASC'=11 +'ASCII'=12 +'ASSERT_ROWS_MODIFIED'=13 +'AT'=14 +'AUTHORIZE'=15 +'BATCH'=16 +'BEGIN'=17 +'BETWEEN'=18 +'BIGINT'=19 +'BLOB'=20 +'BOOLEAN'=21 +'BY'=22 +'CALLED'=23 +'CASE'=24 +'CAST'=25 +'CLUSTERING'=26 +'COLLATE'=27 +'COLUMNFAMILY'=28 +'COMPACT'=29 +'CONTAINS'=30 +'COUNT'=31 +'COUNTER'=32 +'CREATE'=33 +'CROSS'=34 +'CUBE'=35 +'CURRENT'=36 +'CUSTOM'=37 +'DATE'=38 +'DECIMAL'=39 +'DEFAULT'=40 +'DEFINE'=41 +'DELETE'=42 +'DESC'=43 +'DESCRIBE'=44 +'DISTINCT'=45 +'DOUBLE'=46 +'DROP'=47 +'ELSE'=48 +'END'=49 +'ENTRIES'=50 +'ENUM'=51 +'ESCAPE'=52 +'EXCEPT'=53 +'EXCLUDE'=54 +'EXECUTE'=55 +'EXISTS'=56 +'EXTRACT'=57 +'FALSE'=58 +'FETCH'=59 +'FILTERING'=60 +'FINALFUNC'=61 +'FLOAT'=62 +'FOLLOWING'=63 +'FOR'=64 +'FROM'=65 +'FROZEN'=66 +'FULL'=67 +'FUNCTION'=68 +'FUNCTIONS'=69 +'GRANT'=70 +'GROUP'=71 +'GROUPING'=72 +'GROUPS'=73 +'HASH'=74 +'HAVING'=75 +'IF'=76 +'IGNORE'=77 +'IN'=78 +'INDEX'=79 +'INET'=80 +'INFINITY'=81 +'INITCOND'=82 +'INNER'=83 +'INPUT'=84 +'INSERT'=85 +'INT'=86 +'INTERSECT'=87 +'INTERVAL'=88 +'INTO'=89 +'IS'=90 +'JOIN'=91 +'JSON'=92 +'KEY'=93 +'KEYS'=94 +'KEYSPACE'=95 +'KEYSPACES'=96 +'LANGUAGE'=97 +'LATERAL'=98 +'LEFT'=99 +'LIKE'=100 +'LIMIT'=101 +'LIST'=102 +'LOGIN'=103 +'LOOKUP'=104 +'MAP'=105 +'MERGE'=106 +'MODIFY'=107 +'NAN'=108 +'NATURAL'=109 +'NEW'=110 +'NO'=111 +'NOLOGIN'=112 +'NORECURSIVE'=113 +'NOSUPERUSER'=114 +'NOT'=115 +'NULL'=116 +'NULLS'=117 +'OF'=118 +'ON'=119 +'OPTIONS'=120 +'OR'=121 +'ORDER'=122 +'OUTER'=123 +'OVER'=124 +'PARTITION'=125 +'PASSWORD'=126 +'PERMISSION'=127 +'PERMISSIONS'=128 +'PRECEDING'=129 +'PRIMARY'=130 +'PROTO'=131 +'QUALIFY'=132 +'RANGE'=133 +'RECURSIVE'=134 +'RENAME'=135 +'REPLACE'=136 +'RESPECT'=137 +'RETURNS'=138 +'REVOKE'=139 +'RIGHT'=140 +'ROLE'=141 +'ROLES'=142 +'ROLLUP'=143 +'ROWS'=144 +'SCHEMA'=145 +'SELECT'=146 +'SET'=147 +'SFUNC'=148 +'SMALLINT'=149 +'SOME'=150 +'STATIC'=151 +'STORAGE'=152 +'STRUCT'=153 +'STYPE'=154 +'SUPERUSER'=155 +'TABLE'=156 +'TABLESAMPLE'=157 +'TEXT'=158 +'THEN'=159 +'TIME'=160 +'TIMESTAMP'=161 +'TIMEUUID'=162 +'TINYINT'=163 +'TO'=164 +'TOKEN'=165 +'TREAT'=166 +'TRIGGER'=167 +'TRUE'=168 +'TRUNCATE'=169 +'TTL'=170 +'TUPLE'=171 +'TYPE'=172 +'UNBOUNDED'=173 +'UNION'=174 +'UNLOGGED'=175 +'UNNEST'=176 +'UPDATE'=177 +'USE'=178 +'USER'=179 +'USERS'=180 +'USING'=181 +'UUID'=182 +'VALUES'=183 +'VARCHAR'=184 +'VARINT'=185 +'WHEN'=186 +'WHERE'=187 +'WINDOW'=188 +'WITH'=189 +'WITHIN'=190 +'WRITETIME'=191 +'MATERIALIZED'=192 +'VIEW'=193 +';'=194 +'\''=195 +'"'=196 +'.'=197 +','=198 +'('=199 +')'=200 +'<'=201 +'>'=202 diff --git a/translator/cqlparser/CqlParser.interp b/translator/cqlparser/CqlParser.interp index 6996558..67d9272 100644 --- a/translator/cqlparser/CqlParser.interp +++ b/translator/cqlparser/CqlParser.interp @@ -6,111 +6,176 @@ null 'ALLOW' 'ALTER' 'AND' +'ANY' 'APPLY' +'ARRAY' 'AS' 'ASC' 'ASCII' +'ASSERT_ROWS_MODIFIED' +'AT' 'AUTHORIZE' 'BATCH' 'BEGIN' +'BETWEEN' 'BIGINT' 'BLOB' 'BOOLEAN' 'BY' 'CALLED' +'CASE' +'CAST' 'CLUSTERING' +'COLLATE' 'COLUMNFAMILY' 'COMPACT' 'CONTAINS' 'COUNT' 'COUNTER' 'CREATE' +'CROSS' +'CUBE' +'CURRENT' 'CUSTOM' 'DATE' 'DECIMAL' +'DEFAULT' +'DEFINE' 'DELETE' 'DESC' 'DESCRIBE' 'DISTINCT' 'DOUBLE' 'DROP' +'ELSE' +'END' 'ENTRIES' +'ENUM' +'ESCAPE' +'EXCEPT' +'EXCLUDE' 'EXECUTE' 'EXISTS' +'EXTRACT' +'FALSE' +'FETCH' 'FILTERING' 'FINALFUNC' 'FLOAT' +'FOLLOWING' +'FOR' 'FROM' 'FROZEN' 'FULL' 'FUNCTION' 'FUNCTIONS' 'GRANT' +'GROUP' +'GROUPING' +'GROUPS' +'HASH' +'HAVING' 'IF' +'IGNORE' 'IN' 'INDEX' 'INET' 'INFINITY' 'INITCOND' +'INNER' 'INPUT' 'INSERT' 'INT' +'INTERSECT' +'INTERVAL' 'INTO' +'IS' +'JOIN' 'JSON' 'KEY' 'KEYS' 'KEYSPACE' 'KEYSPACES' 'LANGUAGE' +'LATERAL' +'LEFT' +'LIKE' 'LIMIT' 'LIST' 'LOGIN' +'LOOKUP' 'MAP' +'MERGE' 'MODIFY' 'NAN' +'NATURAL' +'NEW' +'NO' 'NOLOGIN' 'NORECURSIVE' 'NOSUPERUSER' 'NOT' 'NULL' +'NULLS' 'OF' 'ON' 'OPTIONS' 'OR' 'ORDER' +'OUTER' +'OVER' +'PARTITION' 'PASSWORD' 'PERMISSION' 'PERMISSIONS' +'PRECEDING' 'PRIMARY' +'PROTO' +'QUALIFY' +'RANGE' +'RECURSIVE' 'RENAME' 'REPLACE' +'RESPECT' 'RETURNS' 'REVOKE' +'RIGHT' 'ROLE' 'ROLES' +'ROLLUP' +'ROWS' 'SCHEMA' 'SELECT' 'SET' 'SFUNC' 'SMALLINT' +'SOME' 'STATIC' 'STORAGE' +'STRUCT' 'STYPE' 'SUPERUSER' 'TABLE' +'TABLESAMPLE' 'TEXT' +'THEN' 'TIME' 'TIMESTAMP' 'TIMEUUID' 'TINYINT' 'TO' 'TOKEN' +'TREAT' 'TRIGGER' +'TRUE' 'TRUNCATE' 'TTL' 'TUPLE' 'TYPE' +'UNBOUNDED' +'UNION' 'UNLOGGED' +'UNNEST' 'UPDATE' 'USE' 'USER' @@ -120,8 +185,11 @@ null 'VALUES' 'VARCHAR' 'VARINT' +'WHEN' 'WHERE' +'WINDOW' 'WITH' +'WITHIN' 'WRITETIME' 'MATERIALIZED' 'VIEW' @@ -149,111 +217,176 @@ K_ALL K_ALLOW K_ALTER K_AND +K_ANY K_APPLY +K_ARRAY K_AS K_ASC K_ASCII +K_ASSERT_ROWS_MODIFIED +K_AT K_AUTHORIZE K_BATCH K_BEGIN +K_BETWEEN K_BIGINT K_BLOB K_BOOLEAN K_BY K_CALLED +K_CASE +K_CAST K_CLUSTERING +K_COLLATE K_COLUMNFAMILY K_COMPACT K_CONTAINS K_COUNT K_COUNTER K_CREATE +K_CROSS +K_CUBE +K_CURRENT K_CUSTOM K_DATE K_DECIMAL +K_DEFAULT +K_DEFINE K_DELETE K_DESC K_DESCRIBE K_DISTINCT K_DOUBLE K_DROP +K_ELSE +K_END K_ENTRIES +K_ENUM +K_ESCAPE +K_EXCEPT +K_EXCLUDE K_EXECUTE K_EXISTS +K_EXTRACT +K_FALSE +K_FETCH K_FILTERING K_FINALFUNC K_FLOAT +K_FOLLOWING +K_FOR K_FROM K_FROZEN K_FULL K_FUNCTION K_FUNCTIONS K_GRANT +K_GROUP +K_GROUPING +K_GROUPS +K_HASH +K_HAVING K_IF +K_IGNORE K_IN K_INDEX K_INET K_INFINITY K_INITCOND +K_INNER K_INPUT K_INSERT K_INT +K_INTERSECT +K_INTERVAL K_INTO +K_IS +K_JOIN K_JSON K_KEY K_KEYS K_KEYSPACE K_KEYSPACES K_LANGUAGE +K_LATERAL +K_LEFT +K_LIKE K_LIMIT K_LIST K_LOGIN +K_LOOKUP K_MAP +K_MERGE K_MODIFY K_NAN +K_NATURAL +K_NEW +K_NO K_NOLOGIN K_NORECURSIVE K_NOSUPERUSER K_NOT K_NULL +K_NULLS K_OF K_ON K_OPTIONS K_OR K_ORDER +K_OUTER +K_OVER +K_PARTITION K_PASSWORD K_PERMISSION K_PERMISSIONS +K_PRECEDING K_PRIMARY +K_PROTO +K_QUALIFY +K_RANGE +K_RECURSIVE K_RENAME K_REPLACE +K_RESPECT K_RETURNS K_REVOKE +K_RIGHT K_ROLE K_ROLES +K_ROLLUP +K_ROWS K_SCHEMA K_SELECT K_SET K_SFUNC K_SMALLINT +K_SOME K_STATIC K_STORAGE +K_STRUCT K_STYPE K_SUPERUSER K_TABLE +K_TABLESAMPLE K_TEXT +K_THEN K_TIME K_TIMESTAMP K_TIMEUUID K_TINYINT K_TO K_TOKEN +K_TREAT K_TRIGGER +K_TRUE K_TRUNCATE K_TTL K_TUPLE K_TYPE +K_UNBOUNDED +K_UNION K_UNLOGGED +K_UNNEST K_UPDATE K_USE K_USER @@ -263,8 +396,11 @@ K_UUID K_VALUES K_VARCHAR K_VARINT +K_WHEN K_WHERE +K_WINDOW K_WITH +K_WITHIN K_WRITETIME K_MATERIALIZED K_VIEW @@ -314,4 +450,4 @@ nonReservedKeyword atn: -[4, 1, 140, 545, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 1, 0, 1, 0, 3, 0, 55, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 61, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 66, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 73, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 80, 8, 3, 1, 3, 1, 3, 1, 3, 5, 3, 85, 8, 3, 10, 3, 12, 3, 88, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 95, 8, 3, 10, 3, 12, 3, 98, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 103, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 110, 8, 3, 10, 3, 12, 3, 113, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 118, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3, 123, 8, 3, 1, 3, 1, 3, 1, 3, 5, 3, 128, 8, 3, 10, 3, 12, 3, 131, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 136, 8, 3, 10, 3, 12, 3, 139, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 144, 8, 3, 10, 3, 12, 3, 147, 9, 3, 1, 3, 1, 3, 5, 3, 151, 8, 3, 10, 3, 12, 3, 154, 9, 3, 1, 3, 1, 3, 3, 3, 158, 8, 3, 1, 3, 1, 3, 5, 3, 162, 8, 3, 10, 3, 12, 3, 165, 9, 3, 1, 3, 4, 3, 168, 8, 3, 11, 3, 12, 3, 169, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 177, 8, 3, 1, 3, 1, 3, 5, 3, 181, 8, 3, 10, 3, 12, 3, 184, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 189, 8, 3, 1, 3, 5, 3, 192, 8, 3, 10, 3, 12, 3, 195, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 201, 8, 3, 1, 3, 5, 3, 204, 8, 3, 10, 3, 12, 3, 207, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 213, 8, 3, 10, 3, 12, 3, 216, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 222, 8, 3, 1, 3, 5, 3, 225, 8, 3, 10, 3, 12, 3, 228, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 233, 8, 3, 1, 3, 5, 3, 236, 8, 3, 10, 3, 12, 3, 239, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 244, 8, 3, 10, 3, 12, 3, 247, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 252, 8, 3, 10, 3, 12, 3, 255, 9, 3, 1, 3, 1, 3, 5, 3, 259, 8, 3, 10, 3, 12, 3, 262, 9, 3, 1, 3, 1, 3, 5, 3, 266, 8, 3, 10, 3, 12, 3, 269, 9, 3, 1, 3, 1, 3, 5, 3, 273, 8, 3, 10, 3, 12, 3, 276, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 281, 8, 3, 10, 3, 12, 3, 284, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 289, 8, 3, 10, 3, 12, 3, 292, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 297, 8, 3, 10, 3, 12, 3, 300, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 305, 8, 3, 1, 3, 1, 3, 3, 3, 309, 8, 3, 1, 3, 5, 3, 312, 8, 3, 10, 3, 12, 3, 315, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 320, 8, 3, 10, 3, 12, 3, 323, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 330, 8, 3, 1, 3, 5, 3, 333, 8, 3, 10, 3, 12, 3, 336, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 341, 8, 3, 1, 3, 1, 3, 3, 3, 345, 8, 3, 1, 3, 5, 3, 348, 8, 3, 10, 3, 12, 3, 351, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 356, 8, 3, 1, 3, 5, 3, 359, 8, 3, 10, 3, 12, 3, 362, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 367, 8, 3, 1, 3, 5, 3, 370, 8, 3, 10, 3, 12, 3, 373, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 378, 8, 3, 10, 3, 12, 3, 381, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 386, 8, 3, 1, 3, 5, 3, 389, 8, 3, 10, 3, 12, 3, 392, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 397, 8, 3, 1, 3, 5, 3, 400, 8, 3, 10, 3, 12, 3, 403, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 408, 8, 3, 1, 3, 5, 3, 411, 8, 3, 10, 3, 12, 3, 414, 9, 3, 3, 3, 416, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 421, 8, 4, 10, 4, 12, 4, 424, 9, 4, 1, 4, 1, 4, 3, 4, 428, 8, 4, 1, 5, 1, 5, 1, 5, 3, 5, 433, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 3, 7, 443, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 450, 8, 8, 10, 8, 12, 8, 453, 9, 8, 1, 8, 1, 8, 3, 8, 457, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 462, 8, 9, 10, 9, 12, 9, 465, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 480, 8, 13, 1, 14, 1, 14, 3, 14, 484, 8, 14, 1, 15, 1, 15, 3, 15, 488, 8, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 514, 8, 20, 1, 21, 1, 21, 5, 21, 518, 8, 21, 10, 21, 12, 21, 521, 9, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 535, 8, 22, 1, 23, 1, 23, 3, 23, 539, 8, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 0, 0, 26, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 0, 5, 2, 0, 24, 24, 111, 111, 12, 0, 10, 10, 14, 16, 24, 24, 27, 28, 33, 33, 40, 40, 50, 50, 55, 55, 93, 93, 99, 103, 117, 117, 119, 120, 2, 0, 64, 64, 91, 91, 31, 0, 1, 1, 4, 7, 9, 9, 11, 13, 17, 17, 20, 20, 25, 25, 29, 31, 34, 36, 41, 41, 43, 43, 46, 49, 51, 51, 54, 54, 56, 56, 60, 60, 63, 63, 67, 68, 70, 70, 72, 75, 77, 78, 82, 84, 86, 86, 89, 91, 98, 98, 104, 105, 107, 107, 111, 113, 116, 116, 121, 122, 124, 125, 30, 0, 2, 3, 8, 8, 10, 10, 14, 16, 18, 19, 21, 24, 26, 28, 32, 33, 37, 40, 42, 42, 44, 45, 50, 50, 52, 53, 55, 55, 57, 59, 61, 62, 64, 66, 69, 69, 71, 71, 76, 76, 79, 81, 85, 85, 87, 88, 92, 97, 99, 103, 106, 106, 108, 110, 114, 115, 117, 120, 123, 123, 634, 0, 52, 1, 0, 0, 0, 2, 60, 1, 0, 0, 0, 4, 62, 1, 0, 0, 0, 6, 415, 1, 0, 0, 0, 8, 417, 1, 0, 0, 0, 10, 429, 1, 0, 0, 0, 12, 434, 1, 0, 0, 0, 14, 439, 1, 0, 0, 0, 16, 456, 1, 0, 0, 0, 18, 458, 1, 0, 0, 0, 20, 466, 1, 0, 0, 0, 22, 471, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 483, 1, 0, 0, 0, 30, 487, 1, 0, 0, 0, 32, 489, 1, 0, 0, 0, 34, 492, 1, 0, 0, 0, 36, 495, 1, 0, 0, 0, 38, 499, 1, 0, 0, 0, 40, 513, 1, 0, 0, 0, 42, 515, 1, 0, 0, 0, 44, 534, 1, 0, 0, 0, 46, 538, 1, 0, 0, 0, 48, 540, 1, 0, 0, 0, 50, 542, 1, 0, 0, 0, 52, 54, 3, 2, 1, 0, 53, 55, 5, 126, 0, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 5, 0, 0, 1, 57, 1, 1, 0, 0, 0, 58, 61, 3, 4, 2, 0, 59, 61, 3, 6, 3, 0, 60, 58, 1, 0, 0, 0, 60, 59, 1, 0, 0, 0, 61, 3, 1, 0, 0, 0, 62, 63, 5, 25, 0, 0, 63, 65, 5, 98, 0, 0, 64, 66, 3, 36, 18, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 22, 11, 0, 68, 69, 5, 131, 0, 0, 69, 70, 3, 8, 4, 0, 70, 72, 5, 132, 0, 0, 71, 73, 3, 42, 21, 0, 72, 71, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 5, 1, 0, 0, 0, 74, 75, 5, 113, 0, 0, 75, 416, 3, 24, 12, 0, 76, 77, 5, 25, 0, 0, 77, 79, 5, 60, 0, 0, 78, 80, 3, 36, 18, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 3, 24, 12, 0, 82, 86, 5, 122, 0, 0, 83, 85, 3, 44, 22, 0, 84, 83, 1, 0, 0, 0, 85, 88, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 416, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 89, 90, 5, 5, 0, 0, 90, 91, 5, 60, 0, 0, 91, 92, 3, 24, 12, 0, 92, 96, 5, 122, 0, 0, 93, 95, 3, 44, 22, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 416, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 34, 0, 0, 100, 102, 5, 60, 0, 0, 101, 103, 3, 34, 17, 0, 102, 101, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 416, 3, 24, 12, 0, 105, 106, 5, 5, 0, 0, 106, 107, 5, 98, 0, 0, 107, 111, 3, 22, 11, 0, 108, 110, 3, 44, 22, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 416, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 34, 0, 0, 115, 117, 5, 98, 0, 0, 116, 118, 3, 34, 17, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 416, 3, 22, 11, 0, 120, 122, 5, 107, 0, 0, 121, 123, 5, 98, 0, 0, 122, 121, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 416, 3, 22, 11, 0, 125, 129, 5, 90, 0, 0, 126, 128, 3, 44, 22, 0, 127, 126, 1, 0, 0, 0, 128, 131, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 416, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 132, 133, 5, 54, 0, 0, 133, 137, 5, 56, 0, 0, 134, 136, 3, 44, 22, 0, 135, 134, 1, 0, 0, 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 416, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 112, 0, 0, 141, 145, 3, 22, 11, 0, 142, 144, 3, 44, 22, 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 416, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 148, 152, 5, 29, 0, 0, 149, 151, 3, 44, 22, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 416, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 157, 5, 13, 0, 0, 156, 158, 7, 0, 0, 0, 157, 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 167, 5, 12, 0, 0, 160, 162, 3, 44, 22, 0, 161, 160, 1, 0, 0, 0, 162, 165, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 166, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 166, 168, 5, 126, 0, 0, 167, 163, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 5, 7, 0, 0, 172, 173, 5, 12, 0, 0, 173, 416, 5, 126, 0, 0, 174, 176, 5, 25, 0, 0, 175, 177, 5, 26, 0, 0, 176, 175, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 182, 5, 49, 0, 0, 179, 181, 3, 44, 22, 0, 180, 179, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 416, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 185, 186, 5, 34, 0, 0, 186, 188, 5, 49, 0, 0, 187, 189, 3, 34, 17, 0, 188, 187, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 193, 1, 0, 0, 0, 190, 192, 3, 44, 22, 0, 191, 190, 1, 0, 0, 0, 192, 195, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 416, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 197, 5, 25, 0, 0, 197, 198, 5, 124, 0, 0, 198, 200, 5, 125, 0, 0, 199, 201, 3, 36, 18, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 205, 1, 0, 0, 0, 202, 204, 3, 44, 22, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 416, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 5, 0, 0, 209, 210, 5, 124, 0, 0, 210, 214, 5, 125, 0, 0, 211, 213, 3, 44, 22, 0, 212, 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 416, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 34, 0, 0, 218, 219, 5, 124, 0, 0, 219, 221, 5, 125, 0, 0, 220, 222, 3, 34, 17, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 226, 1, 0, 0, 0, 223, 225, 3, 44, 22, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 416, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 230, 5, 25, 0, 0, 230, 232, 5, 87, 0, 0, 231, 233, 3, 36, 18, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 237, 1, 0, 0, 0, 234, 236, 3, 44, 22, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 416, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 5, 0, 0, 241, 245, 5, 87, 0, 0, 242, 244, 3, 44, 22, 0, 243, 242, 1, 0, 0, 0, 244, 247, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 416, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 248, 249, 5, 34, 0, 0, 249, 253, 5, 87, 0, 0, 250, 252, 3, 44, 22, 0, 251, 250, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 416, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 260, 5, 46, 0, 0, 257, 259, 3, 44, 22, 0, 258, 257, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 416, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 267, 5, 86, 0, 0, 264, 266, 3, 44, 22, 0, 265, 264, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 416, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 274, 5, 64, 0, 0, 271, 273, 3, 44, 22, 0, 272, 271, 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 416, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, 5, 25, 0, 0, 278, 282, 5, 114, 0, 0, 279, 281, 3, 44, 22, 0, 280, 279, 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 416, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 5, 5, 0, 0, 286, 290, 5, 114, 0, 0, 287, 289, 3, 44, 22, 0, 288, 287, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 416, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 293, 294, 5, 34, 0, 0, 294, 298, 5, 114, 0, 0, 295, 297, 3, 44, 22, 0, 296, 295, 1, 0, 0, 0, 297, 300, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 416, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 304, 5, 25, 0, 0, 302, 303, 5, 77, 0, 0, 303, 305, 5, 84, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 5, 44, 0, 0, 307, 309, 3, 36, 18, 0, 308, 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 313, 1, 0, 0, 0, 310, 312, 3, 44, 22, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 8, 0, 0, 317, 321, 5, 127, 0, 0, 318, 320, 3, 44, 22, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 126, 0, 0, 325, 416, 5, 127, 0, 0, 326, 327, 5, 34, 0, 0, 327, 329, 5, 44, 0, 0, 328, 330, 3, 34, 17, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, 333, 3, 44, 22, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 416, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 340, 5, 25, 0, 0, 338, 339, 5, 77, 0, 0, 339, 341, 5, 84, 0, 0, 340, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 5, 2, 0, 0, 343, 345, 3, 36, 18, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 349, 1, 0, 0, 0, 346, 348, 3, 44, 22, 0, 347, 346, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 416, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 34, 0, 0, 353, 355, 5, 2, 0, 0, 354, 356, 3, 34, 17, 0, 355, 354, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 360, 1, 0, 0, 0, 357, 359, 3, 44, 22, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 416, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 25, 0, 0, 364, 366, 5, 110, 0, 0, 365, 367, 3, 36, 18, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 371, 1, 0, 0, 0, 368, 370, 3, 44, 22, 0, 369, 368, 1, 0, 0, 0, 370, 373, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 416, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 374, 375, 5, 5, 0, 0, 375, 379, 5, 110, 0, 0, 376, 378, 3, 44, 22, 0, 377, 376, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 416, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 34, 0, 0, 383, 385, 5, 110, 0, 0, 384, 386, 3, 34, 17, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 390, 1, 0, 0, 0, 387, 389, 3, 44, 22, 0, 388, 387, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 416, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 394, 5, 25, 0, 0, 394, 396, 5, 106, 0, 0, 395, 397, 3, 36, 18, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 401, 1, 0, 0, 0, 398, 400, 3, 44, 22, 0, 399, 398, 1, 0, 0, 0, 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 416, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 405, 5, 34, 0, 0, 405, 407, 5, 106, 0, 0, 406, 408, 3, 34, 17, 0, 407, 406, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 412, 1, 0, 0, 0, 409, 411, 3, 44, 22, 0, 410, 409, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 74, 1, 0, 0, 0, 415, 76, 1, 0, 0, 0, 415, 89, 1, 0, 0, 0, 415, 99, 1, 0, 0, 0, 415, 105, 1, 0, 0, 0, 415, 114, 1, 0, 0, 0, 415, 120, 1, 0, 0, 0, 415, 125, 1, 0, 0, 0, 415, 132, 1, 0, 0, 0, 415, 140, 1, 0, 0, 0, 415, 148, 1, 0, 0, 0, 415, 155, 1, 0, 0, 0, 415, 174, 1, 0, 0, 0, 415, 185, 1, 0, 0, 0, 415, 196, 1, 0, 0, 0, 415, 208, 1, 0, 0, 0, 415, 217, 1, 0, 0, 0, 415, 229, 1, 0, 0, 0, 415, 240, 1, 0, 0, 0, 415, 248, 1, 0, 0, 0, 415, 256, 1, 0, 0, 0, 415, 263, 1, 0, 0, 0, 415, 270, 1, 0, 0, 0, 415, 277, 1, 0, 0, 0, 415, 285, 1, 0, 0, 0, 415, 293, 1, 0, 0, 0, 415, 301, 1, 0, 0, 0, 415, 326, 1, 0, 0, 0, 415, 337, 1, 0, 0, 0, 415, 352, 1, 0, 0, 0, 415, 363, 1, 0, 0, 0, 415, 374, 1, 0, 0, 0, 415, 382, 1, 0, 0, 0, 415, 393, 1, 0, 0, 0, 415, 404, 1, 0, 0, 0, 416, 7, 1, 0, 0, 0, 417, 422, 3, 10, 5, 0, 418, 419, 5, 130, 0, 0, 419, 421, 3, 10, 5, 0, 420, 418, 1, 0, 0, 0, 421, 424, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 1, 0, 0, 0, 424, 422, 1, 0, 0, 0, 425, 426, 5, 130, 0, 0, 426, 428, 3, 12, 6, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 9, 1, 0, 0, 0, 429, 430, 3, 20, 10, 0, 430, 432, 3, 30, 15, 0, 431, 433, 3, 32, 16, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 11, 1, 0, 0, 0, 434, 435, 3, 32, 16, 0, 435, 436, 5, 131, 0, 0, 436, 437, 3, 14, 7, 0, 437, 438, 5, 132, 0, 0, 438, 13, 1, 0, 0, 0, 439, 442, 3, 16, 8, 0, 440, 441, 5, 130, 0, 0, 441, 443, 3, 18, 9, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 15, 1, 0, 0, 0, 444, 457, 3, 20, 10, 0, 445, 446, 5, 131, 0, 0, 446, 451, 3, 20, 10, 0, 447, 448, 5, 130, 0, 0, 448, 450, 3, 20, 10, 0, 449, 447, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 455, 5, 132, 0, 0, 455, 457, 1, 0, 0, 0, 456, 444, 1, 0, 0, 0, 456, 445, 1, 0, 0, 0, 457, 17, 1, 0, 0, 0, 458, 463, 3, 20, 10, 0, 459, 460, 5, 130, 0, 0, 460, 462, 3, 20, 10, 0, 461, 459, 1, 0, 0, 0, 462, 465, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 19, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 466, 467, 3, 28, 14, 0, 467, 21, 1, 0, 0, 0, 468, 469, 3, 24, 12, 0, 469, 470, 5, 129, 0, 0, 470, 472, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 3, 28, 14, 0, 474, 23, 1, 0, 0, 0, 475, 476, 3, 26, 13, 0, 476, 25, 1, 0, 0, 0, 477, 480, 5, 136, 0, 0, 478, 480, 3, 28, 14, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 484, 3, 50, 25, 0, 482, 484, 5, 135, 0, 0, 483, 481, 1, 0, 0, 0, 483, 482, 1, 0, 0, 0, 484, 29, 1, 0, 0, 0, 485, 488, 3, 38, 19, 0, 486, 488, 3, 40, 20, 0, 487, 485, 1, 0, 0, 0, 487, 486, 1, 0, 0, 0, 488, 31, 1, 0, 0, 0, 489, 490, 5, 82, 0, 0, 490, 491, 5, 58, 0, 0, 491, 33, 1, 0, 0, 0, 492, 493, 5, 47, 0, 0, 493, 494, 5, 37, 0, 0, 494, 35, 1, 0, 0, 0, 495, 496, 5, 47, 0, 0, 496, 497, 5, 72, 0, 0, 497, 498, 5, 37, 0, 0, 498, 37, 1, 0, 0, 0, 499, 500, 7, 1, 0, 0, 500, 39, 1, 0, 0, 0, 501, 502, 5, 66, 0, 0, 502, 503, 5, 133, 0, 0, 503, 504, 3, 38, 19, 0, 504, 505, 5, 130, 0, 0, 505, 506, 3, 38, 19, 0, 506, 507, 5, 134, 0, 0, 507, 514, 1, 0, 0, 0, 508, 509, 7, 2, 0, 0, 509, 510, 5, 133, 0, 0, 510, 511, 3, 38, 19, 0, 511, 512, 5, 134, 0, 0, 512, 514, 1, 0, 0, 0, 513, 501, 1, 0, 0, 0, 513, 508, 1, 0, 0, 0, 514, 41, 1, 0, 0, 0, 515, 519, 5, 122, 0, 0, 516, 518, 3, 44, 22, 0, 517, 516, 1, 0, 0, 0, 518, 521, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 43, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 522, 535, 3, 46, 23, 0, 523, 535, 5, 127, 0, 0, 524, 535, 5, 128, 0, 0, 525, 535, 5, 129, 0, 0, 526, 535, 5, 130, 0, 0, 527, 535, 5, 131, 0, 0, 528, 535, 5, 132, 0, 0, 529, 535, 5, 133, 0, 0, 530, 535, 5, 134, 0, 0, 531, 535, 5, 135, 0, 0, 532, 535, 5, 136, 0, 0, 533, 535, 5, 140, 0, 0, 534, 522, 1, 0, 0, 0, 534, 523, 1, 0, 0, 0, 534, 524, 1, 0, 0, 0, 534, 525, 1, 0, 0, 0, 534, 526, 1, 0, 0, 0, 534, 527, 1, 0, 0, 0, 534, 528, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, 534, 531, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 533, 1, 0, 0, 0, 535, 45, 1, 0, 0, 0, 536, 539, 3, 48, 24, 0, 537, 539, 3, 50, 25, 0, 538, 536, 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 47, 1, 0, 0, 0, 540, 541, 7, 3, 0, 0, 541, 49, 1, 0, 0, 0, 542, 543, 7, 4, 0, 0, 543, 51, 1, 0, 0, 0, 73, 54, 60, 65, 72, 79, 86, 96, 102, 111, 117, 122, 129, 137, 145, 152, 157, 163, 169, 176, 182, 188, 193, 200, 205, 214, 221, 226, 232, 237, 245, 253, 260, 267, 274, 282, 290, 298, 304, 308, 313, 321, 329, 334, 340, 344, 349, 355, 360, 366, 371, 379, 385, 390, 396, 401, 407, 412, 415, 422, 427, 432, 442, 451, 456, 463, 471, 479, 483, 487, 513, 519, 534, 538] \ No newline at end of file +[4, 1, 208, 545, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 1, 0, 1, 0, 3, 0, 55, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 61, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 66, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 73, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 80, 8, 3, 1, 3, 1, 3, 1, 3, 5, 3, 85, 8, 3, 10, 3, 12, 3, 88, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 95, 8, 3, 10, 3, 12, 3, 98, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 103, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 110, 8, 3, 10, 3, 12, 3, 113, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 118, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3, 123, 8, 3, 1, 3, 1, 3, 1, 3, 5, 3, 128, 8, 3, 10, 3, 12, 3, 131, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 136, 8, 3, 10, 3, 12, 3, 139, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 144, 8, 3, 10, 3, 12, 3, 147, 9, 3, 1, 3, 1, 3, 5, 3, 151, 8, 3, 10, 3, 12, 3, 154, 9, 3, 1, 3, 1, 3, 3, 3, 158, 8, 3, 1, 3, 1, 3, 5, 3, 162, 8, 3, 10, 3, 12, 3, 165, 9, 3, 1, 3, 4, 3, 168, 8, 3, 11, 3, 12, 3, 169, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 177, 8, 3, 1, 3, 1, 3, 5, 3, 181, 8, 3, 10, 3, 12, 3, 184, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 189, 8, 3, 1, 3, 5, 3, 192, 8, 3, 10, 3, 12, 3, 195, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 201, 8, 3, 1, 3, 5, 3, 204, 8, 3, 10, 3, 12, 3, 207, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 213, 8, 3, 10, 3, 12, 3, 216, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 222, 8, 3, 1, 3, 5, 3, 225, 8, 3, 10, 3, 12, 3, 228, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 233, 8, 3, 1, 3, 5, 3, 236, 8, 3, 10, 3, 12, 3, 239, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 244, 8, 3, 10, 3, 12, 3, 247, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 252, 8, 3, 10, 3, 12, 3, 255, 9, 3, 1, 3, 1, 3, 5, 3, 259, 8, 3, 10, 3, 12, 3, 262, 9, 3, 1, 3, 1, 3, 5, 3, 266, 8, 3, 10, 3, 12, 3, 269, 9, 3, 1, 3, 1, 3, 5, 3, 273, 8, 3, 10, 3, 12, 3, 276, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 281, 8, 3, 10, 3, 12, 3, 284, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 289, 8, 3, 10, 3, 12, 3, 292, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 297, 8, 3, 10, 3, 12, 3, 300, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 305, 8, 3, 1, 3, 1, 3, 3, 3, 309, 8, 3, 1, 3, 5, 3, 312, 8, 3, 10, 3, 12, 3, 315, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 320, 8, 3, 10, 3, 12, 3, 323, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 330, 8, 3, 1, 3, 5, 3, 333, 8, 3, 10, 3, 12, 3, 336, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 341, 8, 3, 1, 3, 1, 3, 3, 3, 345, 8, 3, 1, 3, 5, 3, 348, 8, 3, 10, 3, 12, 3, 351, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 356, 8, 3, 1, 3, 5, 3, 359, 8, 3, 10, 3, 12, 3, 362, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 367, 8, 3, 1, 3, 5, 3, 370, 8, 3, 10, 3, 12, 3, 373, 9, 3, 1, 3, 1, 3, 1, 3, 5, 3, 378, 8, 3, 10, 3, 12, 3, 381, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 386, 8, 3, 1, 3, 5, 3, 389, 8, 3, 10, 3, 12, 3, 392, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 397, 8, 3, 1, 3, 5, 3, 400, 8, 3, 10, 3, 12, 3, 403, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 408, 8, 3, 1, 3, 5, 3, 411, 8, 3, 10, 3, 12, 3, 414, 9, 3, 3, 3, 416, 8, 3, 1, 4, 1, 4, 1, 4, 5, 4, 421, 8, 4, 10, 4, 12, 4, 424, 9, 4, 1, 4, 1, 4, 3, 4, 428, 8, 4, 1, 5, 1, 5, 1, 5, 3, 5, 433, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 3, 7, 443, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 450, 8, 8, 10, 8, 12, 8, 453, 9, 8, 1, 8, 1, 8, 3, 8, 457, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 462, 8, 9, 10, 9, 12, 9, 465, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 480, 8, 13, 1, 14, 1, 14, 3, 14, 484, 8, 14, 1, 15, 1, 15, 3, 15, 488, 8, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 514, 8, 20, 1, 21, 1, 21, 5, 21, 518, 8, 21, 10, 21, 12, 21, 521, 9, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 535, 8, 22, 1, 23, 1, 23, 3, 23, 539, 8, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 0, 0, 26, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 0, 5, 2, 0, 32, 32, 175, 175, 13, 0, 12, 12, 19, 21, 32, 32, 38, 39, 46, 46, 62, 62, 80, 80, 86, 86, 149, 149, 158, 158, 160, 163, 182, 182, 184, 185, 2, 0, 102, 102, 147, 147, 37, 0, 1, 1, 3, 11, 13, 18, 22, 22, 24, 25, 27, 28, 30, 30, 33, 36, 40, 45, 47, 59, 63, 65, 67, 67, 70, 79, 81, 81, 83, 83, 85, 85, 87, 91, 95, 95, 98, 101, 104, 104, 106, 111, 113, 113, 115, 119, 121, 125, 129, 137, 139, 140, 143, 147, 150, 150, 153, 153, 156, 157, 159, 159, 164, 166, 168, 169, 173, 178, 181, 181, 186, 190, 192, 193, 36, 0, 2, 2, 12, 12, 19, 21, 23, 23, 26, 26, 29, 29, 31, 32, 37, 39, 46, 46, 60, 62, 66, 66, 68, 69, 80, 80, 82, 82, 84, 84, 86, 86, 92, 94, 96, 97, 102, 103, 105, 105, 112, 112, 114, 114, 120, 120, 126, 128, 138, 138, 141, 142, 148, 149, 151, 152, 154, 155, 158, 158, 160, 163, 167, 167, 170, 172, 179, 180, 182, 185, 191, 191, 634, 0, 52, 1, 0, 0, 0, 2, 60, 1, 0, 0, 0, 4, 62, 1, 0, 0, 0, 6, 415, 1, 0, 0, 0, 8, 417, 1, 0, 0, 0, 10, 429, 1, 0, 0, 0, 12, 434, 1, 0, 0, 0, 14, 439, 1, 0, 0, 0, 16, 456, 1, 0, 0, 0, 18, 458, 1, 0, 0, 0, 20, 466, 1, 0, 0, 0, 22, 471, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 483, 1, 0, 0, 0, 30, 487, 1, 0, 0, 0, 32, 489, 1, 0, 0, 0, 34, 492, 1, 0, 0, 0, 36, 495, 1, 0, 0, 0, 38, 499, 1, 0, 0, 0, 40, 513, 1, 0, 0, 0, 42, 515, 1, 0, 0, 0, 44, 534, 1, 0, 0, 0, 46, 538, 1, 0, 0, 0, 48, 540, 1, 0, 0, 0, 50, 542, 1, 0, 0, 0, 52, 54, 3, 2, 1, 0, 53, 55, 5, 194, 0, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 5, 0, 0, 1, 57, 1, 1, 0, 0, 0, 58, 61, 3, 4, 2, 0, 59, 61, 3, 6, 3, 0, 60, 58, 1, 0, 0, 0, 60, 59, 1, 0, 0, 0, 61, 3, 1, 0, 0, 0, 62, 63, 5, 33, 0, 0, 63, 65, 5, 156, 0, 0, 64, 66, 3, 36, 18, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 22, 11, 0, 68, 69, 5, 199, 0, 0, 69, 70, 3, 8, 4, 0, 70, 72, 5, 200, 0, 0, 71, 73, 3, 42, 21, 0, 72, 71, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 5, 1, 0, 0, 0, 74, 75, 5, 178, 0, 0, 75, 416, 3, 24, 12, 0, 76, 77, 5, 33, 0, 0, 77, 79, 5, 95, 0, 0, 78, 80, 3, 36, 18, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 3, 24, 12, 0, 82, 86, 5, 189, 0, 0, 83, 85, 3, 44, 22, 0, 84, 83, 1, 0, 0, 0, 85, 88, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 416, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 89, 90, 5, 5, 0, 0, 90, 91, 5, 95, 0, 0, 91, 92, 3, 24, 12, 0, 92, 96, 5, 189, 0, 0, 93, 95, 3, 44, 22, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 416, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 47, 0, 0, 100, 102, 5, 95, 0, 0, 101, 103, 3, 34, 17, 0, 102, 101, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 416, 3, 24, 12, 0, 105, 106, 5, 5, 0, 0, 106, 107, 5, 156, 0, 0, 107, 111, 3, 22, 11, 0, 108, 110, 3, 44, 22, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 416, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 47, 0, 0, 115, 117, 5, 156, 0, 0, 116, 118, 3, 34, 17, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 416, 3, 22, 11, 0, 120, 122, 5, 169, 0, 0, 121, 123, 5, 156, 0, 0, 122, 121, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 416, 3, 22, 11, 0, 125, 129, 5, 146, 0, 0, 126, 128, 3, 44, 22, 0, 127, 126, 1, 0, 0, 0, 128, 131, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 416, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 132, 133, 5, 85, 0, 0, 133, 137, 5, 89, 0, 0, 134, 136, 3, 44, 22, 0, 135, 134, 1, 0, 0, 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 416, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 177, 0, 0, 141, 145, 3, 22, 11, 0, 142, 144, 3, 44, 22, 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 416, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 148, 152, 5, 42, 0, 0, 149, 151, 3, 44, 22, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 416, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 157, 5, 17, 0, 0, 156, 158, 7, 0, 0, 0, 157, 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 167, 5, 16, 0, 0, 160, 162, 3, 44, 22, 0, 161, 160, 1, 0, 0, 0, 162, 165, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 166, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 166, 168, 5, 194, 0, 0, 167, 163, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 5, 8, 0, 0, 172, 173, 5, 16, 0, 0, 173, 416, 5, 194, 0, 0, 174, 176, 5, 33, 0, 0, 175, 177, 5, 37, 0, 0, 176, 175, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 182, 5, 79, 0, 0, 179, 181, 3, 44, 22, 0, 180, 179, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 416, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 185, 186, 5, 47, 0, 0, 186, 188, 5, 79, 0, 0, 187, 189, 3, 34, 17, 0, 188, 187, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 193, 1, 0, 0, 0, 190, 192, 3, 44, 22, 0, 191, 190, 1, 0, 0, 0, 192, 195, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 416, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 197, 5, 33, 0, 0, 197, 198, 5, 192, 0, 0, 198, 200, 5, 193, 0, 0, 199, 201, 3, 36, 18, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 205, 1, 0, 0, 0, 202, 204, 3, 44, 22, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 416, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 5, 0, 0, 209, 210, 5, 192, 0, 0, 210, 214, 5, 193, 0, 0, 211, 213, 3, 44, 22, 0, 212, 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 416, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 47, 0, 0, 218, 219, 5, 192, 0, 0, 219, 221, 5, 193, 0, 0, 220, 222, 3, 34, 17, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 226, 1, 0, 0, 0, 223, 225, 3, 44, 22, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 416, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 230, 5, 33, 0, 0, 230, 232, 5, 141, 0, 0, 231, 233, 3, 36, 18, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 237, 1, 0, 0, 0, 234, 236, 3, 44, 22, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 416, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 5, 0, 0, 241, 245, 5, 141, 0, 0, 242, 244, 3, 44, 22, 0, 243, 242, 1, 0, 0, 0, 244, 247, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 416, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 248, 249, 5, 47, 0, 0, 249, 253, 5, 141, 0, 0, 250, 252, 3, 44, 22, 0, 251, 250, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 416, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 260, 5, 70, 0, 0, 257, 259, 3, 44, 22, 0, 258, 257, 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 416, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 267, 5, 139, 0, 0, 264, 266, 3, 44, 22, 0, 265, 264, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 416, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 274, 5, 102, 0, 0, 271, 273, 3, 44, 22, 0, 272, 271, 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 416, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, 5, 33, 0, 0, 278, 282, 5, 179, 0, 0, 279, 281, 3, 44, 22, 0, 280, 279, 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 416, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 5, 5, 0, 0, 286, 290, 5, 179, 0, 0, 287, 289, 3, 44, 22, 0, 288, 287, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 416, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 293, 294, 5, 47, 0, 0, 294, 298, 5, 179, 0, 0, 295, 297, 3, 44, 22, 0, 296, 295, 1, 0, 0, 0, 297, 300, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 416, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 304, 5, 33, 0, 0, 302, 303, 5, 121, 0, 0, 303, 305, 5, 136, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 5, 68, 0, 0, 307, 309, 3, 36, 18, 0, 308, 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 313, 1, 0, 0, 0, 310, 312, 3, 44, 22, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 10, 0, 0, 317, 321, 5, 195, 0, 0, 318, 320, 3, 44, 22, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 194, 0, 0, 325, 416, 5, 195, 0, 0, 326, 327, 5, 47, 0, 0, 327, 329, 5, 68, 0, 0, 328, 330, 3, 34, 17, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, 333, 3, 44, 22, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 416, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 340, 5, 33, 0, 0, 338, 339, 5, 121, 0, 0, 339, 341, 5, 136, 0, 0, 340, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 5, 2, 0, 0, 343, 345, 3, 36, 18, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 349, 1, 0, 0, 0, 346, 348, 3, 44, 22, 0, 347, 346, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 416, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 47, 0, 0, 353, 355, 5, 2, 0, 0, 354, 356, 3, 34, 17, 0, 355, 354, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 360, 1, 0, 0, 0, 357, 359, 3, 44, 22, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 416, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 33, 0, 0, 364, 366, 5, 172, 0, 0, 365, 367, 3, 36, 18, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 371, 1, 0, 0, 0, 368, 370, 3, 44, 22, 0, 369, 368, 1, 0, 0, 0, 370, 373, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 416, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 374, 375, 5, 5, 0, 0, 375, 379, 5, 172, 0, 0, 376, 378, 3, 44, 22, 0, 377, 376, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 416, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 47, 0, 0, 383, 385, 5, 172, 0, 0, 384, 386, 3, 34, 17, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 390, 1, 0, 0, 0, 387, 389, 3, 44, 22, 0, 388, 387, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 416, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 394, 5, 33, 0, 0, 394, 396, 5, 167, 0, 0, 395, 397, 3, 36, 18, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 401, 1, 0, 0, 0, 398, 400, 3, 44, 22, 0, 399, 398, 1, 0, 0, 0, 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 416, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 405, 5, 47, 0, 0, 405, 407, 5, 167, 0, 0, 406, 408, 3, 34, 17, 0, 407, 406, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 412, 1, 0, 0, 0, 409, 411, 3, 44, 22, 0, 410, 409, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 74, 1, 0, 0, 0, 415, 76, 1, 0, 0, 0, 415, 89, 1, 0, 0, 0, 415, 99, 1, 0, 0, 0, 415, 105, 1, 0, 0, 0, 415, 114, 1, 0, 0, 0, 415, 120, 1, 0, 0, 0, 415, 125, 1, 0, 0, 0, 415, 132, 1, 0, 0, 0, 415, 140, 1, 0, 0, 0, 415, 148, 1, 0, 0, 0, 415, 155, 1, 0, 0, 0, 415, 174, 1, 0, 0, 0, 415, 185, 1, 0, 0, 0, 415, 196, 1, 0, 0, 0, 415, 208, 1, 0, 0, 0, 415, 217, 1, 0, 0, 0, 415, 229, 1, 0, 0, 0, 415, 240, 1, 0, 0, 0, 415, 248, 1, 0, 0, 0, 415, 256, 1, 0, 0, 0, 415, 263, 1, 0, 0, 0, 415, 270, 1, 0, 0, 0, 415, 277, 1, 0, 0, 0, 415, 285, 1, 0, 0, 0, 415, 293, 1, 0, 0, 0, 415, 301, 1, 0, 0, 0, 415, 326, 1, 0, 0, 0, 415, 337, 1, 0, 0, 0, 415, 352, 1, 0, 0, 0, 415, 363, 1, 0, 0, 0, 415, 374, 1, 0, 0, 0, 415, 382, 1, 0, 0, 0, 415, 393, 1, 0, 0, 0, 415, 404, 1, 0, 0, 0, 416, 7, 1, 0, 0, 0, 417, 422, 3, 10, 5, 0, 418, 419, 5, 198, 0, 0, 419, 421, 3, 10, 5, 0, 420, 418, 1, 0, 0, 0, 421, 424, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 1, 0, 0, 0, 424, 422, 1, 0, 0, 0, 425, 426, 5, 198, 0, 0, 426, 428, 3, 12, 6, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 9, 1, 0, 0, 0, 429, 430, 3, 20, 10, 0, 430, 432, 3, 30, 15, 0, 431, 433, 3, 32, 16, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 11, 1, 0, 0, 0, 434, 435, 3, 32, 16, 0, 435, 436, 5, 199, 0, 0, 436, 437, 3, 14, 7, 0, 437, 438, 5, 200, 0, 0, 438, 13, 1, 0, 0, 0, 439, 442, 3, 16, 8, 0, 440, 441, 5, 198, 0, 0, 441, 443, 3, 18, 9, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 15, 1, 0, 0, 0, 444, 457, 3, 20, 10, 0, 445, 446, 5, 199, 0, 0, 446, 451, 3, 20, 10, 0, 447, 448, 5, 198, 0, 0, 448, 450, 3, 20, 10, 0, 449, 447, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 455, 5, 200, 0, 0, 455, 457, 1, 0, 0, 0, 456, 444, 1, 0, 0, 0, 456, 445, 1, 0, 0, 0, 457, 17, 1, 0, 0, 0, 458, 463, 3, 20, 10, 0, 459, 460, 5, 198, 0, 0, 460, 462, 3, 20, 10, 0, 461, 459, 1, 0, 0, 0, 462, 465, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 19, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 466, 467, 3, 28, 14, 0, 467, 21, 1, 0, 0, 0, 468, 469, 3, 24, 12, 0, 469, 470, 5, 197, 0, 0, 470, 472, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 3, 28, 14, 0, 474, 23, 1, 0, 0, 0, 475, 476, 3, 26, 13, 0, 476, 25, 1, 0, 0, 0, 477, 480, 5, 204, 0, 0, 478, 480, 3, 28, 14, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 484, 3, 50, 25, 0, 482, 484, 5, 203, 0, 0, 483, 481, 1, 0, 0, 0, 483, 482, 1, 0, 0, 0, 484, 29, 1, 0, 0, 0, 485, 488, 3, 38, 19, 0, 486, 488, 3, 40, 20, 0, 487, 485, 1, 0, 0, 0, 487, 486, 1, 0, 0, 0, 488, 31, 1, 0, 0, 0, 489, 490, 5, 130, 0, 0, 490, 491, 5, 93, 0, 0, 491, 33, 1, 0, 0, 0, 492, 493, 5, 76, 0, 0, 493, 494, 5, 56, 0, 0, 494, 35, 1, 0, 0, 0, 495, 496, 5, 76, 0, 0, 496, 497, 5, 115, 0, 0, 497, 498, 5, 56, 0, 0, 498, 37, 1, 0, 0, 0, 499, 500, 7, 1, 0, 0, 500, 39, 1, 0, 0, 0, 501, 502, 5, 105, 0, 0, 502, 503, 5, 201, 0, 0, 503, 504, 3, 38, 19, 0, 504, 505, 5, 198, 0, 0, 505, 506, 3, 38, 19, 0, 506, 507, 5, 202, 0, 0, 507, 514, 1, 0, 0, 0, 508, 509, 7, 2, 0, 0, 509, 510, 5, 201, 0, 0, 510, 511, 3, 38, 19, 0, 511, 512, 5, 202, 0, 0, 512, 514, 1, 0, 0, 0, 513, 501, 1, 0, 0, 0, 513, 508, 1, 0, 0, 0, 514, 41, 1, 0, 0, 0, 515, 519, 5, 189, 0, 0, 516, 518, 3, 44, 22, 0, 517, 516, 1, 0, 0, 0, 518, 521, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 43, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 522, 535, 3, 46, 23, 0, 523, 535, 5, 195, 0, 0, 524, 535, 5, 196, 0, 0, 525, 535, 5, 197, 0, 0, 526, 535, 5, 198, 0, 0, 527, 535, 5, 199, 0, 0, 528, 535, 5, 200, 0, 0, 529, 535, 5, 201, 0, 0, 530, 535, 5, 202, 0, 0, 531, 535, 5, 203, 0, 0, 532, 535, 5, 204, 0, 0, 533, 535, 5, 208, 0, 0, 534, 522, 1, 0, 0, 0, 534, 523, 1, 0, 0, 0, 534, 524, 1, 0, 0, 0, 534, 525, 1, 0, 0, 0, 534, 526, 1, 0, 0, 0, 534, 527, 1, 0, 0, 0, 534, 528, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, 534, 531, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 533, 1, 0, 0, 0, 535, 45, 1, 0, 0, 0, 536, 539, 3, 48, 24, 0, 537, 539, 3, 50, 25, 0, 538, 536, 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 47, 1, 0, 0, 0, 540, 541, 7, 3, 0, 0, 541, 49, 1, 0, 0, 0, 542, 543, 7, 4, 0, 0, 543, 51, 1, 0, 0, 0, 73, 54, 60, 65, 72, 79, 86, 96, 102, 111, 117, 122, 129, 137, 145, 152, 157, 163, 169, 176, 182, 188, 193, 200, 205, 214, 221, 226, 232, 237, 245, 253, 260, 267, 274, 282, 290, 298, 304, 308, 313, 321, 329, 334, 340, 344, 349, 355, 360, 366, 371, 379, 385, 390, 396, 401, 407, 412, 415, 422, 427, 432, 442, 451, 456, 463, 471, 479, 483, 487, 513, 519, 534, 538] \ No newline at end of file diff --git a/translator/cqlparser/CqlParser.tokens b/translator/cqlparser/CqlParser.tokens index 2bceb29..b7fbb2d 100644 --- a/translator/cqlparser/CqlParser.tokens +++ b/translator/cqlparser/CqlParser.tokens @@ -4,271 +4,407 @@ K_ALL=3 K_ALLOW=4 K_ALTER=5 K_AND=6 -K_APPLY=7 -K_AS=8 -K_ASC=9 -K_ASCII=10 -K_AUTHORIZE=11 -K_BATCH=12 -K_BEGIN=13 -K_BIGINT=14 -K_BLOB=15 -K_BOOLEAN=16 -K_BY=17 -K_CALLED=18 -K_CLUSTERING=19 -K_COLUMNFAMILY=20 -K_COMPACT=21 -K_CONTAINS=22 -K_COUNT=23 -K_COUNTER=24 -K_CREATE=25 -K_CUSTOM=26 -K_DATE=27 -K_DECIMAL=28 -K_DELETE=29 -K_DESC=30 -K_DESCRIBE=31 -K_DISTINCT=32 -K_DOUBLE=33 -K_DROP=34 -K_ENTRIES=35 -K_EXECUTE=36 -K_EXISTS=37 -K_FILTERING=38 -K_FINALFUNC=39 -K_FLOAT=40 -K_FROM=41 -K_FROZEN=42 -K_FULL=43 -K_FUNCTION=44 -K_FUNCTIONS=45 -K_GRANT=46 -K_IF=47 -K_IN=48 -K_INDEX=49 -K_INET=50 -K_INFINITY=51 -K_INITCOND=52 -K_INPUT=53 -K_INSERT=54 -K_INT=55 -K_INTO=56 -K_JSON=57 -K_KEY=58 -K_KEYS=59 -K_KEYSPACE=60 -K_KEYSPACES=61 -K_LANGUAGE=62 -K_LIMIT=63 -K_LIST=64 -K_LOGIN=65 -K_MAP=66 -K_MODIFY=67 -K_NAN=68 -K_NOLOGIN=69 -K_NORECURSIVE=70 -K_NOSUPERUSER=71 -K_NOT=72 -K_NULL=73 -K_OF=74 -K_ON=75 -K_OPTIONS=76 -K_OR=77 -K_ORDER=78 -K_PASSWORD=79 -K_PERMISSION=80 -K_PERMISSIONS=81 -K_PRIMARY=82 -K_RENAME=83 -K_REPLACE=84 -K_RETURNS=85 -K_REVOKE=86 -K_ROLE=87 -K_ROLES=88 -K_SCHEMA=89 -K_SELECT=90 -K_SET=91 -K_SFUNC=92 -K_SMALLINT=93 -K_STATIC=94 -K_STORAGE=95 -K_STYPE=96 -K_SUPERUSER=97 -K_TABLE=98 -K_TEXT=99 -K_TIME=100 -K_TIMESTAMP=101 -K_TIMEUUID=102 -K_TINYINT=103 -K_TO=104 -K_TOKEN=105 -K_TRIGGER=106 -K_TRUNCATE=107 -K_TTL=108 -K_TUPLE=109 -K_TYPE=110 -K_UNLOGGED=111 -K_UPDATE=112 -K_USE=113 -K_USER=114 -K_USERS=115 -K_USING=116 -K_UUID=117 -K_VALUES=118 -K_VARCHAR=119 -K_VARINT=120 -K_WHERE=121 -K_WITH=122 -K_WRITETIME=123 -K_MATERIALIZED=124 -K_VIEW=125 -SEMICOLON=126 -SQUOTE=127 -DQUOTE=128 -DOT=129 -COMMA=130 -L_PAREN=131 -R_PAREN=132 -L_ANGLE_BRACKET=133 -R_ANGLE_BRACKET=134 -IDENTIFIER=135 -IDENTIFIER_WITH_HYPHEN=136 -WS=137 -COMMENT=138 -MULTILINE_COMMENT=139 -UNKNOWN=140 +K_ANY=7 +K_APPLY=8 +K_ARRAY=9 +K_AS=10 +K_ASC=11 +K_ASCII=12 +K_ASSERT_ROWS_MODIFIED=13 +K_AT=14 +K_AUTHORIZE=15 +K_BATCH=16 +K_BEGIN=17 +K_BETWEEN=18 +K_BIGINT=19 +K_BLOB=20 +K_BOOLEAN=21 +K_BY=22 +K_CALLED=23 +K_CASE=24 +K_CAST=25 +K_CLUSTERING=26 +K_COLLATE=27 +K_COLUMNFAMILY=28 +K_COMPACT=29 +K_CONTAINS=30 +K_COUNT=31 +K_COUNTER=32 +K_CREATE=33 +K_CROSS=34 +K_CUBE=35 +K_CURRENT=36 +K_CUSTOM=37 +K_DATE=38 +K_DECIMAL=39 +K_DEFAULT=40 +K_DEFINE=41 +K_DELETE=42 +K_DESC=43 +K_DESCRIBE=44 +K_DISTINCT=45 +K_DOUBLE=46 +K_DROP=47 +K_ELSE=48 +K_END=49 +K_ENTRIES=50 +K_ENUM=51 +K_ESCAPE=52 +K_EXCEPT=53 +K_EXCLUDE=54 +K_EXECUTE=55 +K_EXISTS=56 +K_EXTRACT=57 +K_FALSE=58 +K_FETCH=59 +K_FILTERING=60 +K_FINALFUNC=61 +K_FLOAT=62 +K_FOLLOWING=63 +K_FOR=64 +K_FROM=65 +K_FROZEN=66 +K_FULL=67 +K_FUNCTION=68 +K_FUNCTIONS=69 +K_GRANT=70 +K_GROUP=71 +K_GROUPING=72 +K_GROUPS=73 +K_HASH=74 +K_HAVING=75 +K_IF=76 +K_IGNORE=77 +K_IN=78 +K_INDEX=79 +K_INET=80 +K_INFINITY=81 +K_INITCOND=82 +K_INNER=83 +K_INPUT=84 +K_INSERT=85 +K_INT=86 +K_INTERSECT=87 +K_INTERVAL=88 +K_INTO=89 +K_IS=90 +K_JOIN=91 +K_JSON=92 +K_KEY=93 +K_KEYS=94 +K_KEYSPACE=95 +K_KEYSPACES=96 +K_LANGUAGE=97 +K_LATERAL=98 +K_LEFT=99 +K_LIKE=100 +K_LIMIT=101 +K_LIST=102 +K_LOGIN=103 +K_LOOKUP=104 +K_MAP=105 +K_MERGE=106 +K_MODIFY=107 +K_NAN=108 +K_NATURAL=109 +K_NEW=110 +K_NO=111 +K_NOLOGIN=112 +K_NORECURSIVE=113 +K_NOSUPERUSER=114 +K_NOT=115 +K_NULL=116 +K_NULLS=117 +K_OF=118 +K_ON=119 +K_OPTIONS=120 +K_OR=121 +K_ORDER=122 +K_OUTER=123 +K_OVER=124 +K_PARTITION=125 +K_PASSWORD=126 +K_PERMISSION=127 +K_PERMISSIONS=128 +K_PRECEDING=129 +K_PRIMARY=130 +K_PROTO=131 +K_QUALIFY=132 +K_RANGE=133 +K_RECURSIVE=134 +K_RENAME=135 +K_REPLACE=136 +K_RESPECT=137 +K_RETURNS=138 +K_REVOKE=139 +K_RIGHT=140 +K_ROLE=141 +K_ROLES=142 +K_ROLLUP=143 +K_ROWS=144 +K_SCHEMA=145 +K_SELECT=146 +K_SET=147 +K_SFUNC=148 +K_SMALLINT=149 +K_SOME=150 +K_STATIC=151 +K_STORAGE=152 +K_STRUCT=153 +K_STYPE=154 +K_SUPERUSER=155 +K_TABLE=156 +K_TABLESAMPLE=157 +K_TEXT=158 +K_THEN=159 +K_TIME=160 +K_TIMESTAMP=161 +K_TIMEUUID=162 +K_TINYINT=163 +K_TO=164 +K_TOKEN=165 +K_TREAT=166 +K_TRIGGER=167 +K_TRUE=168 +K_TRUNCATE=169 +K_TTL=170 +K_TUPLE=171 +K_TYPE=172 +K_UNBOUNDED=173 +K_UNION=174 +K_UNLOGGED=175 +K_UNNEST=176 +K_UPDATE=177 +K_USE=178 +K_USER=179 +K_USERS=180 +K_USING=181 +K_UUID=182 +K_VALUES=183 +K_VARCHAR=184 +K_VARINT=185 +K_WHEN=186 +K_WHERE=187 +K_WINDOW=188 +K_WITH=189 +K_WITHIN=190 +K_WRITETIME=191 +K_MATERIALIZED=192 +K_VIEW=193 +SEMICOLON=194 +SQUOTE=195 +DQUOTE=196 +DOT=197 +COMMA=198 +L_PAREN=199 +R_PAREN=200 +L_ANGLE_BRACKET=201 +R_ANGLE_BRACKET=202 +IDENTIFIER=203 +IDENTIFIER_WITH_HYPHEN=204 +WS=205 +COMMENT=206 +MULTILINE_COMMENT=207 +UNKNOWN=208 'ADD'=1 'AGGREGATE'=2 'ALL'=3 'ALLOW'=4 'ALTER'=5 'AND'=6 -'APPLY'=7 -'AS'=8 -'ASC'=9 -'ASCII'=10 -'AUTHORIZE'=11 -'BATCH'=12 -'BEGIN'=13 -'BIGINT'=14 -'BLOB'=15 -'BOOLEAN'=16 -'BY'=17 -'CALLED'=18 -'CLUSTERING'=19 -'COLUMNFAMILY'=20 -'COMPACT'=21 -'CONTAINS'=22 -'COUNT'=23 -'COUNTER'=24 -'CREATE'=25 -'CUSTOM'=26 -'DATE'=27 -'DECIMAL'=28 -'DELETE'=29 -'DESC'=30 -'DESCRIBE'=31 -'DISTINCT'=32 -'DOUBLE'=33 -'DROP'=34 -'ENTRIES'=35 -'EXECUTE'=36 -'EXISTS'=37 -'FILTERING'=38 -'FINALFUNC'=39 -'FLOAT'=40 -'FROM'=41 -'FROZEN'=42 -'FULL'=43 -'FUNCTION'=44 -'FUNCTIONS'=45 -'GRANT'=46 -'IF'=47 -'IN'=48 -'INDEX'=49 -'INET'=50 -'INFINITY'=51 -'INITCOND'=52 -'INPUT'=53 -'INSERT'=54 -'INT'=55 -'INTO'=56 -'JSON'=57 -'KEY'=58 -'KEYS'=59 -'KEYSPACE'=60 -'KEYSPACES'=61 -'LANGUAGE'=62 -'LIMIT'=63 -'LIST'=64 -'LOGIN'=65 -'MAP'=66 -'MODIFY'=67 -'NAN'=68 -'NOLOGIN'=69 -'NORECURSIVE'=70 -'NOSUPERUSER'=71 -'NOT'=72 -'NULL'=73 -'OF'=74 -'ON'=75 -'OPTIONS'=76 -'OR'=77 -'ORDER'=78 -'PASSWORD'=79 -'PERMISSION'=80 -'PERMISSIONS'=81 -'PRIMARY'=82 -'RENAME'=83 -'REPLACE'=84 -'RETURNS'=85 -'REVOKE'=86 -'ROLE'=87 -'ROLES'=88 -'SCHEMA'=89 -'SELECT'=90 -'SET'=91 -'SFUNC'=92 -'SMALLINT'=93 -'STATIC'=94 -'STORAGE'=95 -'STYPE'=96 -'SUPERUSER'=97 -'TABLE'=98 -'TEXT'=99 -'TIME'=100 -'TIMESTAMP'=101 -'TIMEUUID'=102 -'TINYINT'=103 -'TO'=104 -'TOKEN'=105 -'TRIGGER'=106 -'TRUNCATE'=107 -'TTL'=108 -'TUPLE'=109 -'TYPE'=110 -'UNLOGGED'=111 -'UPDATE'=112 -'USE'=113 -'USER'=114 -'USERS'=115 -'USING'=116 -'UUID'=117 -'VALUES'=118 -'VARCHAR'=119 -'VARINT'=120 -'WHERE'=121 -'WITH'=122 -'WRITETIME'=123 -'MATERIALIZED'=124 -'VIEW'=125 -';'=126 -'\''=127 -'"'=128 -'.'=129 -','=130 -'('=131 -')'=132 -'<'=133 -'>'=134 +'ANY'=7 +'APPLY'=8 +'ARRAY'=9 +'AS'=10 +'ASC'=11 +'ASCII'=12 +'ASSERT_ROWS_MODIFIED'=13 +'AT'=14 +'AUTHORIZE'=15 +'BATCH'=16 +'BEGIN'=17 +'BETWEEN'=18 +'BIGINT'=19 +'BLOB'=20 +'BOOLEAN'=21 +'BY'=22 +'CALLED'=23 +'CASE'=24 +'CAST'=25 +'CLUSTERING'=26 +'COLLATE'=27 +'COLUMNFAMILY'=28 +'COMPACT'=29 +'CONTAINS'=30 +'COUNT'=31 +'COUNTER'=32 +'CREATE'=33 +'CROSS'=34 +'CUBE'=35 +'CURRENT'=36 +'CUSTOM'=37 +'DATE'=38 +'DECIMAL'=39 +'DEFAULT'=40 +'DEFINE'=41 +'DELETE'=42 +'DESC'=43 +'DESCRIBE'=44 +'DISTINCT'=45 +'DOUBLE'=46 +'DROP'=47 +'ELSE'=48 +'END'=49 +'ENTRIES'=50 +'ENUM'=51 +'ESCAPE'=52 +'EXCEPT'=53 +'EXCLUDE'=54 +'EXECUTE'=55 +'EXISTS'=56 +'EXTRACT'=57 +'FALSE'=58 +'FETCH'=59 +'FILTERING'=60 +'FINALFUNC'=61 +'FLOAT'=62 +'FOLLOWING'=63 +'FOR'=64 +'FROM'=65 +'FROZEN'=66 +'FULL'=67 +'FUNCTION'=68 +'FUNCTIONS'=69 +'GRANT'=70 +'GROUP'=71 +'GROUPING'=72 +'GROUPS'=73 +'HASH'=74 +'HAVING'=75 +'IF'=76 +'IGNORE'=77 +'IN'=78 +'INDEX'=79 +'INET'=80 +'INFINITY'=81 +'INITCOND'=82 +'INNER'=83 +'INPUT'=84 +'INSERT'=85 +'INT'=86 +'INTERSECT'=87 +'INTERVAL'=88 +'INTO'=89 +'IS'=90 +'JOIN'=91 +'JSON'=92 +'KEY'=93 +'KEYS'=94 +'KEYSPACE'=95 +'KEYSPACES'=96 +'LANGUAGE'=97 +'LATERAL'=98 +'LEFT'=99 +'LIKE'=100 +'LIMIT'=101 +'LIST'=102 +'LOGIN'=103 +'LOOKUP'=104 +'MAP'=105 +'MERGE'=106 +'MODIFY'=107 +'NAN'=108 +'NATURAL'=109 +'NEW'=110 +'NO'=111 +'NOLOGIN'=112 +'NORECURSIVE'=113 +'NOSUPERUSER'=114 +'NOT'=115 +'NULL'=116 +'NULLS'=117 +'OF'=118 +'ON'=119 +'OPTIONS'=120 +'OR'=121 +'ORDER'=122 +'OUTER'=123 +'OVER'=124 +'PARTITION'=125 +'PASSWORD'=126 +'PERMISSION'=127 +'PERMISSIONS'=128 +'PRECEDING'=129 +'PRIMARY'=130 +'PROTO'=131 +'QUALIFY'=132 +'RANGE'=133 +'RECURSIVE'=134 +'RENAME'=135 +'REPLACE'=136 +'RESPECT'=137 +'RETURNS'=138 +'REVOKE'=139 +'RIGHT'=140 +'ROLE'=141 +'ROLES'=142 +'ROLLUP'=143 +'ROWS'=144 +'SCHEMA'=145 +'SELECT'=146 +'SET'=147 +'SFUNC'=148 +'SMALLINT'=149 +'SOME'=150 +'STATIC'=151 +'STORAGE'=152 +'STRUCT'=153 +'STYPE'=154 +'SUPERUSER'=155 +'TABLE'=156 +'TABLESAMPLE'=157 +'TEXT'=158 +'THEN'=159 +'TIME'=160 +'TIMESTAMP'=161 +'TIMEUUID'=162 +'TINYINT'=163 +'TO'=164 +'TOKEN'=165 +'TREAT'=166 +'TRIGGER'=167 +'TRUE'=168 +'TRUNCATE'=169 +'TTL'=170 +'TUPLE'=171 +'TYPE'=172 +'UNBOUNDED'=173 +'UNION'=174 +'UNLOGGED'=175 +'UNNEST'=176 +'UPDATE'=177 +'USE'=178 +'USER'=179 +'USERS'=180 +'USING'=181 +'UUID'=182 +'VALUES'=183 +'VARCHAR'=184 +'VARINT'=185 +'WHEN'=186 +'WHERE'=187 +'WINDOW'=188 +'WITH'=189 +'WITHIN'=190 +'WRITETIME'=191 +'MATERIALIZED'=192 +'VIEW'=193 +';'=194 +'\''=195 +'"'=196 +'.'=197 +','=198 +'('=199 +')'=200 +'<'=201 +'>'=202 diff --git a/translator/cqlparser/cql_lexer.go b/translator/cqlparser/cql_lexer.go index 42a3ce7..ec8aea0 100644 --- a/translator/cqlparser/cql_lexer.go +++ b/translator/cqlparser/cql_lexer.go @@ -58,49 +58,71 @@ func cqllexerLexerInit() { } staticData.LiteralNames = []string{ "", "'ADD'", "'AGGREGATE'", "'ALL'", "'ALLOW'", "'ALTER'", "'AND'", - "'APPLY'", "'AS'", "'ASC'", "'ASCII'", "'AUTHORIZE'", "'BATCH'", "'BEGIN'", - "'BIGINT'", "'BLOB'", "'BOOLEAN'", "'BY'", "'CALLED'", "'CLUSTERING'", - "'COLUMNFAMILY'", "'COMPACT'", "'CONTAINS'", "'COUNT'", "'COUNTER'", - "'CREATE'", "'CUSTOM'", "'DATE'", "'DECIMAL'", "'DELETE'", "'DESC'", - "'DESCRIBE'", "'DISTINCT'", "'DOUBLE'", "'DROP'", "'ENTRIES'", "'EXECUTE'", - "'EXISTS'", "'FILTERING'", "'FINALFUNC'", "'FLOAT'", "'FROM'", "'FROZEN'", - "'FULL'", "'FUNCTION'", "'FUNCTIONS'", "'GRANT'", "'IF'", "'IN'", "'INDEX'", - "'INET'", "'INFINITY'", "'INITCOND'", "'INPUT'", "'INSERT'", "'INT'", - "'INTO'", "'JSON'", "'KEY'", "'KEYS'", "'KEYSPACE'", "'KEYSPACES'", - "'LANGUAGE'", "'LIMIT'", "'LIST'", "'LOGIN'", "'MAP'", "'MODIFY'", "'NAN'", - "'NOLOGIN'", "'NORECURSIVE'", "'NOSUPERUSER'", "'NOT'", "'NULL'", "'OF'", - "'ON'", "'OPTIONS'", "'OR'", "'ORDER'", "'PASSWORD'", "'PERMISSION'", - "'PERMISSIONS'", "'PRIMARY'", "'RENAME'", "'REPLACE'", "'RETURNS'", - "'REVOKE'", "'ROLE'", "'ROLES'", "'SCHEMA'", "'SELECT'", "'SET'", "'SFUNC'", - "'SMALLINT'", "'STATIC'", "'STORAGE'", "'STYPE'", "'SUPERUSER'", "'TABLE'", - "'TEXT'", "'TIME'", "'TIMESTAMP'", "'TIMEUUID'", "'TINYINT'", "'TO'", - "'TOKEN'", "'TRIGGER'", "'TRUNCATE'", "'TTL'", "'TUPLE'", "'TYPE'", - "'UNLOGGED'", "'UPDATE'", "'USE'", "'USER'", "'USERS'", "'USING'", "'UUID'", - "'VALUES'", "'VARCHAR'", "'VARINT'", "'WHERE'", "'WITH'", "'WRITETIME'", + "'ANY'", "'APPLY'", "'ARRAY'", "'AS'", "'ASC'", "'ASCII'", "'ASSERT_ROWS_MODIFIED'", + "'AT'", "'AUTHORIZE'", "'BATCH'", "'BEGIN'", "'BETWEEN'", "'BIGINT'", + "'BLOB'", "'BOOLEAN'", "'BY'", "'CALLED'", "'CASE'", "'CAST'", "'CLUSTERING'", + "'COLLATE'", "'COLUMNFAMILY'", "'COMPACT'", "'CONTAINS'", "'COUNT'", + "'COUNTER'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CUSTOM'", + "'DATE'", "'DECIMAL'", "'DEFAULT'", "'DEFINE'", "'DELETE'", "'DESC'", + "'DESCRIBE'", "'DISTINCT'", "'DOUBLE'", "'DROP'", "'ELSE'", "'END'", + "'ENTRIES'", "'ENUM'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", + "'EXISTS'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTERING'", "'FINALFUNC'", + "'FLOAT'", "'FOLLOWING'", "'FOR'", "'FROM'", "'FROZEN'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRANT'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", + "'HAVING'", "'IF'", "'IGNORE'", "'IN'", "'INDEX'", "'INET'", "'INFINITY'", + "'INITCOND'", "'INNER'", "'INPUT'", "'INSERT'", "'INT'", "'INTERSECT'", + "'INTERVAL'", "'INTO'", "'IS'", "'JOIN'", "'JSON'", "'KEY'", "'KEYS'", + "'KEYSPACE'", "'KEYSPACES'", "'LANGUAGE'", "'LATERAL'", "'LEFT'", "'LIKE'", + "'LIMIT'", "'LIST'", "'LOGIN'", "'LOOKUP'", "'MAP'", "'MERGE'", "'MODIFY'", + "'NAN'", "'NATURAL'", "'NEW'", "'NO'", "'NOLOGIN'", "'NORECURSIVE'", + "'NOSUPERUSER'", "'NOT'", "'NULL'", "'NULLS'", "'OF'", "'ON'", "'OPTIONS'", + "'OR'", "'ORDER'", "'OUTER'", "'OVER'", "'PARTITION'", "'PASSWORD'", + "'PERMISSION'", "'PERMISSIONS'", "'PRECEDING'", "'PRIMARY'", "'PROTO'", + "'QUALIFY'", "'RANGE'", "'RECURSIVE'", "'RENAME'", "'REPLACE'", "'RESPECT'", + "'RETURNS'", "'REVOKE'", "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLUP'", + "'ROWS'", "'SCHEMA'", "'SELECT'", "'SET'", "'SFUNC'", "'SMALLINT'", + "'SOME'", "'STATIC'", "'STORAGE'", "'STRUCT'", "'STYPE'", "'SUPERUSER'", + "'TABLE'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", "'TIME'", "'TIMESTAMP'", + "'TIMEUUID'", "'TINYINT'", "'TO'", "'TOKEN'", "'TREAT'", "'TRIGGER'", + "'TRUE'", "'TRUNCATE'", "'TTL'", "'TUPLE'", "'TYPE'", "'UNBOUNDED'", + "'UNION'", "'UNLOGGED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", + "'USERS'", "'USING'", "'UUID'", "'VALUES'", "'VARCHAR'", "'VARINT'", + "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'WITHIN'", "'WRITETIME'", "'MATERIALIZED'", "'VIEW'", "';'", "'''", "'\"'", "'.'", "','", "'('", "')'", "'<'", "'>'", } staticData.SymbolicNames = []string{ "", "K_ADD", "K_AGGREGATE", "K_ALL", "K_ALLOW", "K_ALTER", "K_AND", - "K_APPLY", "K_AS", "K_ASC", "K_ASCII", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", - "K_BIGINT", "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CLUSTERING", - "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", "K_COUNTER", - "K_CREATE", "K_CUSTOM", "K_DATE", "K_DECIMAL", "K_DELETE", "K_DESC", - "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ENTRIES", "K_EXECUTE", - "K_EXISTS", "K_FILTERING", "K_FINALFUNC", "K_FLOAT", "K_FROM", "K_FROZEN", - "K_FULL", "K_FUNCTION", "K_FUNCTIONS", "K_GRANT", "K_IF", "K_IN", "K_INDEX", - "K_INET", "K_INFINITY", "K_INITCOND", "K_INPUT", "K_INSERT", "K_INT", - "K_INTO", "K_JSON", "K_KEY", "K_KEYS", "K_KEYSPACE", "K_KEYSPACES", - "K_LANGUAGE", "K_LIMIT", "K_LIST", "K_LOGIN", "K_MAP", "K_MODIFY", "K_NAN", - "K_NOLOGIN", "K_NORECURSIVE", "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_OF", - "K_ON", "K_OPTIONS", "K_OR", "K_ORDER", "K_PASSWORD", "K_PERMISSION", - "K_PERMISSIONS", "K_PRIMARY", "K_RENAME", "K_REPLACE", "K_RETURNS", - "K_REVOKE", "K_ROLE", "K_ROLES", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", - "K_SMALLINT", "K_STATIC", "K_STORAGE", "K_STYPE", "K_SUPERUSER", "K_TABLE", - "K_TEXT", "K_TIME", "K_TIMESTAMP", "K_TIMEUUID", "K_TINYINT", "K_TO", - "K_TOKEN", "K_TRIGGER", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", - "K_UNLOGGED", "K_UPDATE", "K_USE", "K_USER", "K_USERS", "K_USING", "K_UUID", - "K_VALUES", "K_VARCHAR", "K_VARINT", "K_WHERE", "K_WITH", "K_WRITETIME", + "K_ANY", "K_APPLY", "K_ARRAY", "K_AS", "K_ASC", "K_ASCII", "K_ASSERT_ROWS_MODIFIED", + "K_AT", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", "K_BETWEEN", "K_BIGINT", + "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CASE", "K_CAST", "K_CLUSTERING", + "K_COLLATE", "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", + "K_COUNTER", "K_CREATE", "K_CROSS", "K_CUBE", "K_CURRENT", "K_CUSTOM", + "K_DATE", "K_DECIMAL", "K_DEFAULT", "K_DEFINE", "K_DELETE", "K_DESC", + "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ELSE", "K_END", + "K_ENTRIES", "K_ENUM", "K_ESCAPE", "K_EXCEPT", "K_EXCLUDE", "K_EXECUTE", + "K_EXISTS", "K_EXTRACT", "K_FALSE", "K_FETCH", "K_FILTERING", "K_FINALFUNC", + "K_FLOAT", "K_FOLLOWING", "K_FOR", "K_FROM", "K_FROZEN", "K_FULL", "K_FUNCTION", + "K_FUNCTIONS", "K_GRANT", "K_GROUP", "K_GROUPING", "K_GROUPS", "K_HASH", + "K_HAVING", "K_IF", "K_IGNORE", "K_IN", "K_INDEX", "K_INET", "K_INFINITY", + "K_INITCOND", "K_INNER", "K_INPUT", "K_INSERT", "K_INT", "K_INTERSECT", + "K_INTERVAL", "K_INTO", "K_IS", "K_JOIN", "K_JSON", "K_KEY", "K_KEYS", + "K_KEYSPACE", "K_KEYSPACES", "K_LANGUAGE", "K_LATERAL", "K_LEFT", "K_LIKE", + "K_LIMIT", "K_LIST", "K_LOGIN", "K_LOOKUP", "K_MAP", "K_MERGE", "K_MODIFY", + "K_NAN", "K_NATURAL", "K_NEW", "K_NO", "K_NOLOGIN", "K_NORECURSIVE", + "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_NULLS", "K_OF", "K_ON", "K_OPTIONS", + "K_OR", "K_ORDER", "K_OUTER", "K_OVER", "K_PARTITION", "K_PASSWORD", + "K_PERMISSION", "K_PERMISSIONS", "K_PRECEDING", "K_PRIMARY", "K_PROTO", + "K_QUALIFY", "K_RANGE", "K_RECURSIVE", "K_RENAME", "K_REPLACE", "K_RESPECT", + "K_RETURNS", "K_REVOKE", "K_RIGHT", "K_ROLE", "K_ROLES", "K_ROLLUP", + "K_ROWS", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", "K_SMALLINT", + "K_SOME", "K_STATIC", "K_STORAGE", "K_STRUCT", "K_STYPE", "K_SUPERUSER", + "K_TABLE", "K_TABLESAMPLE", "K_TEXT", "K_THEN", "K_TIME", "K_TIMESTAMP", + "K_TIMEUUID", "K_TINYINT", "K_TO", "K_TOKEN", "K_TREAT", "K_TRIGGER", + "K_TRUE", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", "K_UNBOUNDED", + "K_UNION", "K_UNLOGGED", "K_UNNEST", "K_UPDATE", "K_USE", "K_USER", + "K_USERS", "K_USING", "K_UUID", "K_VALUES", "K_VARCHAR", "K_VARINT", + "K_WHEN", "K_WHERE", "K_WINDOW", "K_WITH", "K_WITHIN", "K_WRITETIME", "K_MATERIALIZED", "K_VIEW", "SEMICOLON", "SQUOTE", "DQUOTE", "DOT", "COMMA", "L_PAREN", "R_PAREN", "L_ANGLE_BRACKET", "R_ANGLE_BRACKET", "IDENTIFIER", "IDENTIFIER_WITH_HYPHEN", "WS", "COMMENT", "MULTILINE_COMMENT", @@ -108,25 +130,36 @@ func cqllexerLexerInit() { } staticData.RuleNames = []string{ "ALPHA", "K_ADD", "K_AGGREGATE", "K_ALL", "K_ALLOW", "K_ALTER", "K_AND", - "K_APPLY", "K_AS", "K_ASC", "K_ASCII", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", - "K_BIGINT", "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CLUSTERING", - "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", "K_COUNTER", - "K_CREATE", "K_CUSTOM", "K_DATE", "K_DECIMAL", "K_DELETE", "K_DESC", - "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ENTRIES", "K_EXECUTE", - "K_EXISTS", "K_FILTERING", "K_FINALFUNC", "K_FLOAT", "K_FROM", "K_FROZEN", - "K_FULL", "K_FUNCTION", "K_FUNCTIONS", "K_GRANT", "K_IF", "K_IN", "K_INDEX", - "K_INET", "K_INFINITY", "K_INITCOND", "K_INPUT", "K_INSERT", "K_INT", - "K_INTO", "K_JSON", "K_KEY", "K_KEYS", "K_KEYSPACE", "K_KEYSPACES", - "K_LANGUAGE", "K_LIMIT", "K_LIST", "K_LOGIN", "K_MAP", "K_MODIFY", "K_NAN", - "K_NOLOGIN", "K_NORECURSIVE", "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_OF", - "K_ON", "K_OPTIONS", "K_OR", "K_ORDER", "K_PASSWORD", "K_PERMISSION", - "K_PERMISSIONS", "K_PRIMARY", "K_RENAME", "K_REPLACE", "K_RETURNS", - "K_REVOKE", "K_ROLE", "K_ROLES", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", - "K_SMALLINT", "K_STATIC", "K_STORAGE", "K_STYPE", "K_SUPERUSER", "K_TABLE", - "K_TEXT", "K_TIME", "K_TIMESTAMP", "K_TIMEUUID", "K_TINYINT", "K_TO", - "K_TOKEN", "K_TRIGGER", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", - "K_UNLOGGED", "K_UPDATE", "K_USE", "K_USER", "K_USERS", "K_USING", "K_UUID", - "K_VALUES", "K_VARCHAR", "K_VARINT", "K_WHERE", "K_WITH", "K_WRITETIME", + "K_ANY", "K_APPLY", "K_ARRAY", "K_AS", "K_ASC", "K_ASCII", "K_ASSERT_ROWS_MODIFIED", + "K_AT", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", "K_BETWEEN", "K_BIGINT", + "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CASE", "K_CAST", "K_CLUSTERING", + "K_COLLATE", "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", + "K_COUNTER", "K_CREATE", "K_CROSS", "K_CUBE", "K_CURRENT", "K_CUSTOM", + "K_DATE", "K_DECIMAL", "K_DEFAULT", "K_DEFINE", "K_DELETE", "K_DESC", + "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ELSE", "K_END", + "K_ENTRIES", "K_ENUM", "K_ESCAPE", "K_EXCEPT", "K_EXCLUDE", "K_EXECUTE", + "K_EXISTS", "K_EXTRACT", "K_FALSE", "K_FETCH", "K_FILTERING", "K_FINALFUNC", + "K_FLOAT", "K_FOLLOWING", "K_FOR", "K_FROM", "K_FROZEN", "K_FULL", "K_FUNCTION", + "K_FUNCTIONS", "K_GRANT", "K_GROUP", "K_GROUPING", "K_GROUPS", "K_HASH", + "K_HAVING", "K_IF", "K_IGNORE", "K_IN", "K_INDEX", "K_INET", "K_INFINITY", + "K_INITCOND", "K_INNER", "K_INPUT", "K_INSERT", "K_INT", "K_INTERSECT", + "K_INTERVAL", "K_INTO", "K_IS", "K_JOIN", "K_JSON", "K_KEY", "K_KEYS", + "K_KEYSPACE", "K_KEYSPACES", "K_LANGUAGE", "K_LATERAL", "K_LEFT", "K_LIKE", + "K_LIMIT", "K_LIST", "K_LOGIN", "K_LOOKUP", "K_MAP", "K_MERGE", "K_MODIFY", + "K_NAN", "K_NATURAL", "K_NEW", "K_NO", "K_NOLOGIN", "K_NORECURSIVE", + "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_NULLS", "K_OF", "K_ON", "K_OPTIONS", + "K_OR", "K_ORDER", "K_OUTER", "K_OVER", "K_PARTITION", "K_PASSWORD", + "K_PERMISSION", "K_PERMISSIONS", "K_PRECEDING", "K_PRIMARY", "K_PROTO", + "K_QUALIFY", "K_RANGE", "K_RECURSIVE", "K_RENAME", "K_REPLACE", "K_RESPECT", + "K_RETURNS", "K_REVOKE", "K_RIGHT", "K_ROLE", "K_ROLES", "K_ROLLUP", + "K_ROWS", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", "K_SMALLINT", + "K_SOME", "K_STATIC", "K_STORAGE", "K_STRUCT", "K_STYPE", "K_SUPERUSER", + "K_TABLE", "K_TABLESAMPLE", "K_TEXT", "K_THEN", "K_TIME", "K_TIMESTAMP", + "K_TIMEUUID", "K_TINYINT", "K_TO", "K_TOKEN", "K_TREAT", "K_TRIGGER", + "K_TRUE", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", "K_UNBOUNDED", + "K_UNION", "K_UNLOGGED", "K_UNNEST", "K_UPDATE", "K_USE", "K_USER", + "K_USERS", "K_USING", "K_UUID", "K_VALUES", "K_VARCHAR", "K_VARINT", + "K_WHEN", "K_WHERE", "K_WINDOW", "K_WITH", "K_WITHIN", "K_WRITETIME", "K_MATERIALIZED", "K_VIEW", "SEMICOLON", "SQUOTE", "DQUOTE", "DOT", "COMMA", "L_PAREN", "R_PAREN", "L_ANGLE_BRACKET", "R_ANGLE_BRACKET", "IDENTIFIER", "IDENTIFIER_WITH_HYPHEN", "WS", "COMMENT", "MULTILINE_COMMENT", @@ -134,7 +167,7 @@ func cqllexerLexerInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 140, 1211, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 4, 0, 208, 1806, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, @@ -162,504 +195,776 @@ func cqllexerLexerInit() { 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, - 2, 140, 7, 140, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, - 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, - 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, - 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, - 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, - 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, - 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, - 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, - 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, - 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, - 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, - 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, - 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, - 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, - 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, - 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, - 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, - 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, - 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, - 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, - 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, - 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, - 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, - 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, - 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, - 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, - 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, - 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, - 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, - 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, - 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, - 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, - 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, - 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, - 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, - 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, - 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, - 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, - 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, - 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, - 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, - 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, - 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, - 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, - 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, - 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, + 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, + 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, + 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, + 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, + 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, + 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, + 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, + 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, + 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, + 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, + 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, + 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, + 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, + 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, + 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, + 7, 207, 2, 208, 7, 208, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, + 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, + 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, + 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, + 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, + 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, + 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, + 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, + 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, + 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, + 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, + 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, + 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, + 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, + 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, + 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, + 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, + 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, + 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, + 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, + 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, + 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, + 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, + 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, + 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, + 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, + 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, + 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, + 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, + 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, + 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, + 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, + 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, + 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, + 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, + 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, + 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, + 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, + 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, + 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, + 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, + 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, + 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, + 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, - 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, - 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, - 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, - 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, - 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, - 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, - 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, - 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, - 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, - 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, - 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, - 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, - 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, - 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, - 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, - 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, - 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, - 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, - 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, - 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, - 133, 1, 134, 1, 134, 1, 135, 1, 135, 5, 135, 1153, 8, 135, 10, 135, 12, - 135, 1156, 9, 135, 1, 136, 1, 136, 5, 136, 1160, 8, 136, 10, 136, 12, 136, - 1163, 9, 136, 1, 136, 1, 136, 5, 136, 1167, 8, 136, 10, 136, 12, 136, 1170, - 9, 136, 1, 137, 4, 137, 1173, 8, 137, 11, 137, 12, 137, 1174, 1, 137, 1, - 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1184, 8, 138, 1, 138, - 5, 138, 1187, 8, 138, 10, 138, 12, 138, 1190, 9, 138, 1, 138, 1, 138, 1, - 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 5, 139, 1200, 8, 139, 10, - 139, 12, 139, 1203, 9, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, - 140, 1, 140, 2, 1188, 1201, 0, 141, 1, 0, 3, 1, 5, 2, 7, 3, 9, 4, 11, 5, - 13, 6, 15, 7, 17, 8, 19, 9, 21, 10, 23, 11, 25, 12, 27, 13, 29, 14, 31, - 15, 33, 16, 35, 17, 37, 18, 39, 19, 41, 20, 43, 21, 45, 22, 47, 23, 49, - 24, 51, 25, 53, 26, 55, 27, 57, 28, 59, 29, 61, 30, 63, 31, 65, 32, 67, - 33, 69, 34, 71, 35, 73, 36, 75, 37, 77, 38, 79, 39, 81, 40, 83, 41, 85, - 42, 87, 43, 89, 44, 91, 45, 93, 46, 95, 47, 97, 48, 99, 49, 101, 50, 103, - 51, 105, 52, 107, 53, 109, 54, 111, 55, 113, 56, 115, 57, 117, 58, 119, - 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 65, 133, 66, 135, - 67, 137, 68, 139, 69, 141, 70, 143, 71, 145, 72, 147, 73, 149, 74, 151, - 75, 153, 76, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, 82, 167, - 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, 90, 183, - 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, 98, 199, - 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, 213, 106, - 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 112, 227, 113, 229, - 114, 231, 115, 233, 116, 235, 117, 237, 118, 239, 119, 241, 120, 243, 121, - 245, 122, 247, 123, 249, 124, 251, 125, 253, 126, 255, 127, 257, 128, 259, - 129, 261, 130, 263, 131, 265, 132, 267, 133, 269, 134, 271, 135, 273, 136, - 275, 137, 277, 138, 279, 139, 281, 140, 1, 0, 30, 2, 0, 65, 90, 97, 122, - 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 71, 71, 103, 103, 2, - 0, 82, 82, 114, 114, 2, 0, 69, 69, 101, 101, 2, 0, 84, 84, 116, 116, 2, - 0, 76, 76, 108, 108, 2, 0, 79, 79, 111, 111, 2, 0, 87, 87, 119, 119, 2, - 0, 78, 78, 110, 110, 2, 0, 80, 80, 112, 112, 2, 0, 89, 89, 121, 121, 2, - 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, - 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, - 66, 66, 98, 98, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 88, - 88, 120, 120, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 86, - 86, 118, 118, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 5, 0, 45, 45, 48, - 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, - 13, 13, 1216, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, - 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, - 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, - 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, - 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, - 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, - 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, - 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, - 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, - 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, - 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, - 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, - 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, - 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, - 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, - 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, - 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, - 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, - 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, - 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, - 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, - 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, - 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, - 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, - 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, - 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, - 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, - 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, - 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, - 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, - 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, - 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, - 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, - 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, - 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, - 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, - 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, - 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, - 281, 1, 0, 0, 0, 1, 283, 1, 0, 0, 0, 3, 285, 1, 0, 0, 0, 5, 289, 1, 0, - 0, 0, 7, 299, 1, 0, 0, 0, 9, 303, 1, 0, 0, 0, 11, 309, 1, 0, 0, 0, 13, - 315, 1, 0, 0, 0, 15, 319, 1, 0, 0, 0, 17, 325, 1, 0, 0, 0, 19, 328, 1, - 0, 0, 0, 21, 332, 1, 0, 0, 0, 23, 338, 1, 0, 0, 0, 25, 348, 1, 0, 0, 0, - 27, 354, 1, 0, 0, 0, 29, 360, 1, 0, 0, 0, 31, 367, 1, 0, 0, 0, 33, 372, - 1, 0, 0, 0, 35, 380, 1, 0, 0, 0, 37, 383, 1, 0, 0, 0, 39, 390, 1, 0, 0, - 0, 41, 401, 1, 0, 0, 0, 43, 414, 1, 0, 0, 0, 45, 422, 1, 0, 0, 0, 47, 431, - 1, 0, 0, 0, 49, 437, 1, 0, 0, 0, 51, 445, 1, 0, 0, 0, 53, 452, 1, 0, 0, - 0, 55, 459, 1, 0, 0, 0, 57, 464, 1, 0, 0, 0, 59, 472, 1, 0, 0, 0, 61, 479, - 1, 0, 0, 0, 63, 484, 1, 0, 0, 0, 65, 493, 1, 0, 0, 0, 67, 502, 1, 0, 0, - 0, 69, 509, 1, 0, 0, 0, 71, 514, 1, 0, 0, 0, 73, 522, 1, 0, 0, 0, 75, 530, - 1, 0, 0, 0, 77, 537, 1, 0, 0, 0, 79, 547, 1, 0, 0, 0, 81, 557, 1, 0, 0, - 0, 83, 563, 1, 0, 0, 0, 85, 568, 1, 0, 0, 0, 87, 575, 1, 0, 0, 0, 89, 580, - 1, 0, 0, 0, 91, 589, 1, 0, 0, 0, 93, 599, 1, 0, 0, 0, 95, 605, 1, 0, 0, - 0, 97, 608, 1, 0, 0, 0, 99, 611, 1, 0, 0, 0, 101, 617, 1, 0, 0, 0, 103, - 622, 1, 0, 0, 0, 105, 631, 1, 0, 0, 0, 107, 640, 1, 0, 0, 0, 109, 646, - 1, 0, 0, 0, 111, 653, 1, 0, 0, 0, 113, 657, 1, 0, 0, 0, 115, 662, 1, 0, - 0, 0, 117, 667, 1, 0, 0, 0, 119, 671, 1, 0, 0, 0, 121, 676, 1, 0, 0, 0, - 123, 685, 1, 0, 0, 0, 125, 695, 1, 0, 0, 0, 127, 704, 1, 0, 0, 0, 129, - 710, 1, 0, 0, 0, 131, 715, 1, 0, 0, 0, 133, 721, 1, 0, 0, 0, 135, 725, - 1, 0, 0, 0, 137, 732, 1, 0, 0, 0, 139, 736, 1, 0, 0, 0, 141, 744, 1, 0, - 0, 0, 143, 756, 1, 0, 0, 0, 145, 768, 1, 0, 0, 0, 147, 772, 1, 0, 0, 0, - 149, 777, 1, 0, 0, 0, 151, 780, 1, 0, 0, 0, 153, 783, 1, 0, 0, 0, 155, - 791, 1, 0, 0, 0, 157, 794, 1, 0, 0, 0, 159, 800, 1, 0, 0, 0, 161, 809, - 1, 0, 0, 0, 163, 820, 1, 0, 0, 0, 165, 832, 1, 0, 0, 0, 167, 840, 1, 0, - 0, 0, 169, 847, 1, 0, 0, 0, 171, 855, 1, 0, 0, 0, 173, 863, 1, 0, 0, 0, - 175, 870, 1, 0, 0, 0, 177, 875, 1, 0, 0, 0, 179, 881, 1, 0, 0, 0, 181, - 888, 1, 0, 0, 0, 183, 895, 1, 0, 0, 0, 185, 899, 1, 0, 0, 0, 187, 905, - 1, 0, 0, 0, 189, 914, 1, 0, 0, 0, 191, 921, 1, 0, 0, 0, 193, 929, 1, 0, - 0, 0, 195, 935, 1, 0, 0, 0, 197, 945, 1, 0, 0, 0, 199, 951, 1, 0, 0, 0, - 201, 956, 1, 0, 0, 0, 203, 961, 1, 0, 0, 0, 205, 971, 1, 0, 0, 0, 207, - 980, 1, 0, 0, 0, 209, 988, 1, 0, 0, 0, 211, 991, 1, 0, 0, 0, 213, 997, - 1, 0, 0, 0, 215, 1005, 1, 0, 0, 0, 217, 1014, 1, 0, 0, 0, 219, 1018, 1, - 0, 0, 0, 221, 1024, 1, 0, 0, 0, 223, 1029, 1, 0, 0, 0, 225, 1038, 1, 0, - 0, 0, 227, 1045, 1, 0, 0, 0, 229, 1049, 1, 0, 0, 0, 231, 1054, 1, 0, 0, - 0, 233, 1060, 1, 0, 0, 0, 235, 1066, 1, 0, 0, 0, 237, 1071, 1, 0, 0, 0, - 239, 1078, 1, 0, 0, 0, 241, 1086, 1, 0, 0, 0, 243, 1093, 1, 0, 0, 0, 245, - 1099, 1, 0, 0, 0, 247, 1104, 1, 0, 0, 0, 249, 1114, 1, 0, 0, 0, 251, 1127, - 1, 0, 0, 0, 253, 1132, 1, 0, 0, 0, 255, 1134, 1, 0, 0, 0, 257, 1136, 1, - 0, 0, 0, 259, 1138, 1, 0, 0, 0, 261, 1140, 1, 0, 0, 0, 263, 1142, 1, 0, - 0, 0, 265, 1144, 1, 0, 0, 0, 267, 1146, 1, 0, 0, 0, 269, 1148, 1, 0, 0, - 0, 271, 1150, 1, 0, 0, 0, 273, 1157, 1, 0, 0, 0, 275, 1172, 1, 0, 0, 0, - 277, 1183, 1, 0, 0, 0, 279, 1195, 1, 0, 0, 0, 281, 1209, 1, 0, 0, 0, 283, - 284, 7, 0, 0, 0, 284, 2, 1, 0, 0, 0, 285, 286, 7, 1, 0, 0, 286, 287, 7, - 2, 0, 0, 287, 288, 7, 2, 0, 0, 288, 4, 1, 0, 0, 0, 289, 290, 7, 1, 0, 0, - 290, 291, 7, 3, 0, 0, 291, 292, 7, 3, 0, 0, 292, 293, 7, 4, 0, 0, 293, - 294, 7, 5, 0, 0, 294, 295, 7, 3, 0, 0, 295, 296, 7, 1, 0, 0, 296, 297, - 7, 6, 0, 0, 297, 298, 7, 5, 0, 0, 298, 6, 1, 0, 0, 0, 299, 300, 7, 1, 0, - 0, 300, 301, 7, 7, 0, 0, 301, 302, 7, 7, 0, 0, 302, 8, 1, 0, 0, 0, 303, - 304, 7, 1, 0, 0, 304, 305, 7, 7, 0, 0, 305, 306, 7, 7, 0, 0, 306, 307, - 7, 8, 0, 0, 307, 308, 7, 9, 0, 0, 308, 10, 1, 0, 0, 0, 309, 310, 7, 1, - 0, 0, 310, 311, 7, 7, 0, 0, 311, 312, 7, 6, 0, 0, 312, 313, 7, 5, 0, 0, - 313, 314, 7, 4, 0, 0, 314, 12, 1, 0, 0, 0, 315, 316, 7, 1, 0, 0, 316, 317, - 7, 10, 0, 0, 317, 318, 7, 2, 0, 0, 318, 14, 1, 0, 0, 0, 319, 320, 7, 1, - 0, 0, 320, 321, 7, 11, 0, 0, 321, 322, 7, 11, 0, 0, 322, 323, 7, 7, 0, - 0, 323, 324, 7, 12, 0, 0, 324, 16, 1, 0, 0, 0, 325, 326, 7, 1, 0, 0, 326, - 327, 7, 13, 0, 0, 327, 18, 1, 0, 0, 0, 328, 329, 7, 1, 0, 0, 329, 330, - 7, 13, 0, 0, 330, 331, 7, 14, 0, 0, 331, 20, 1, 0, 0, 0, 332, 333, 7, 1, - 0, 0, 333, 334, 7, 13, 0, 0, 334, 335, 7, 14, 0, 0, 335, 336, 7, 15, 0, - 0, 336, 337, 7, 15, 0, 0, 337, 22, 1, 0, 0, 0, 338, 339, 7, 1, 0, 0, 339, - 340, 7, 16, 0, 0, 340, 341, 7, 6, 0, 0, 341, 342, 7, 17, 0, 0, 342, 343, - 7, 8, 0, 0, 343, 344, 7, 4, 0, 0, 344, 345, 7, 15, 0, 0, 345, 346, 7, 18, - 0, 0, 346, 347, 7, 5, 0, 0, 347, 24, 1, 0, 0, 0, 348, 349, 7, 19, 0, 0, - 349, 350, 7, 1, 0, 0, 350, 351, 7, 6, 0, 0, 351, 352, 7, 14, 0, 0, 352, - 353, 7, 17, 0, 0, 353, 26, 1, 0, 0, 0, 354, 355, 7, 19, 0, 0, 355, 356, - 7, 5, 0, 0, 356, 357, 7, 3, 0, 0, 357, 358, 7, 15, 0, 0, 358, 359, 7, 10, - 0, 0, 359, 28, 1, 0, 0, 0, 360, 361, 7, 19, 0, 0, 361, 362, 7, 15, 0, 0, - 362, 363, 7, 3, 0, 0, 363, 364, 7, 15, 0, 0, 364, 365, 7, 10, 0, 0, 365, - 366, 7, 6, 0, 0, 366, 30, 1, 0, 0, 0, 367, 368, 7, 19, 0, 0, 368, 369, - 7, 7, 0, 0, 369, 370, 7, 8, 0, 0, 370, 371, 7, 19, 0, 0, 371, 32, 1, 0, - 0, 0, 372, 373, 7, 19, 0, 0, 373, 374, 7, 8, 0, 0, 374, 375, 7, 8, 0, 0, - 375, 376, 7, 7, 0, 0, 376, 377, 7, 5, 0, 0, 377, 378, 7, 1, 0, 0, 378, - 379, 7, 10, 0, 0, 379, 34, 1, 0, 0, 0, 380, 381, 7, 19, 0, 0, 381, 382, - 7, 12, 0, 0, 382, 36, 1, 0, 0, 0, 383, 384, 7, 14, 0, 0, 384, 385, 7, 1, - 0, 0, 385, 386, 7, 7, 0, 0, 386, 387, 7, 7, 0, 0, 387, 388, 7, 5, 0, 0, - 388, 389, 7, 2, 0, 0, 389, 38, 1, 0, 0, 0, 390, 391, 7, 14, 0, 0, 391, - 392, 7, 7, 0, 0, 392, 393, 7, 16, 0, 0, 393, 394, 7, 13, 0, 0, 394, 395, - 7, 6, 0, 0, 395, 396, 7, 5, 0, 0, 396, 397, 7, 4, 0, 0, 397, 398, 7, 15, - 0, 0, 398, 399, 7, 10, 0, 0, 399, 400, 7, 3, 0, 0, 400, 40, 1, 0, 0, 0, - 401, 402, 7, 14, 0, 0, 402, 403, 7, 8, 0, 0, 403, 404, 7, 7, 0, 0, 404, - 405, 7, 16, 0, 0, 405, 406, 7, 20, 0, 0, 406, 407, 7, 10, 0, 0, 407, 408, - 7, 21, 0, 0, 408, 409, 7, 1, 0, 0, 409, 410, 7, 20, 0, 0, 410, 411, 7, - 15, 0, 0, 411, 412, 7, 7, 0, 0, 412, 413, 7, 12, 0, 0, 413, 42, 1, 0, 0, - 0, 414, 415, 7, 14, 0, 0, 415, 416, 7, 8, 0, 0, 416, 417, 7, 20, 0, 0, - 417, 418, 7, 11, 0, 0, 418, 419, 7, 1, 0, 0, 419, 420, 7, 14, 0, 0, 420, - 421, 7, 6, 0, 0, 421, 44, 1, 0, 0, 0, 422, 423, 7, 14, 0, 0, 423, 424, - 7, 8, 0, 0, 424, 425, 7, 10, 0, 0, 425, 426, 7, 6, 0, 0, 426, 427, 7, 1, - 0, 0, 427, 428, 7, 15, 0, 0, 428, 429, 7, 10, 0, 0, 429, 430, 7, 13, 0, - 0, 430, 46, 1, 0, 0, 0, 431, 432, 7, 14, 0, 0, 432, 433, 7, 8, 0, 0, 433, - 434, 7, 16, 0, 0, 434, 435, 7, 10, 0, 0, 435, 436, 7, 6, 0, 0, 436, 48, - 1, 0, 0, 0, 437, 438, 7, 14, 0, 0, 438, 439, 7, 8, 0, 0, 439, 440, 7, 16, - 0, 0, 440, 441, 7, 10, 0, 0, 441, 442, 7, 6, 0, 0, 442, 443, 7, 5, 0, 0, - 443, 444, 7, 4, 0, 0, 444, 50, 1, 0, 0, 0, 445, 446, 7, 14, 0, 0, 446, - 447, 7, 4, 0, 0, 447, 448, 7, 5, 0, 0, 448, 449, 7, 1, 0, 0, 449, 450, - 7, 6, 0, 0, 450, 451, 7, 5, 0, 0, 451, 52, 1, 0, 0, 0, 452, 453, 7, 14, - 0, 0, 453, 454, 7, 16, 0, 0, 454, 455, 7, 13, 0, 0, 455, 456, 7, 6, 0, - 0, 456, 457, 7, 8, 0, 0, 457, 458, 7, 20, 0, 0, 458, 54, 1, 0, 0, 0, 459, - 460, 7, 2, 0, 0, 460, 461, 7, 1, 0, 0, 461, 462, 7, 6, 0, 0, 462, 463, - 7, 5, 0, 0, 463, 56, 1, 0, 0, 0, 464, 465, 7, 2, 0, 0, 465, 466, 7, 5, - 0, 0, 466, 467, 7, 14, 0, 0, 467, 468, 7, 15, 0, 0, 468, 469, 7, 20, 0, - 0, 469, 470, 7, 1, 0, 0, 470, 471, 7, 7, 0, 0, 471, 58, 1, 0, 0, 0, 472, - 473, 7, 2, 0, 0, 473, 474, 7, 5, 0, 0, 474, 475, 7, 7, 0, 0, 475, 476, - 7, 5, 0, 0, 476, 477, 7, 6, 0, 0, 477, 478, 7, 5, 0, 0, 478, 60, 1, 0, - 0, 0, 479, 480, 7, 2, 0, 0, 480, 481, 7, 5, 0, 0, 481, 482, 7, 13, 0, 0, - 482, 483, 7, 14, 0, 0, 483, 62, 1, 0, 0, 0, 484, 485, 7, 2, 0, 0, 485, - 486, 7, 5, 0, 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 14, 0, 0, 488, 489, - 7, 4, 0, 0, 489, 490, 7, 15, 0, 0, 490, 491, 7, 19, 0, 0, 491, 492, 7, - 5, 0, 0, 492, 64, 1, 0, 0, 0, 493, 494, 7, 2, 0, 0, 494, 495, 7, 15, 0, - 0, 495, 496, 7, 13, 0, 0, 496, 497, 7, 6, 0, 0, 497, 498, 7, 15, 0, 0, - 498, 499, 7, 10, 0, 0, 499, 500, 7, 14, 0, 0, 500, 501, 7, 6, 0, 0, 501, - 66, 1, 0, 0, 0, 502, 503, 7, 2, 0, 0, 503, 504, 7, 8, 0, 0, 504, 505, 7, - 16, 0, 0, 505, 506, 7, 19, 0, 0, 506, 507, 7, 7, 0, 0, 507, 508, 7, 5, - 0, 0, 508, 68, 1, 0, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 4, 0, 0, - 511, 512, 7, 8, 0, 0, 512, 513, 7, 11, 0, 0, 513, 70, 1, 0, 0, 0, 514, - 515, 7, 5, 0, 0, 515, 516, 7, 10, 0, 0, 516, 517, 7, 6, 0, 0, 517, 518, - 7, 4, 0, 0, 518, 519, 7, 15, 0, 0, 519, 520, 7, 5, 0, 0, 520, 521, 7, 13, - 0, 0, 521, 72, 1, 0, 0, 0, 522, 523, 7, 5, 0, 0, 523, 524, 7, 22, 0, 0, - 524, 525, 7, 5, 0, 0, 525, 526, 7, 14, 0, 0, 526, 527, 7, 16, 0, 0, 527, - 528, 7, 6, 0, 0, 528, 529, 7, 5, 0, 0, 529, 74, 1, 0, 0, 0, 530, 531, 7, - 5, 0, 0, 531, 532, 7, 22, 0, 0, 532, 533, 7, 15, 0, 0, 533, 534, 7, 13, - 0, 0, 534, 535, 7, 6, 0, 0, 535, 536, 7, 13, 0, 0, 536, 76, 1, 0, 0, 0, - 537, 538, 7, 21, 0, 0, 538, 539, 7, 15, 0, 0, 539, 540, 7, 7, 0, 0, 540, - 541, 7, 6, 0, 0, 541, 542, 7, 5, 0, 0, 542, 543, 7, 4, 0, 0, 543, 544, - 7, 15, 0, 0, 544, 545, 7, 10, 0, 0, 545, 546, 7, 3, 0, 0, 546, 78, 1, 0, - 0, 0, 547, 548, 7, 21, 0, 0, 548, 549, 7, 15, 0, 0, 549, 550, 7, 10, 0, - 0, 550, 551, 7, 1, 0, 0, 551, 552, 7, 7, 0, 0, 552, 553, 7, 21, 0, 0, 553, - 554, 7, 16, 0, 0, 554, 555, 7, 10, 0, 0, 555, 556, 7, 14, 0, 0, 556, 80, - 1, 0, 0, 0, 557, 558, 7, 21, 0, 0, 558, 559, 7, 7, 0, 0, 559, 560, 7, 8, - 0, 0, 560, 561, 7, 1, 0, 0, 561, 562, 7, 6, 0, 0, 562, 82, 1, 0, 0, 0, - 563, 564, 7, 21, 0, 0, 564, 565, 7, 4, 0, 0, 565, 566, 7, 8, 0, 0, 566, - 567, 7, 20, 0, 0, 567, 84, 1, 0, 0, 0, 568, 569, 7, 21, 0, 0, 569, 570, - 7, 4, 0, 0, 570, 571, 7, 8, 0, 0, 571, 572, 7, 18, 0, 0, 572, 573, 7, 5, - 0, 0, 573, 574, 7, 10, 0, 0, 574, 86, 1, 0, 0, 0, 575, 576, 7, 21, 0, 0, - 576, 577, 7, 16, 0, 0, 577, 578, 7, 7, 0, 0, 578, 579, 7, 7, 0, 0, 579, - 88, 1, 0, 0, 0, 580, 581, 7, 21, 0, 0, 581, 582, 7, 16, 0, 0, 582, 583, - 7, 10, 0, 0, 583, 584, 7, 14, 0, 0, 584, 585, 7, 6, 0, 0, 585, 586, 7, - 15, 0, 0, 586, 587, 7, 8, 0, 0, 587, 588, 7, 10, 0, 0, 588, 90, 1, 0, 0, - 0, 589, 590, 7, 21, 0, 0, 590, 591, 7, 16, 0, 0, 591, 592, 7, 10, 0, 0, - 592, 593, 7, 14, 0, 0, 593, 594, 7, 6, 0, 0, 594, 595, 7, 15, 0, 0, 595, - 596, 7, 8, 0, 0, 596, 597, 7, 10, 0, 0, 597, 598, 7, 13, 0, 0, 598, 92, - 1, 0, 0, 0, 599, 600, 7, 3, 0, 0, 600, 601, 7, 4, 0, 0, 601, 602, 7, 1, - 0, 0, 602, 603, 7, 10, 0, 0, 603, 604, 7, 6, 0, 0, 604, 94, 1, 0, 0, 0, - 605, 606, 7, 15, 0, 0, 606, 607, 7, 21, 0, 0, 607, 96, 1, 0, 0, 0, 608, - 609, 7, 15, 0, 0, 609, 610, 7, 10, 0, 0, 610, 98, 1, 0, 0, 0, 611, 612, - 7, 15, 0, 0, 612, 613, 7, 10, 0, 0, 613, 614, 7, 2, 0, 0, 614, 615, 7, - 5, 0, 0, 615, 616, 7, 22, 0, 0, 616, 100, 1, 0, 0, 0, 617, 618, 7, 15, - 0, 0, 618, 619, 7, 10, 0, 0, 619, 620, 7, 5, 0, 0, 620, 621, 7, 6, 0, 0, - 621, 102, 1, 0, 0, 0, 622, 623, 7, 15, 0, 0, 623, 624, 7, 10, 0, 0, 624, - 625, 7, 21, 0, 0, 625, 626, 7, 15, 0, 0, 626, 627, 7, 10, 0, 0, 627, 628, - 7, 15, 0, 0, 628, 629, 7, 6, 0, 0, 629, 630, 7, 12, 0, 0, 630, 104, 1, - 0, 0, 0, 631, 632, 7, 15, 0, 0, 632, 633, 7, 10, 0, 0, 633, 634, 7, 15, - 0, 0, 634, 635, 7, 6, 0, 0, 635, 636, 7, 14, 0, 0, 636, 637, 7, 8, 0, 0, - 637, 638, 7, 10, 0, 0, 638, 639, 7, 2, 0, 0, 639, 106, 1, 0, 0, 0, 640, - 641, 7, 15, 0, 0, 641, 642, 7, 10, 0, 0, 642, 643, 7, 11, 0, 0, 643, 644, - 7, 16, 0, 0, 644, 645, 7, 6, 0, 0, 645, 108, 1, 0, 0, 0, 646, 647, 7, 15, - 0, 0, 647, 648, 7, 10, 0, 0, 648, 649, 7, 13, 0, 0, 649, 650, 7, 5, 0, - 0, 650, 651, 7, 4, 0, 0, 651, 652, 7, 6, 0, 0, 652, 110, 1, 0, 0, 0, 653, - 654, 7, 15, 0, 0, 654, 655, 7, 10, 0, 0, 655, 656, 7, 6, 0, 0, 656, 112, - 1, 0, 0, 0, 657, 658, 7, 15, 0, 0, 658, 659, 7, 10, 0, 0, 659, 660, 7, - 6, 0, 0, 660, 661, 7, 8, 0, 0, 661, 114, 1, 0, 0, 0, 662, 663, 7, 23, 0, - 0, 663, 664, 7, 13, 0, 0, 664, 665, 7, 8, 0, 0, 665, 666, 7, 10, 0, 0, - 666, 116, 1, 0, 0, 0, 667, 668, 7, 24, 0, 0, 668, 669, 7, 5, 0, 0, 669, - 670, 7, 12, 0, 0, 670, 118, 1, 0, 0, 0, 671, 672, 7, 24, 0, 0, 672, 673, - 7, 5, 0, 0, 673, 674, 7, 12, 0, 0, 674, 675, 7, 13, 0, 0, 675, 120, 1, - 0, 0, 0, 676, 677, 7, 24, 0, 0, 677, 678, 7, 5, 0, 0, 678, 679, 7, 12, - 0, 0, 679, 680, 7, 13, 0, 0, 680, 681, 7, 11, 0, 0, 681, 682, 7, 1, 0, - 0, 682, 683, 7, 14, 0, 0, 683, 684, 7, 5, 0, 0, 684, 122, 1, 0, 0, 0, 685, - 686, 7, 24, 0, 0, 686, 687, 7, 5, 0, 0, 687, 688, 7, 12, 0, 0, 688, 689, - 7, 13, 0, 0, 689, 690, 7, 11, 0, 0, 690, 691, 7, 1, 0, 0, 691, 692, 7, - 14, 0, 0, 692, 693, 7, 5, 0, 0, 693, 694, 7, 13, 0, 0, 694, 124, 1, 0, - 0, 0, 695, 696, 7, 7, 0, 0, 696, 697, 7, 1, 0, 0, 697, 698, 7, 10, 0, 0, - 698, 699, 7, 3, 0, 0, 699, 700, 7, 16, 0, 0, 700, 701, 7, 1, 0, 0, 701, - 702, 7, 3, 0, 0, 702, 703, 7, 5, 0, 0, 703, 126, 1, 0, 0, 0, 704, 705, - 7, 7, 0, 0, 705, 706, 7, 15, 0, 0, 706, 707, 7, 20, 0, 0, 707, 708, 7, - 15, 0, 0, 708, 709, 7, 6, 0, 0, 709, 128, 1, 0, 0, 0, 710, 711, 7, 7, 0, - 0, 711, 712, 7, 15, 0, 0, 712, 713, 7, 13, 0, 0, 713, 714, 7, 6, 0, 0, - 714, 130, 1, 0, 0, 0, 715, 716, 7, 7, 0, 0, 716, 717, 7, 8, 0, 0, 717, - 718, 7, 3, 0, 0, 718, 719, 7, 15, 0, 0, 719, 720, 7, 10, 0, 0, 720, 132, - 1, 0, 0, 0, 721, 722, 7, 20, 0, 0, 722, 723, 7, 1, 0, 0, 723, 724, 7, 11, - 0, 0, 724, 134, 1, 0, 0, 0, 725, 726, 7, 20, 0, 0, 726, 727, 7, 8, 0, 0, - 727, 728, 7, 2, 0, 0, 728, 729, 7, 15, 0, 0, 729, 730, 7, 21, 0, 0, 730, - 731, 7, 12, 0, 0, 731, 136, 1, 0, 0, 0, 732, 733, 7, 10, 0, 0, 733, 734, - 7, 1, 0, 0, 734, 735, 7, 10, 0, 0, 735, 138, 1, 0, 0, 0, 736, 737, 7, 10, - 0, 0, 737, 738, 7, 8, 0, 0, 738, 739, 7, 7, 0, 0, 739, 740, 7, 8, 0, 0, - 740, 741, 7, 3, 0, 0, 741, 742, 7, 15, 0, 0, 742, 743, 7, 10, 0, 0, 743, - 140, 1, 0, 0, 0, 744, 745, 7, 10, 0, 0, 745, 746, 7, 8, 0, 0, 746, 747, - 7, 4, 0, 0, 747, 748, 7, 5, 0, 0, 748, 749, 7, 14, 0, 0, 749, 750, 7, 16, - 0, 0, 750, 751, 7, 4, 0, 0, 751, 752, 7, 13, 0, 0, 752, 753, 7, 15, 0, - 0, 753, 754, 7, 25, 0, 0, 754, 755, 7, 5, 0, 0, 755, 142, 1, 0, 0, 0, 756, - 757, 7, 10, 0, 0, 757, 758, 7, 8, 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, - 7, 16, 0, 0, 760, 761, 7, 11, 0, 0, 761, 762, 7, 5, 0, 0, 762, 763, 7, - 4, 0, 0, 763, 764, 7, 16, 0, 0, 764, 765, 7, 13, 0, 0, 765, 766, 7, 5, - 0, 0, 766, 767, 7, 4, 0, 0, 767, 144, 1, 0, 0, 0, 768, 769, 7, 10, 0, 0, - 769, 770, 7, 8, 0, 0, 770, 771, 7, 6, 0, 0, 771, 146, 1, 0, 0, 0, 772, - 773, 7, 10, 0, 0, 773, 774, 7, 16, 0, 0, 774, 775, 7, 7, 0, 0, 775, 776, - 7, 7, 0, 0, 776, 148, 1, 0, 0, 0, 777, 778, 7, 8, 0, 0, 778, 779, 7, 21, - 0, 0, 779, 150, 1, 0, 0, 0, 780, 781, 7, 8, 0, 0, 781, 782, 7, 10, 0, 0, - 782, 152, 1, 0, 0, 0, 783, 784, 7, 8, 0, 0, 784, 785, 7, 11, 0, 0, 785, - 786, 7, 6, 0, 0, 786, 787, 7, 15, 0, 0, 787, 788, 7, 8, 0, 0, 788, 789, - 7, 10, 0, 0, 789, 790, 7, 13, 0, 0, 790, 154, 1, 0, 0, 0, 791, 792, 7, - 8, 0, 0, 792, 793, 7, 4, 0, 0, 793, 156, 1, 0, 0, 0, 794, 795, 7, 8, 0, - 0, 795, 796, 7, 4, 0, 0, 796, 797, 7, 2, 0, 0, 797, 798, 7, 5, 0, 0, 798, - 799, 7, 4, 0, 0, 799, 158, 1, 0, 0, 0, 800, 801, 7, 11, 0, 0, 801, 802, - 7, 1, 0, 0, 802, 803, 7, 13, 0, 0, 803, 804, 7, 13, 0, 0, 804, 805, 7, - 9, 0, 0, 805, 806, 7, 8, 0, 0, 806, 807, 7, 4, 0, 0, 807, 808, 7, 2, 0, - 0, 808, 160, 1, 0, 0, 0, 809, 810, 7, 11, 0, 0, 810, 811, 7, 5, 0, 0, 811, - 812, 7, 4, 0, 0, 812, 813, 7, 20, 0, 0, 813, 814, 7, 15, 0, 0, 814, 815, - 7, 13, 0, 0, 815, 816, 7, 13, 0, 0, 816, 817, 7, 15, 0, 0, 817, 818, 7, - 8, 0, 0, 818, 819, 7, 10, 0, 0, 819, 162, 1, 0, 0, 0, 820, 821, 7, 11, - 0, 0, 821, 822, 7, 5, 0, 0, 822, 823, 7, 4, 0, 0, 823, 824, 7, 20, 0, 0, - 824, 825, 7, 15, 0, 0, 825, 826, 7, 13, 0, 0, 826, 827, 7, 13, 0, 0, 827, - 828, 7, 15, 0, 0, 828, 829, 7, 8, 0, 0, 829, 830, 7, 10, 0, 0, 830, 831, - 7, 13, 0, 0, 831, 164, 1, 0, 0, 0, 832, 833, 7, 11, 0, 0, 833, 834, 7, - 4, 0, 0, 834, 835, 7, 15, 0, 0, 835, 836, 7, 20, 0, 0, 836, 837, 7, 1, - 0, 0, 837, 838, 7, 4, 0, 0, 838, 839, 7, 12, 0, 0, 839, 166, 1, 0, 0, 0, - 840, 841, 7, 4, 0, 0, 841, 842, 7, 5, 0, 0, 842, 843, 7, 10, 0, 0, 843, - 844, 7, 1, 0, 0, 844, 845, 7, 20, 0, 0, 845, 846, 7, 5, 0, 0, 846, 168, - 1, 0, 0, 0, 847, 848, 7, 4, 0, 0, 848, 849, 7, 5, 0, 0, 849, 850, 7, 11, - 0, 0, 850, 851, 7, 7, 0, 0, 851, 852, 7, 1, 0, 0, 852, 853, 7, 14, 0, 0, - 853, 854, 7, 5, 0, 0, 854, 170, 1, 0, 0, 0, 855, 856, 7, 4, 0, 0, 856, - 857, 7, 5, 0, 0, 857, 858, 7, 6, 0, 0, 858, 859, 7, 16, 0, 0, 859, 860, - 7, 4, 0, 0, 860, 861, 7, 10, 0, 0, 861, 862, 7, 13, 0, 0, 862, 172, 1, - 0, 0, 0, 863, 864, 7, 4, 0, 0, 864, 865, 7, 5, 0, 0, 865, 866, 7, 25, 0, - 0, 866, 867, 7, 8, 0, 0, 867, 868, 7, 24, 0, 0, 868, 869, 7, 5, 0, 0, 869, - 174, 1, 0, 0, 0, 870, 871, 7, 4, 0, 0, 871, 872, 7, 8, 0, 0, 872, 873, - 7, 7, 0, 0, 873, 874, 7, 5, 0, 0, 874, 176, 1, 0, 0, 0, 875, 876, 7, 4, - 0, 0, 876, 877, 7, 8, 0, 0, 877, 878, 7, 7, 0, 0, 878, 879, 7, 5, 0, 0, - 879, 880, 7, 13, 0, 0, 880, 178, 1, 0, 0, 0, 881, 882, 7, 13, 0, 0, 882, - 883, 7, 14, 0, 0, 883, 884, 7, 17, 0, 0, 884, 885, 7, 5, 0, 0, 885, 886, - 7, 20, 0, 0, 886, 887, 7, 1, 0, 0, 887, 180, 1, 0, 0, 0, 888, 889, 7, 13, - 0, 0, 889, 890, 7, 5, 0, 0, 890, 891, 7, 7, 0, 0, 891, 892, 7, 5, 0, 0, - 892, 893, 7, 14, 0, 0, 893, 894, 7, 6, 0, 0, 894, 182, 1, 0, 0, 0, 895, - 896, 7, 13, 0, 0, 896, 897, 7, 5, 0, 0, 897, 898, 7, 6, 0, 0, 898, 184, - 1, 0, 0, 0, 899, 900, 7, 13, 0, 0, 900, 901, 7, 21, 0, 0, 901, 902, 7, - 16, 0, 0, 902, 903, 7, 10, 0, 0, 903, 904, 7, 14, 0, 0, 904, 186, 1, 0, - 0, 0, 905, 906, 7, 13, 0, 0, 906, 907, 7, 20, 0, 0, 907, 908, 7, 1, 0, - 0, 908, 909, 7, 7, 0, 0, 909, 910, 7, 7, 0, 0, 910, 911, 7, 15, 0, 0, 911, - 912, 7, 10, 0, 0, 912, 913, 7, 6, 0, 0, 913, 188, 1, 0, 0, 0, 914, 915, - 7, 13, 0, 0, 915, 916, 7, 6, 0, 0, 916, 917, 7, 1, 0, 0, 917, 918, 7, 6, - 0, 0, 918, 919, 7, 15, 0, 0, 919, 920, 7, 14, 0, 0, 920, 190, 1, 0, 0, - 0, 921, 922, 7, 13, 0, 0, 922, 923, 7, 6, 0, 0, 923, 924, 7, 8, 0, 0, 924, - 925, 7, 4, 0, 0, 925, 926, 7, 1, 0, 0, 926, 927, 7, 3, 0, 0, 927, 928, - 7, 5, 0, 0, 928, 192, 1, 0, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 6, - 0, 0, 931, 932, 7, 12, 0, 0, 932, 933, 7, 11, 0, 0, 933, 934, 7, 5, 0, - 0, 934, 194, 1, 0, 0, 0, 935, 936, 7, 13, 0, 0, 936, 937, 7, 16, 0, 0, - 937, 938, 7, 11, 0, 0, 938, 939, 7, 5, 0, 0, 939, 940, 7, 4, 0, 0, 940, - 941, 7, 16, 0, 0, 941, 942, 7, 13, 0, 0, 942, 943, 7, 5, 0, 0, 943, 944, - 7, 4, 0, 0, 944, 196, 1, 0, 0, 0, 945, 946, 7, 6, 0, 0, 946, 947, 7, 1, - 0, 0, 947, 948, 7, 19, 0, 0, 948, 949, 7, 7, 0, 0, 949, 950, 7, 5, 0, 0, - 950, 198, 1, 0, 0, 0, 951, 952, 7, 6, 0, 0, 952, 953, 7, 5, 0, 0, 953, - 954, 7, 22, 0, 0, 954, 955, 7, 6, 0, 0, 955, 200, 1, 0, 0, 0, 956, 957, - 7, 6, 0, 0, 957, 958, 7, 15, 0, 0, 958, 959, 7, 20, 0, 0, 959, 960, 7, - 5, 0, 0, 960, 202, 1, 0, 0, 0, 961, 962, 7, 6, 0, 0, 962, 963, 7, 15, 0, - 0, 963, 964, 7, 20, 0, 0, 964, 965, 7, 5, 0, 0, 965, 966, 7, 13, 0, 0, - 966, 967, 7, 6, 0, 0, 967, 968, 7, 1, 0, 0, 968, 969, 7, 20, 0, 0, 969, - 970, 7, 11, 0, 0, 970, 204, 1, 0, 0, 0, 971, 972, 7, 6, 0, 0, 972, 973, - 7, 15, 0, 0, 973, 974, 7, 20, 0, 0, 974, 975, 7, 5, 0, 0, 975, 976, 7, - 16, 0, 0, 976, 977, 7, 16, 0, 0, 977, 978, 7, 15, 0, 0, 978, 979, 7, 2, - 0, 0, 979, 206, 1, 0, 0, 0, 980, 981, 7, 6, 0, 0, 981, 982, 7, 15, 0, 0, - 982, 983, 7, 10, 0, 0, 983, 984, 7, 12, 0, 0, 984, 985, 7, 15, 0, 0, 985, - 986, 7, 10, 0, 0, 986, 987, 7, 6, 0, 0, 987, 208, 1, 0, 0, 0, 988, 989, - 7, 6, 0, 0, 989, 990, 7, 8, 0, 0, 990, 210, 1, 0, 0, 0, 991, 992, 7, 6, - 0, 0, 992, 993, 7, 8, 0, 0, 993, 994, 7, 24, 0, 0, 994, 995, 7, 5, 0, 0, - 995, 996, 7, 10, 0, 0, 996, 212, 1, 0, 0, 0, 997, 998, 7, 6, 0, 0, 998, - 999, 7, 4, 0, 0, 999, 1000, 7, 15, 0, 0, 1000, 1001, 7, 3, 0, 0, 1001, - 1002, 7, 3, 0, 0, 1002, 1003, 7, 5, 0, 0, 1003, 1004, 7, 4, 0, 0, 1004, - 214, 1, 0, 0, 0, 1005, 1006, 7, 6, 0, 0, 1006, 1007, 7, 4, 0, 0, 1007, - 1008, 7, 16, 0, 0, 1008, 1009, 7, 10, 0, 0, 1009, 1010, 7, 14, 0, 0, 1010, - 1011, 7, 1, 0, 0, 1011, 1012, 7, 6, 0, 0, 1012, 1013, 7, 5, 0, 0, 1013, - 216, 1, 0, 0, 0, 1014, 1015, 7, 6, 0, 0, 1015, 1016, 7, 6, 0, 0, 1016, - 1017, 7, 7, 0, 0, 1017, 218, 1, 0, 0, 0, 1018, 1019, 7, 6, 0, 0, 1019, - 1020, 7, 16, 0, 0, 1020, 1021, 7, 11, 0, 0, 1021, 1022, 7, 7, 0, 0, 1022, - 1023, 7, 5, 0, 0, 1023, 220, 1, 0, 0, 0, 1024, 1025, 7, 6, 0, 0, 1025, - 1026, 7, 12, 0, 0, 1026, 1027, 7, 11, 0, 0, 1027, 1028, 7, 5, 0, 0, 1028, - 222, 1, 0, 0, 0, 1029, 1030, 7, 16, 0, 0, 1030, 1031, 7, 10, 0, 0, 1031, - 1032, 7, 7, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 7, 3, 0, 0, 1034, - 1035, 7, 3, 0, 0, 1035, 1036, 7, 5, 0, 0, 1036, 1037, 7, 2, 0, 0, 1037, - 224, 1, 0, 0, 0, 1038, 1039, 7, 16, 0, 0, 1039, 1040, 7, 11, 0, 0, 1040, - 1041, 7, 2, 0, 0, 1041, 1042, 7, 1, 0, 0, 1042, 1043, 7, 6, 0, 0, 1043, - 1044, 7, 5, 0, 0, 1044, 226, 1, 0, 0, 0, 1045, 1046, 7, 16, 0, 0, 1046, - 1047, 7, 13, 0, 0, 1047, 1048, 7, 5, 0, 0, 1048, 228, 1, 0, 0, 0, 1049, - 1050, 7, 16, 0, 0, 1050, 1051, 7, 13, 0, 0, 1051, 1052, 7, 5, 0, 0, 1052, - 1053, 7, 4, 0, 0, 1053, 230, 1, 0, 0, 0, 1054, 1055, 7, 16, 0, 0, 1055, - 1056, 7, 13, 0, 0, 1056, 1057, 7, 5, 0, 0, 1057, 1058, 7, 4, 0, 0, 1058, - 1059, 7, 13, 0, 0, 1059, 232, 1, 0, 0, 0, 1060, 1061, 7, 16, 0, 0, 1061, - 1062, 7, 13, 0, 0, 1062, 1063, 7, 15, 0, 0, 1063, 1064, 7, 10, 0, 0, 1064, - 1065, 7, 3, 0, 0, 1065, 234, 1, 0, 0, 0, 1066, 1067, 7, 16, 0, 0, 1067, - 1068, 7, 16, 0, 0, 1068, 1069, 7, 15, 0, 0, 1069, 1070, 7, 2, 0, 0, 1070, - 236, 1, 0, 0, 0, 1071, 1072, 7, 25, 0, 0, 1072, 1073, 7, 1, 0, 0, 1073, - 1074, 7, 7, 0, 0, 1074, 1075, 7, 16, 0, 0, 1075, 1076, 7, 5, 0, 0, 1076, - 1077, 7, 13, 0, 0, 1077, 238, 1, 0, 0, 0, 1078, 1079, 7, 25, 0, 0, 1079, - 1080, 7, 1, 0, 0, 1080, 1081, 7, 4, 0, 0, 1081, 1082, 7, 14, 0, 0, 1082, - 1083, 7, 17, 0, 0, 1083, 1084, 7, 1, 0, 0, 1084, 1085, 7, 4, 0, 0, 1085, - 240, 1, 0, 0, 0, 1086, 1087, 7, 25, 0, 0, 1087, 1088, 7, 1, 0, 0, 1088, - 1089, 7, 4, 0, 0, 1089, 1090, 7, 15, 0, 0, 1090, 1091, 7, 10, 0, 0, 1091, - 1092, 7, 6, 0, 0, 1092, 242, 1, 0, 0, 0, 1093, 1094, 7, 9, 0, 0, 1094, - 1095, 7, 17, 0, 0, 1095, 1096, 7, 5, 0, 0, 1096, 1097, 7, 4, 0, 0, 1097, - 1098, 7, 5, 0, 0, 1098, 244, 1, 0, 0, 0, 1099, 1100, 7, 9, 0, 0, 1100, - 1101, 7, 15, 0, 0, 1101, 1102, 7, 6, 0, 0, 1102, 1103, 7, 17, 0, 0, 1103, - 246, 1, 0, 0, 0, 1104, 1105, 7, 9, 0, 0, 1105, 1106, 7, 4, 0, 0, 1106, - 1107, 7, 15, 0, 0, 1107, 1108, 7, 6, 0, 0, 1108, 1109, 7, 5, 0, 0, 1109, - 1110, 7, 6, 0, 0, 1110, 1111, 7, 15, 0, 0, 1111, 1112, 7, 20, 0, 0, 1112, - 1113, 7, 5, 0, 0, 1113, 248, 1, 0, 0, 0, 1114, 1115, 7, 20, 0, 0, 1115, - 1116, 7, 1, 0, 0, 1116, 1117, 7, 6, 0, 0, 1117, 1118, 7, 5, 0, 0, 1118, - 1119, 7, 4, 0, 0, 1119, 1120, 7, 15, 0, 0, 1120, 1121, 7, 1, 0, 0, 1121, - 1122, 7, 7, 0, 0, 1122, 1123, 7, 15, 0, 0, 1123, 1124, 7, 18, 0, 0, 1124, - 1125, 7, 5, 0, 0, 1125, 1126, 7, 2, 0, 0, 1126, 250, 1, 0, 0, 0, 1127, - 1128, 7, 25, 0, 0, 1128, 1129, 7, 15, 0, 0, 1129, 1130, 7, 5, 0, 0, 1130, - 1131, 7, 9, 0, 0, 1131, 252, 1, 0, 0, 0, 1132, 1133, 5, 59, 0, 0, 1133, - 254, 1, 0, 0, 0, 1134, 1135, 5, 39, 0, 0, 1135, 256, 1, 0, 0, 0, 1136, - 1137, 5, 34, 0, 0, 1137, 258, 1, 0, 0, 0, 1138, 1139, 5, 46, 0, 0, 1139, - 260, 1, 0, 0, 0, 1140, 1141, 5, 44, 0, 0, 1141, 262, 1, 0, 0, 0, 1142, - 1143, 5, 40, 0, 0, 1143, 264, 1, 0, 0, 0, 1144, 1145, 5, 41, 0, 0, 1145, - 266, 1, 0, 0, 0, 1146, 1147, 5, 60, 0, 0, 1147, 268, 1, 0, 0, 0, 1148, - 1149, 5, 62, 0, 0, 1149, 270, 1, 0, 0, 0, 1150, 1154, 3, 1, 0, 0, 1151, - 1153, 7, 26, 0, 0, 1152, 1151, 1, 0, 0, 0, 1153, 1156, 1, 0, 0, 0, 1154, - 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 272, 1, 0, 0, 0, 1156, - 1154, 1, 0, 0, 0, 1157, 1161, 3, 1, 0, 0, 1158, 1160, 7, 27, 0, 0, 1159, - 1158, 1, 0, 0, 0, 1160, 1163, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1161, - 1162, 1, 0, 0, 0, 1162, 1164, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, - 1168, 5, 45, 0, 0, 1165, 1167, 7, 27, 0, 0, 1166, 1165, 1, 0, 0, 0, 1167, - 1170, 1, 0, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, - 274, 1, 0, 0, 0, 1170, 1168, 1, 0, 0, 0, 1171, 1173, 7, 28, 0, 0, 1172, - 1171, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, - 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1177, 6, 137, 0, 0, 1177, - 276, 1, 0, 0, 0, 1178, 1179, 5, 45, 0, 0, 1179, 1180, 5, 45, 0, 0, 1180, - 1184, 5, 32, 0, 0, 1181, 1182, 5, 47, 0, 0, 1182, 1184, 5, 47, 0, 0, 1183, - 1178, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1188, 1, 0, 0, 0, 1185, - 1187, 9, 0, 0, 0, 1186, 1185, 1, 0, 0, 0, 1187, 1190, 1, 0, 0, 0, 1188, - 1189, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1191, 1, 0, 0, 0, 1190, - 1188, 1, 0, 0, 0, 1191, 1192, 7, 29, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, - 1194, 6, 138, 0, 0, 1194, 278, 1, 0, 0, 0, 1195, 1196, 5, 47, 0, 0, 1196, - 1197, 5, 42, 0, 0, 1197, 1201, 1, 0, 0, 0, 1198, 1200, 9, 0, 0, 0, 1199, - 1198, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1201, - 1199, 1, 0, 0, 0, 1202, 1204, 1, 0, 0, 0, 1203, 1201, 1, 0, 0, 0, 1204, - 1205, 5, 42, 0, 0, 1205, 1206, 5, 47, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, - 1208, 6, 139, 0, 0, 1208, 280, 1, 0, 0, 0, 1209, 1210, 9, 0, 0, 0, 1210, - 282, 1, 0, 0, 0, 8, 0, 1154, 1161, 1168, 1174, 1183, 1188, 1201, 1, 0, - 1, 0, + 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, + 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, + 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, + 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, + 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, + 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, + 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, + 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, + 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, + 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, + 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, + 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, + 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, + 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, + 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, + 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, + 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, + 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, + 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, + 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, + 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, + 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, + 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, + 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, + 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, + 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, + 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, + 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, + 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, + 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, + 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, + 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, + 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, + 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, + 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, + 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, + 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, + 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, + 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, + 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, + 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, + 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, + 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, + 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, + 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, + 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, + 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, + 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, + 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, + 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, + 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, + 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, + 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, + 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, + 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, + 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, + 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, + 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, + 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, + 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, + 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, + 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, + 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, + 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, + 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, + 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, + 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, + 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, + 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, + 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, + 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 5, 203, 1748, 8, 203, 10, + 203, 12, 203, 1751, 9, 203, 1, 204, 1, 204, 5, 204, 1755, 8, 204, 10, 204, + 12, 204, 1758, 9, 204, 1, 204, 1, 204, 5, 204, 1762, 8, 204, 10, 204, 12, + 204, 1765, 9, 204, 1, 205, 4, 205, 1768, 8, 205, 11, 205, 12, 205, 1769, + 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 1779, 8, + 206, 1, 206, 5, 206, 1782, 8, 206, 10, 206, 12, 206, 1785, 9, 206, 1, 206, + 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 5, 207, 1795, 8, + 207, 10, 207, 12, 207, 1798, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, + 207, 1, 208, 1, 208, 2, 1783, 1796, 0, 209, 1, 0, 3, 1, 5, 2, 7, 3, 9, + 4, 11, 5, 13, 6, 15, 7, 17, 8, 19, 9, 21, 10, 23, 11, 25, 12, 27, 13, 29, + 14, 31, 15, 33, 16, 35, 17, 37, 18, 39, 19, 41, 20, 43, 21, 45, 22, 47, + 23, 49, 24, 51, 25, 53, 26, 55, 27, 57, 28, 59, 29, 61, 30, 63, 31, 65, + 32, 67, 33, 69, 34, 71, 35, 73, 36, 75, 37, 77, 38, 79, 39, 81, 40, 83, + 41, 85, 42, 87, 43, 89, 44, 91, 45, 93, 46, 95, 47, 97, 48, 99, 49, 101, + 50, 103, 51, 105, 52, 107, 53, 109, 54, 111, 55, 113, 56, 115, 57, 117, + 58, 119, 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 65, 133, + 66, 135, 67, 137, 68, 139, 69, 141, 70, 143, 71, 145, 72, 147, 73, 149, + 74, 151, 75, 153, 76, 155, 77, 157, 78, 159, 79, 161, 80, 163, 81, 165, + 82, 167, 83, 169, 84, 171, 85, 173, 86, 175, 87, 177, 88, 179, 89, 181, + 90, 183, 91, 185, 92, 187, 93, 189, 94, 191, 95, 193, 96, 195, 97, 197, + 98, 199, 99, 201, 100, 203, 101, 205, 102, 207, 103, 209, 104, 211, 105, + 213, 106, 215, 107, 217, 108, 219, 109, 221, 110, 223, 111, 225, 112, 227, + 113, 229, 114, 231, 115, 233, 116, 235, 117, 237, 118, 239, 119, 241, 120, + 243, 121, 245, 122, 247, 123, 249, 124, 251, 125, 253, 126, 255, 127, 257, + 128, 259, 129, 261, 130, 263, 131, 265, 132, 267, 133, 269, 134, 271, 135, + 273, 136, 275, 137, 277, 138, 279, 139, 281, 140, 283, 141, 285, 142, 287, + 143, 289, 144, 291, 145, 293, 146, 295, 147, 297, 148, 299, 149, 301, 150, + 303, 151, 305, 152, 307, 153, 309, 154, 311, 155, 313, 156, 315, 157, 317, + 158, 319, 159, 321, 160, 323, 161, 325, 162, 327, 163, 329, 164, 331, 165, + 333, 166, 335, 167, 337, 168, 339, 169, 341, 170, 343, 171, 345, 172, 347, + 173, 349, 174, 351, 175, 353, 176, 355, 177, 357, 178, 359, 179, 361, 180, + 363, 181, 365, 182, 367, 183, 369, 184, 371, 185, 373, 186, 375, 187, 377, + 188, 379, 189, 381, 190, 383, 191, 385, 192, 387, 193, 389, 194, 391, 195, + 393, 196, 395, 197, 397, 198, 399, 199, 401, 200, 403, 201, 405, 202, 407, + 203, 409, 204, 411, 205, 413, 206, 415, 207, 417, 208, 1, 0, 31, 2, 0, + 65, 90, 97, 122, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 71, + 71, 103, 103, 2, 0, 82, 82, 114, 114, 2, 0, 69, 69, 101, 101, 2, 0, 84, + 84, 116, 116, 2, 0, 76, 76, 108, 108, 2, 0, 79, 79, 111, 111, 2, 0, 87, + 87, 119, 119, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 80, + 80, 112, 112, 2, 0, 83, 83, 115, 115, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, + 105, 105, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 85, 85, + 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, 66, 66, + 98, 98, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, + 106, 2, 0, 75, 75, 107, 107, 2, 0, 81, 81, 113, 113, 4, 0, 48, 57, 65, + 90, 95, 95, 97, 122, 5, 0, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 3, + 0, 9, 10, 13, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1811, 0, 3, 1, 0, 0, 0, + 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, + 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, + 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, + 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, + 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, + 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, + 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, + 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, + 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, + 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, + 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, + 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, + 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, + 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, + 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, + 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, + 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, + 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, + 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, + 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, + 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, + 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, + 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, + 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, + 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, + 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, + 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, + 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, + 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, + 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, + 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, + 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, + 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, + 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, + 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, + 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, + 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, + 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, + 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, + 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, + 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, + 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, + 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, + 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, + 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, + 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, + 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, + 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, + 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, + 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, + 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, + 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, + 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, + 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, + 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, + 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 1, 419, 1, 0, 0, 0, 3, + 421, 1, 0, 0, 0, 5, 425, 1, 0, 0, 0, 7, 435, 1, 0, 0, 0, 9, 439, 1, 0, + 0, 0, 11, 445, 1, 0, 0, 0, 13, 451, 1, 0, 0, 0, 15, 455, 1, 0, 0, 0, 17, + 459, 1, 0, 0, 0, 19, 465, 1, 0, 0, 0, 21, 471, 1, 0, 0, 0, 23, 474, 1, + 0, 0, 0, 25, 478, 1, 0, 0, 0, 27, 484, 1, 0, 0, 0, 29, 505, 1, 0, 0, 0, + 31, 508, 1, 0, 0, 0, 33, 518, 1, 0, 0, 0, 35, 524, 1, 0, 0, 0, 37, 530, + 1, 0, 0, 0, 39, 538, 1, 0, 0, 0, 41, 545, 1, 0, 0, 0, 43, 550, 1, 0, 0, + 0, 45, 558, 1, 0, 0, 0, 47, 561, 1, 0, 0, 0, 49, 568, 1, 0, 0, 0, 51, 573, + 1, 0, 0, 0, 53, 578, 1, 0, 0, 0, 55, 589, 1, 0, 0, 0, 57, 597, 1, 0, 0, + 0, 59, 610, 1, 0, 0, 0, 61, 618, 1, 0, 0, 0, 63, 627, 1, 0, 0, 0, 65, 633, + 1, 0, 0, 0, 67, 641, 1, 0, 0, 0, 69, 648, 1, 0, 0, 0, 71, 654, 1, 0, 0, + 0, 73, 659, 1, 0, 0, 0, 75, 667, 1, 0, 0, 0, 77, 674, 1, 0, 0, 0, 79, 679, + 1, 0, 0, 0, 81, 687, 1, 0, 0, 0, 83, 695, 1, 0, 0, 0, 85, 702, 1, 0, 0, + 0, 87, 709, 1, 0, 0, 0, 89, 714, 1, 0, 0, 0, 91, 723, 1, 0, 0, 0, 93, 732, + 1, 0, 0, 0, 95, 739, 1, 0, 0, 0, 97, 744, 1, 0, 0, 0, 99, 749, 1, 0, 0, + 0, 101, 753, 1, 0, 0, 0, 103, 761, 1, 0, 0, 0, 105, 766, 1, 0, 0, 0, 107, + 773, 1, 0, 0, 0, 109, 780, 1, 0, 0, 0, 111, 788, 1, 0, 0, 0, 113, 796, + 1, 0, 0, 0, 115, 803, 1, 0, 0, 0, 117, 811, 1, 0, 0, 0, 119, 817, 1, 0, + 0, 0, 121, 823, 1, 0, 0, 0, 123, 833, 1, 0, 0, 0, 125, 843, 1, 0, 0, 0, + 127, 849, 1, 0, 0, 0, 129, 859, 1, 0, 0, 0, 131, 863, 1, 0, 0, 0, 133, + 868, 1, 0, 0, 0, 135, 875, 1, 0, 0, 0, 137, 880, 1, 0, 0, 0, 139, 889, + 1, 0, 0, 0, 141, 899, 1, 0, 0, 0, 143, 905, 1, 0, 0, 0, 145, 911, 1, 0, + 0, 0, 147, 920, 1, 0, 0, 0, 149, 927, 1, 0, 0, 0, 151, 932, 1, 0, 0, 0, + 153, 939, 1, 0, 0, 0, 155, 942, 1, 0, 0, 0, 157, 949, 1, 0, 0, 0, 159, + 952, 1, 0, 0, 0, 161, 958, 1, 0, 0, 0, 163, 963, 1, 0, 0, 0, 165, 972, + 1, 0, 0, 0, 167, 981, 1, 0, 0, 0, 169, 987, 1, 0, 0, 0, 171, 993, 1, 0, + 0, 0, 173, 1000, 1, 0, 0, 0, 175, 1004, 1, 0, 0, 0, 177, 1014, 1, 0, 0, + 0, 179, 1023, 1, 0, 0, 0, 181, 1028, 1, 0, 0, 0, 183, 1031, 1, 0, 0, 0, + 185, 1036, 1, 0, 0, 0, 187, 1041, 1, 0, 0, 0, 189, 1045, 1, 0, 0, 0, 191, + 1050, 1, 0, 0, 0, 193, 1059, 1, 0, 0, 0, 195, 1069, 1, 0, 0, 0, 197, 1078, + 1, 0, 0, 0, 199, 1086, 1, 0, 0, 0, 201, 1091, 1, 0, 0, 0, 203, 1096, 1, + 0, 0, 0, 205, 1102, 1, 0, 0, 0, 207, 1107, 1, 0, 0, 0, 209, 1113, 1, 0, + 0, 0, 211, 1120, 1, 0, 0, 0, 213, 1124, 1, 0, 0, 0, 215, 1130, 1, 0, 0, + 0, 217, 1137, 1, 0, 0, 0, 219, 1141, 1, 0, 0, 0, 221, 1149, 1, 0, 0, 0, + 223, 1153, 1, 0, 0, 0, 225, 1156, 1, 0, 0, 0, 227, 1164, 1, 0, 0, 0, 229, + 1176, 1, 0, 0, 0, 231, 1188, 1, 0, 0, 0, 233, 1192, 1, 0, 0, 0, 235, 1197, + 1, 0, 0, 0, 237, 1203, 1, 0, 0, 0, 239, 1206, 1, 0, 0, 0, 241, 1209, 1, + 0, 0, 0, 243, 1217, 1, 0, 0, 0, 245, 1220, 1, 0, 0, 0, 247, 1226, 1, 0, + 0, 0, 249, 1232, 1, 0, 0, 0, 251, 1237, 1, 0, 0, 0, 253, 1247, 1, 0, 0, + 0, 255, 1256, 1, 0, 0, 0, 257, 1267, 1, 0, 0, 0, 259, 1279, 1, 0, 0, 0, + 261, 1289, 1, 0, 0, 0, 263, 1297, 1, 0, 0, 0, 265, 1303, 1, 0, 0, 0, 267, + 1311, 1, 0, 0, 0, 269, 1317, 1, 0, 0, 0, 271, 1327, 1, 0, 0, 0, 273, 1334, + 1, 0, 0, 0, 275, 1342, 1, 0, 0, 0, 277, 1350, 1, 0, 0, 0, 279, 1358, 1, + 0, 0, 0, 281, 1365, 1, 0, 0, 0, 283, 1371, 1, 0, 0, 0, 285, 1376, 1, 0, + 0, 0, 287, 1382, 1, 0, 0, 0, 289, 1389, 1, 0, 0, 0, 291, 1394, 1, 0, 0, + 0, 293, 1401, 1, 0, 0, 0, 295, 1408, 1, 0, 0, 0, 297, 1412, 1, 0, 0, 0, + 299, 1418, 1, 0, 0, 0, 301, 1427, 1, 0, 0, 0, 303, 1432, 1, 0, 0, 0, 305, + 1439, 1, 0, 0, 0, 307, 1447, 1, 0, 0, 0, 309, 1454, 1, 0, 0, 0, 311, 1460, + 1, 0, 0, 0, 313, 1470, 1, 0, 0, 0, 315, 1476, 1, 0, 0, 0, 317, 1488, 1, + 0, 0, 0, 319, 1493, 1, 0, 0, 0, 321, 1498, 1, 0, 0, 0, 323, 1503, 1, 0, + 0, 0, 325, 1513, 1, 0, 0, 0, 327, 1522, 1, 0, 0, 0, 329, 1530, 1, 0, 0, + 0, 331, 1533, 1, 0, 0, 0, 333, 1539, 1, 0, 0, 0, 335, 1545, 1, 0, 0, 0, + 337, 1553, 1, 0, 0, 0, 339, 1558, 1, 0, 0, 0, 341, 1567, 1, 0, 0, 0, 343, + 1571, 1, 0, 0, 0, 345, 1577, 1, 0, 0, 0, 347, 1582, 1, 0, 0, 0, 349, 1592, + 1, 0, 0, 0, 351, 1598, 1, 0, 0, 0, 353, 1607, 1, 0, 0, 0, 355, 1614, 1, + 0, 0, 0, 357, 1621, 1, 0, 0, 0, 359, 1625, 1, 0, 0, 0, 361, 1630, 1, 0, + 0, 0, 363, 1636, 1, 0, 0, 0, 365, 1642, 1, 0, 0, 0, 367, 1647, 1, 0, 0, + 0, 369, 1654, 1, 0, 0, 0, 371, 1662, 1, 0, 0, 0, 373, 1669, 1, 0, 0, 0, + 375, 1674, 1, 0, 0, 0, 377, 1680, 1, 0, 0, 0, 379, 1687, 1, 0, 0, 0, 381, + 1692, 1, 0, 0, 0, 383, 1699, 1, 0, 0, 0, 385, 1709, 1, 0, 0, 0, 387, 1722, + 1, 0, 0, 0, 389, 1727, 1, 0, 0, 0, 391, 1729, 1, 0, 0, 0, 393, 1731, 1, + 0, 0, 0, 395, 1733, 1, 0, 0, 0, 397, 1735, 1, 0, 0, 0, 399, 1737, 1, 0, + 0, 0, 401, 1739, 1, 0, 0, 0, 403, 1741, 1, 0, 0, 0, 405, 1743, 1, 0, 0, + 0, 407, 1745, 1, 0, 0, 0, 409, 1752, 1, 0, 0, 0, 411, 1767, 1, 0, 0, 0, + 413, 1778, 1, 0, 0, 0, 415, 1790, 1, 0, 0, 0, 417, 1804, 1, 0, 0, 0, 419, + 420, 7, 0, 0, 0, 420, 2, 1, 0, 0, 0, 421, 422, 7, 1, 0, 0, 422, 423, 7, + 2, 0, 0, 423, 424, 7, 2, 0, 0, 424, 4, 1, 0, 0, 0, 425, 426, 7, 1, 0, 0, + 426, 427, 7, 3, 0, 0, 427, 428, 7, 3, 0, 0, 428, 429, 7, 4, 0, 0, 429, + 430, 7, 5, 0, 0, 430, 431, 7, 3, 0, 0, 431, 432, 7, 1, 0, 0, 432, 433, + 7, 6, 0, 0, 433, 434, 7, 5, 0, 0, 434, 6, 1, 0, 0, 0, 435, 436, 7, 1, 0, + 0, 436, 437, 7, 7, 0, 0, 437, 438, 7, 7, 0, 0, 438, 8, 1, 0, 0, 0, 439, + 440, 7, 1, 0, 0, 440, 441, 7, 7, 0, 0, 441, 442, 7, 7, 0, 0, 442, 443, + 7, 8, 0, 0, 443, 444, 7, 9, 0, 0, 444, 10, 1, 0, 0, 0, 445, 446, 7, 1, + 0, 0, 446, 447, 7, 7, 0, 0, 447, 448, 7, 6, 0, 0, 448, 449, 7, 5, 0, 0, + 449, 450, 7, 4, 0, 0, 450, 12, 1, 0, 0, 0, 451, 452, 7, 1, 0, 0, 452, 453, + 7, 10, 0, 0, 453, 454, 7, 2, 0, 0, 454, 14, 1, 0, 0, 0, 455, 456, 7, 1, + 0, 0, 456, 457, 7, 10, 0, 0, 457, 458, 7, 11, 0, 0, 458, 16, 1, 0, 0, 0, + 459, 460, 7, 1, 0, 0, 460, 461, 7, 12, 0, 0, 461, 462, 7, 12, 0, 0, 462, + 463, 7, 7, 0, 0, 463, 464, 7, 11, 0, 0, 464, 18, 1, 0, 0, 0, 465, 466, + 7, 1, 0, 0, 466, 467, 7, 4, 0, 0, 467, 468, 7, 4, 0, 0, 468, 469, 7, 1, + 0, 0, 469, 470, 7, 11, 0, 0, 470, 20, 1, 0, 0, 0, 471, 472, 7, 1, 0, 0, + 472, 473, 7, 13, 0, 0, 473, 22, 1, 0, 0, 0, 474, 475, 7, 1, 0, 0, 475, + 476, 7, 13, 0, 0, 476, 477, 7, 14, 0, 0, 477, 24, 1, 0, 0, 0, 478, 479, + 7, 1, 0, 0, 479, 480, 7, 13, 0, 0, 480, 481, 7, 14, 0, 0, 481, 482, 7, + 15, 0, 0, 482, 483, 7, 15, 0, 0, 483, 26, 1, 0, 0, 0, 484, 485, 7, 1, 0, + 0, 485, 486, 7, 13, 0, 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 5, 0, 0, + 488, 489, 7, 4, 0, 0, 489, 490, 7, 6, 0, 0, 490, 491, 5, 95, 0, 0, 491, + 492, 7, 4, 0, 0, 492, 493, 7, 8, 0, 0, 493, 494, 7, 9, 0, 0, 494, 495, + 7, 13, 0, 0, 495, 496, 5, 95, 0, 0, 496, 497, 7, 16, 0, 0, 497, 498, 7, + 8, 0, 0, 498, 499, 7, 2, 0, 0, 499, 500, 7, 15, 0, 0, 500, 501, 7, 17, + 0, 0, 501, 502, 7, 15, 0, 0, 502, 503, 7, 5, 0, 0, 503, 504, 7, 2, 0, 0, + 504, 28, 1, 0, 0, 0, 505, 506, 7, 1, 0, 0, 506, 507, 7, 6, 0, 0, 507, 30, + 1, 0, 0, 0, 508, 509, 7, 1, 0, 0, 509, 510, 7, 18, 0, 0, 510, 511, 7, 6, + 0, 0, 511, 512, 7, 19, 0, 0, 512, 513, 7, 8, 0, 0, 513, 514, 7, 4, 0, 0, + 514, 515, 7, 15, 0, 0, 515, 516, 7, 20, 0, 0, 516, 517, 7, 5, 0, 0, 517, + 32, 1, 0, 0, 0, 518, 519, 7, 21, 0, 0, 519, 520, 7, 1, 0, 0, 520, 521, + 7, 6, 0, 0, 521, 522, 7, 14, 0, 0, 522, 523, 7, 19, 0, 0, 523, 34, 1, 0, + 0, 0, 524, 525, 7, 21, 0, 0, 525, 526, 7, 5, 0, 0, 526, 527, 7, 3, 0, 0, + 527, 528, 7, 15, 0, 0, 528, 529, 7, 10, 0, 0, 529, 36, 1, 0, 0, 0, 530, + 531, 7, 21, 0, 0, 531, 532, 7, 5, 0, 0, 532, 533, 7, 6, 0, 0, 533, 534, + 7, 9, 0, 0, 534, 535, 7, 5, 0, 0, 535, 536, 7, 5, 0, 0, 536, 537, 7, 10, + 0, 0, 537, 38, 1, 0, 0, 0, 538, 539, 7, 21, 0, 0, 539, 540, 7, 15, 0, 0, + 540, 541, 7, 3, 0, 0, 541, 542, 7, 15, 0, 0, 542, 543, 7, 10, 0, 0, 543, + 544, 7, 6, 0, 0, 544, 40, 1, 0, 0, 0, 545, 546, 7, 21, 0, 0, 546, 547, + 7, 7, 0, 0, 547, 548, 7, 8, 0, 0, 548, 549, 7, 21, 0, 0, 549, 42, 1, 0, + 0, 0, 550, 551, 7, 21, 0, 0, 551, 552, 7, 8, 0, 0, 552, 553, 7, 8, 0, 0, + 553, 554, 7, 7, 0, 0, 554, 555, 7, 5, 0, 0, 555, 556, 7, 1, 0, 0, 556, + 557, 7, 10, 0, 0, 557, 44, 1, 0, 0, 0, 558, 559, 7, 21, 0, 0, 559, 560, + 7, 11, 0, 0, 560, 46, 1, 0, 0, 0, 561, 562, 7, 14, 0, 0, 562, 563, 7, 1, + 0, 0, 563, 564, 7, 7, 0, 0, 564, 565, 7, 7, 0, 0, 565, 566, 7, 5, 0, 0, + 566, 567, 7, 2, 0, 0, 567, 48, 1, 0, 0, 0, 568, 569, 7, 14, 0, 0, 569, + 570, 7, 1, 0, 0, 570, 571, 7, 13, 0, 0, 571, 572, 7, 5, 0, 0, 572, 50, + 1, 0, 0, 0, 573, 574, 7, 14, 0, 0, 574, 575, 7, 1, 0, 0, 575, 576, 7, 13, + 0, 0, 576, 577, 7, 6, 0, 0, 577, 52, 1, 0, 0, 0, 578, 579, 7, 14, 0, 0, + 579, 580, 7, 7, 0, 0, 580, 581, 7, 18, 0, 0, 581, 582, 7, 13, 0, 0, 582, + 583, 7, 6, 0, 0, 583, 584, 7, 5, 0, 0, 584, 585, 7, 4, 0, 0, 585, 586, + 7, 15, 0, 0, 586, 587, 7, 10, 0, 0, 587, 588, 7, 3, 0, 0, 588, 54, 1, 0, + 0, 0, 589, 590, 7, 14, 0, 0, 590, 591, 7, 8, 0, 0, 591, 592, 7, 7, 0, 0, + 592, 593, 7, 7, 0, 0, 593, 594, 7, 1, 0, 0, 594, 595, 7, 6, 0, 0, 595, + 596, 7, 5, 0, 0, 596, 56, 1, 0, 0, 0, 597, 598, 7, 14, 0, 0, 598, 599, + 7, 8, 0, 0, 599, 600, 7, 7, 0, 0, 600, 601, 7, 18, 0, 0, 601, 602, 7, 16, + 0, 0, 602, 603, 7, 10, 0, 0, 603, 604, 7, 17, 0, 0, 604, 605, 7, 1, 0, + 0, 605, 606, 7, 16, 0, 0, 606, 607, 7, 15, 0, 0, 607, 608, 7, 7, 0, 0, + 608, 609, 7, 11, 0, 0, 609, 58, 1, 0, 0, 0, 610, 611, 7, 14, 0, 0, 611, + 612, 7, 8, 0, 0, 612, 613, 7, 16, 0, 0, 613, 614, 7, 12, 0, 0, 614, 615, + 7, 1, 0, 0, 615, 616, 7, 14, 0, 0, 616, 617, 7, 6, 0, 0, 617, 60, 1, 0, + 0, 0, 618, 619, 7, 14, 0, 0, 619, 620, 7, 8, 0, 0, 620, 621, 7, 10, 0, + 0, 621, 622, 7, 6, 0, 0, 622, 623, 7, 1, 0, 0, 623, 624, 7, 15, 0, 0, 624, + 625, 7, 10, 0, 0, 625, 626, 7, 13, 0, 0, 626, 62, 1, 0, 0, 0, 627, 628, + 7, 14, 0, 0, 628, 629, 7, 8, 0, 0, 629, 630, 7, 18, 0, 0, 630, 631, 7, + 10, 0, 0, 631, 632, 7, 6, 0, 0, 632, 64, 1, 0, 0, 0, 633, 634, 7, 14, 0, + 0, 634, 635, 7, 8, 0, 0, 635, 636, 7, 18, 0, 0, 636, 637, 7, 10, 0, 0, + 637, 638, 7, 6, 0, 0, 638, 639, 7, 5, 0, 0, 639, 640, 7, 4, 0, 0, 640, + 66, 1, 0, 0, 0, 641, 642, 7, 14, 0, 0, 642, 643, 7, 4, 0, 0, 643, 644, + 7, 5, 0, 0, 644, 645, 7, 1, 0, 0, 645, 646, 7, 6, 0, 0, 646, 647, 7, 5, + 0, 0, 647, 68, 1, 0, 0, 0, 648, 649, 7, 14, 0, 0, 649, 650, 7, 4, 0, 0, + 650, 651, 7, 8, 0, 0, 651, 652, 7, 13, 0, 0, 652, 653, 7, 13, 0, 0, 653, + 70, 1, 0, 0, 0, 654, 655, 7, 14, 0, 0, 655, 656, 7, 18, 0, 0, 656, 657, + 7, 21, 0, 0, 657, 658, 7, 5, 0, 0, 658, 72, 1, 0, 0, 0, 659, 660, 7, 14, + 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 4, 0, 0, 662, 663, 7, 4, 0, 0, + 663, 664, 7, 5, 0, 0, 664, 665, 7, 10, 0, 0, 665, 666, 7, 6, 0, 0, 666, + 74, 1, 0, 0, 0, 667, 668, 7, 14, 0, 0, 668, 669, 7, 18, 0, 0, 669, 670, + 7, 13, 0, 0, 670, 671, 7, 6, 0, 0, 671, 672, 7, 8, 0, 0, 672, 673, 7, 16, + 0, 0, 673, 76, 1, 0, 0, 0, 674, 675, 7, 2, 0, 0, 675, 676, 7, 1, 0, 0, + 676, 677, 7, 6, 0, 0, 677, 678, 7, 5, 0, 0, 678, 78, 1, 0, 0, 0, 679, 680, + 7, 2, 0, 0, 680, 681, 7, 5, 0, 0, 681, 682, 7, 14, 0, 0, 682, 683, 7, 15, + 0, 0, 683, 684, 7, 16, 0, 0, 684, 685, 7, 1, 0, 0, 685, 686, 7, 7, 0, 0, + 686, 80, 1, 0, 0, 0, 687, 688, 7, 2, 0, 0, 688, 689, 7, 5, 0, 0, 689, 690, + 7, 17, 0, 0, 690, 691, 7, 1, 0, 0, 691, 692, 7, 18, 0, 0, 692, 693, 7, + 7, 0, 0, 693, 694, 7, 6, 0, 0, 694, 82, 1, 0, 0, 0, 695, 696, 7, 2, 0, + 0, 696, 697, 7, 5, 0, 0, 697, 698, 7, 17, 0, 0, 698, 699, 7, 15, 0, 0, + 699, 700, 7, 10, 0, 0, 700, 701, 7, 5, 0, 0, 701, 84, 1, 0, 0, 0, 702, + 703, 7, 2, 0, 0, 703, 704, 7, 5, 0, 0, 704, 705, 7, 7, 0, 0, 705, 706, + 7, 5, 0, 0, 706, 707, 7, 6, 0, 0, 707, 708, 7, 5, 0, 0, 708, 86, 1, 0, + 0, 0, 709, 710, 7, 2, 0, 0, 710, 711, 7, 5, 0, 0, 711, 712, 7, 13, 0, 0, + 712, 713, 7, 14, 0, 0, 713, 88, 1, 0, 0, 0, 714, 715, 7, 2, 0, 0, 715, + 716, 7, 5, 0, 0, 716, 717, 7, 13, 0, 0, 717, 718, 7, 14, 0, 0, 718, 719, + 7, 4, 0, 0, 719, 720, 7, 15, 0, 0, 720, 721, 7, 21, 0, 0, 721, 722, 7, + 5, 0, 0, 722, 90, 1, 0, 0, 0, 723, 724, 7, 2, 0, 0, 724, 725, 7, 15, 0, + 0, 725, 726, 7, 13, 0, 0, 726, 727, 7, 6, 0, 0, 727, 728, 7, 15, 0, 0, + 728, 729, 7, 10, 0, 0, 729, 730, 7, 14, 0, 0, 730, 731, 7, 6, 0, 0, 731, + 92, 1, 0, 0, 0, 732, 733, 7, 2, 0, 0, 733, 734, 7, 8, 0, 0, 734, 735, 7, + 18, 0, 0, 735, 736, 7, 21, 0, 0, 736, 737, 7, 7, 0, 0, 737, 738, 7, 5, + 0, 0, 738, 94, 1, 0, 0, 0, 739, 740, 7, 2, 0, 0, 740, 741, 7, 4, 0, 0, + 741, 742, 7, 8, 0, 0, 742, 743, 7, 12, 0, 0, 743, 96, 1, 0, 0, 0, 744, + 745, 7, 5, 0, 0, 745, 746, 7, 7, 0, 0, 746, 747, 7, 13, 0, 0, 747, 748, + 7, 5, 0, 0, 748, 98, 1, 0, 0, 0, 749, 750, 7, 5, 0, 0, 750, 751, 7, 10, + 0, 0, 751, 752, 7, 2, 0, 0, 752, 100, 1, 0, 0, 0, 753, 754, 7, 5, 0, 0, + 754, 755, 7, 10, 0, 0, 755, 756, 7, 6, 0, 0, 756, 757, 7, 4, 0, 0, 757, + 758, 7, 15, 0, 0, 758, 759, 7, 5, 0, 0, 759, 760, 7, 13, 0, 0, 760, 102, + 1, 0, 0, 0, 761, 762, 7, 5, 0, 0, 762, 763, 7, 10, 0, 0, 763, 764, 7, 18, + 0, 0, 764, 765, 7, 16, 0, 0, 765, 104, 1, 0, 0, 0, 766, 767, 7, 5, 0, 0, + 767, 768, 7, 13, 0, 0, 768, 769, 7, 14, 0, 0, 769, 770, 7, 1, 0, 0, 770, + 771, 7, 12, 0, 0, 771, 772, 7, 5, 0, 0, 772, 106, 1, 0, 0, 0, 773, 774, + 7, 5, 0, 0, 774, 775, 7, 22, 0, 0, 775, 776, 7, 14, 0, 0, 776, 777, 7, + 5, 0, 0, 777, 778, 7, 12, 0, 0, 778, 779, 7, 6, 0, 0, 779, 108, 1, 0, 0, + 0, 780, 781, 7, 5, 0, 0, 781, 782, 7, 22, 0, 0, 782, 783, 7, 14, 0, 0, + 783, 784, 7, 7, 0, 0, 784, 785, 7, 18, 0, 0, 785, 786, 7, 2, 0, 0, 786, + 787, 7, 5, 0, 0, 787, 110, 1, 0, 0, 0, 788, 789, 7, 5, 0, 0, 789, 790, + 7, 22, 0, 0, 790, 791, 7, 5, 0, 0, 791, 792, 7, 14, 0, 0, 792, 793, 7, + 18, 0, 0, 793, 794, 7, 6, 0, 0, 794, 795, 7, 5, 0, 0, 795, 112, 1, 0, 0, + 0, 796, 797, 7, 5, 0, 0, 797, 798, 7, 22, 0, 0, 798, 799, 7, 15, 0, 0, + 799, 800, 7, 13, 0, 0, 800, 801, 7, 6, 0, 0, 801, 802, 7, 13, 0, 0, 802, + 114, 1, 0, 0, 0, 803, 804, 7, 5, 0, 0, 804, 805, 7, 22, 0, 0, 805, 806, + 7, 6, 0, 0, 806, 807, 7, 4, 0, 0, 807, 808, 7, 1, 0, 0, 808, 809, 7, 14, + 0, 0, 809, 810, 7, 6, 0, 0, 810, 116, 1, 0, 0, 0, 811, 812, 7, 17, 0, 0, + 812, 813, 7, 1, 0, 0, 813, 814, 7, 7, 0, 0, 814, 815, 7, 13, 0, 0, 815, + 816, 7, 5, 0, 0, 816, 118, 1, 0, 0, 0, 817, 818, 7, 17, 0, 0, 818, 819, + 7, 5, 0, 0, 819, 820, 7, 6, 0, 0, 820, 821, 7, 14, 0, 0, 821, 822, 7, 19, + 0, 0, 822, 120, 1, 0, 0, 0, 823, 824, 7, 17, 0, 0, 824, 825, 7, 15, 0, + 0, 825, 826, 7, 7, 0, 0, 826, 827, 7, 6, 0, 0, 827, 828, 7, 5, 0, 0, 828, + 829, 7, 4, 0, 0, 829, 830, 7, 15, 0, 0, 830, 831, 7, 10, 0, 0, 831, 832, + 7, 3, 0, 0, 832, 122, 1, 0, 0, 0, 833, 834, 7, 17, 0, 0, 834, 835, 7, 15, + 0, 0, 835, 836, 7, 10, 0, 0, 836, 837, 7, 1, 0, 0, 837, 838, 7, 7, 0, 0, + 838, 839, 7, 17, 0, 0, 839, 840, 7, 18, 0, 0, 840, 841, 7, 10, 0, 0, 841, + 842, 7, 14, 0, 0, 842, 124, 1, 0, 0, 0, 843, 844, 7, 17, 0, 0, 844, 845, + 7, 7, 0, 0, 845, 846, 7, 8, 0, 0, 846, 847, 7, 1, 0, 0, 847, 848, 7, 6, + 0, 0, 848, 126, 1, 0, 0, 0, 849, 850, 7, 17, 0, 0, 850, 851, 7, 8, 0, 0, + 851, 852, 7, 7, 0, 0, 852, 853, 7, 7, 0, 0, 853, 854, 7, 8, 0, 0, 854, + 855, 7, 9, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 10, 0, 0, 857, 858, + 7, 3, 0, 0, 858, 128, 1, 0, 0, 0, 859, 860, 7, 17, 0, 0, 860, 861, 7, 8, + 0, 0, 861, 862, 7, 4, 0, 0, 862, 130, 1, 0, 0, 0, 863, 864, 7, 17, 0, 0, + 864, 865, 7, 4, 0, 0, 865, 866, 7, 8, 0, 0, 866, 867, 7, 16, 0, 0, 867, + 132, 1, 0, 0, 0, 868, 869, 7, 17, 0, 0, 869, 870, 7, 4, 0, 0, 870, 871, + 7, 8, 0, 0, 871, 872, 7, 20, 0, 0, 872, 873, 7, 5, 0, 0, 873, 874, 7, 10, + 0, 0, 874, 134, 1, 0, 0, 0, 875, 876, 7, 17, 0, 0, 876, 877, 7, 18, 0, + 0, 877, 878, 7, 7, 0, 0, 878, 879, 7, 7, 0, 0, 879, 136, 1, 0, 0, 0, 880, + 881, 7, 17, 0, 0, 881, 882, 7, 18, 0, 0, 882, 883, 7, 10, 0, 0, 883, 884, + 7, 14, 0, 0, 884, 885, 7, 6, 0, 0, 885, 886, 7, 15, 0, 0, 886, 887, 7, + 8, 0, 0, 887, 888, 7, 10, 0, 0, 888, 138, 1, 0, 0, 0, 889, 890, 7, 17, + 0, 0, 890, 891, 7, 18, 0, 0, 891, 892, 7, 10, 0, 0, 892, 893, 7, 14, 0, + 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 15, 0, 0, 895, 896, 7, 8, 0, 0, 896, + 897, 7, 10, 0, 0, 897, 898, 7, 13, 0, 0, 898, 140, 1, 0, 0, 0, 899, 900, + 7, 3, 0, 0, 900, 901, 7, 4, 0, 0, 901, 902, 7, 1, 0, 0, 902, 903, 7, 10, + 0, 0, 903, 904, 7, 6, 0, 0, 904, 142, 1, 0, 0, 0, 905, 906, 7, 3, 0, 0, + 906, 907, 7, 4, 0, 0, 907, 908, 7, 8, 0, 0, 908, 909, 7, 18, 0, 0, 909, + 910, 7, 12, 0, 0, 910, 144, 1, 0, 0, 0, 911, 912, 7, 3, 0, 0, 912, 913, + 7, 4, 0, 0, 913, 914, 7, 8, 0, 0, 914, 915, 7, 18, 0, 0, 915, 916, 7, 12, + 0, 0, 916, 917, 7, 15, 0, 0, 917, 918, 7, 10, 0, 0, 918, 919, 7, 3, 0, + 0, 919, 146, 1, 0, 0, 0, 920, 921, 7, 3, 0, 0, 921, 922, 7, 4, 0, 0, 922, + 923, 7, 8, 0, 0, 923, 924, 7, 18, 0, 0, 924, 925, 7, 12, 0, 0, 925, 926, + 7, 13, 0, 0, 926, 148, 1, 0, 0, 0, 927, 928, 7, 19, 0, 0, 928, 929, 7, + 1, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 19, 0, 0, 931, 150, 1, 0, + 0, 0, 932, 933, 7, 19, 0, 0, 933, 934, 7, 1, 0, 0, 934, 935, 7, 23, 0, + 0, 935, 936, 7, 15, 0, 0, 936, 937, 7, 10, 0, 0, 937, 938, 7, 3, 0, 0, + 938, 152, 1, 0, 0, 0, 939, 940, 7, 15, 0, 0, 940, 941, 7, 17, 0, 0, 941, + 154, 1, 0, 0, 0, 942, 943, 7, 15, 0, 0, 943, 944, 7, 3, 0, 0, 944, 945, + 7, 10, 0, 0, 945, 946, 7, 8, 0, 0, 946, 947, 7, 4, 0, 0, 947, 948, 7, 5, + 0, 0, 948, 156, 1, 0, 0, 0, 949, 950, 7, 15, 0, 0, 950, 951, 7, 10, 0, + 0, 951, 158, 1, 0, 0, 0, 952, 953, 7, 15, 0, 0, 953, 954, 7, 10, 0, 0, + 954, 955, 7, 2, 0, 0, 955, 956, 7, 5, 0, 0, 956, 957, 7, 22, 0, 0, 957, + 160, 1, 0, 0, 0, 958, 959, 7, 15, 0, 0, 959, 960, 7, 10, 0, 0, 960, 961, + 7, 5, 0, 0, 961, 962, 7, 6, 0, 0, 962, 162, 1, 0, 0, 0, 963, 964, 7, 15, + 0, 0, 964, 965, 7, 10, 0, 0, 965, 966, 7, 17, 0, 0, 966, 967, 7, 15, 0, + 0, 967, 968, 7, 10, 0, 0, 968, 969, 7, 15, 0, 0, 969, 970, 7, 6, 0, 0, + 970, 971, 7, 11, 0, 0, 971, 164, 1, 0, 0, 0, 972, 973, 7, 15, 0, 0, 973, + 974, 7, 10, 0, 0, 974, 975, 7, 15, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, + 7, 14, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 10, 0, 0, 979, 980, 7, + 2, 0, 0, 980, 166, 1, 0, 0, 0, 981, 982, 7, 15, 0, 0, 982, 983, 7, 10, + 0, 0, 983, 984, 7, 10, 0, 0, 984, 985, 7, 5, 0, 0, 985, 986, 7, 4, 0, 0, + 986, 168, 1, 0, 0, 0, 987, 988, 7, 15, 0, 0, 988, 989, 7, 10, 0, 0, 989, + 990, 7, 12, 0, 0, 990, 991, 7, 18, 0, 0, 991, 992, 7, 6, 0, 0, 992, 170, + 1, 0, 0, 0, 993, 994, 7, 15, 0, 0, 994, 995, 7, 10, 0, 0, 995, 996, 7, + 13, 0, 0, 996, 997, 7, 5, 0, 0, 997, 998, 7, 4, 0, 0, 998, 999, 7, 6, 0, + 0, 999, 172, 1, 0, 0, 0, 1000, 1001, 7, 15, 0, 0, 1001, 1002, 7, 10, 0, + 0, 1002, 1003, 7, 6, 0, 0, 1003, 174, 1, 0, 0, 0, 1004, 1005, 7, 15, 0, + 0, 1005, 1006, 7, 10, 0, 0, 1006, 1007, 7, 6, 0, 0, 1007, 1008, 7, 5, 0, + 0, 1008, 1009, 7, 4, 0, 0, 1009, 1010, 7, 13, 0, 0, 1010, 1011, 7, 5, 0, + 0, 1011, 1012, 7, 14, 0, 0, 1012, 1013, 7, 6, 0, 0, 1013, 176, 1, 0, 0, + 0, 1014, 1015, 7, 15, 0, 0, 1015, 1016, 7, 10, 0, 0, 1016, 1017, 7, 6, + 0, 0, 1017, 1018, 7, 5, 0, 0, 1018, 1019, 7, 4, 0, 0, 1019, 1020, 7, 23, + 0, 0, 1020, 1021, 7, 1, 0, 0, 1021, 1022, 7, 7, 0, 0, 1022, 178, 1, 0, + 0, 0, 1023, 1024, 7, 15, 0, 0, 1024, 1025, 7, 10, 0, 0, 1025, 1026, 7, + 6, 0, 0, 1026, 1027, 7, 8, 0, 0, 1027, 180, 1, 0, 0, 0, 1028, 1029, 7, + 15, 0, 0, 1029, 1030, 7, 13, 0, 0, 1030, 182, 1, 0, 0, 0, 1031, 1032, 7, + 24, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 7, 15, 0, 0, 1034, 1035, + 7, 10, 0, 0, 1035, 184, 1, 0, 0, 0, 1036, 1037, 7, 24, 0, 0, 1037, 1038, + 7, 13, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 10, 0, 0, 1040, 186, + 1, 0, 0, 0, 1041, 1042, 7, 25, 0, 0, 1042, 1043, 7, 5, 0, 0, 1043, 1044, + 7, 11, 0, 0, 1044, 188, 1, 0, 0, 0, 1045, 1046, 7, 25, 0, 0, 1046, 1047, + 7, 5, 0, 0, 1047, 1048, 7, 11, 0, 0, 1048, 1049, 7, 13, 0, 0, 1049, 190, + 1, 0, 0, 0, 1050, 1051, 7, 25, 0, 0, 1051, 1052, 7, 5, 0, 0, 1052, 1053, + 7, 11, 0, 0, 1053, 1054, 7, 13, 0, 0, 1054, 1055, 7, 12, 0, 0, 1055, 1056, + 7, 1, 0, 0, 1056, 1057, 7, 14, 0, 0, 1057, 1058, 7, 5, 0, 0, 1058, 192, + 1, 0, 0, 0, 1059, 1060, 7, 25, 0, 0, 1060, 1061, 7, 5, 0, 0, 1061, 1062, + 7, 11, 0, 0, 1062, 1063, 7, 13, 0, 0, 1063, 1064, 7, 12, 0, 0, 1064, 1065, + 7, 1, 0, 0, 1065, 1066, 7, 14, 0, 0, 1066, 1067, 7, 5, 0, 0, 1067, 1068, + 7, 13, 0, 0, 1068, 194, 1, 0, 0, 0, 1069, 1070, 7, 7, 0, 0, 1070, 1071, + 7, 1, 0, 0, 1071, 1072, 7, 10, 0, 0, 1072, 1073, 7, 3, 0, 0, 1073, 1074, + 7, 18, 0, 0, 1074, 1075, 7, 1, 0, 0, 1075, 1076, 7, 3, 0, 0, 1076, 1077, + 7, 5, 0, 0, 1077, 196, 1, 0, 0, 0, 1078, 1079, 7, 7, 0, 0, 1079, 1080, + 7, 1, 0, 0, 1080, 1081, 7, 6, 0, 0, 1081, 1082, 7, 5, 0, 0, 1082, 1083, + 7, 4, 0, 0, 1083, 1084, 7, 1, 0, 0, 1084, 1085, 7, 7, 0, 0, 1085, 198, + 1, 0, 0, 0, 1086, 1087, 7, 7, 0, 0, 1087, 1088, 7, 5, 0, 0, 1088, 1089, + 7, 17, 0, 0, 1089, 1090, 7, 6, 0, 0, 1090, 200, 1, 0, 0, 0, 1091, 1092, + 7, 7, 0, 0, 1092, 1093, 7, 15, 0, 0, 1093, 1094, 7, 25, 0, 0, 1094, 1095, + 7, 5, 0, 0, 1095, 202, 1, 0, 0, 0, 1096, 1097, 7, 7, 0, 0, 1097, 1098, + 7, 15, 0, 0, 1098, 1099, 7, 16, 0, 0, 1099, 1100, 7, 15, 0, 0, 1100, 1101, + 7, 6, 0, 0, 1101, 204, 1, 0, 0, 0, 1102, 1103, 7, 7, 0, 0, 1103, 1104, + 7, 15, 0, 0, 1104, 1105, 7, 13, 0, 0, 1105, 1106, 7, 6, 0, 0, 1106, 206, + 1, 0, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 8, 0, 0, 1109, 1110, + 7, 3, 0, 0, 1110, 1111, 7, 15, 0, 0, 1111, 1112, 7, 10, 0, 0, 1112, 208, + 1, 0, 0, 0, 1113, 1114, 7, 7, 0, 0, 1114, 1115, 7, 8, 0, 0, 1115, 1116, + 7, 8, 0, 0, 1116, 1117, 7, 25, 0, 0, 1117, 1118, 7, 18, 0, 0, 1118, 1119, + 7, 12, 0, 0, 1119, 210, 1, 0, 0, 0, 1120, 1121, 7, 16, 0, 0, 1121, 1122, + 7, 1, 0, 0, 1122, 1123, 7, 12, 0, 0, 1123, 212, 1, 0, 0, 0, 1124, 1125, + 7, 16, 0, 0, 1125, 1126, 7, 5, 0, 0, 1126, 1127, 7, 4, 0, 0, 1127, 1128, + 7, 3, 0, 0, 1128, 1129, 7, 5, 0, 0, 1129, 214, 1, 0, 0, 0, 1130, 1131, + 7, 16, 0, 0, 1131, 1132, 7, 8, 0, 0, 1132, 1133, 7, 2, 0, 0, 1133, 1134, + 7, 15, 0, 0, 1134, 1135, 7, 17, 0, 0, 1135, 1136, 7, 11, 0, 0, 1136, 216, + 1, 0, 0, 0, 1137, 1138, 7, 10, 0, 0, 1138, 1139, 7, 1, 0, 0, 1139, 1140, + 7, 10, 0, 0, 1140, 218, 1, 0, 0, 0, 1141, 1142, 7, 10, 0, 0, 1142, 1143, + 7, 1, 0, 0, 1143, 1144, 7, 6, 0, 0, 1144, 1145, 7, 18, 0, 0, 1145, 1146, + 7, 4, 0, 0, 1146, 1147, 7, 1, 0, 0, 1147, 1148, 7, 7, 0, 0, 1148, 220, + 1, 0, 0, 0, 1149, 1150, 7, 10, 0, 0, 1150, 1151, 7, 5, 0, 0, 1151, 1152, + 7, 9, 0, 0, 1152, 222, 1, 0, 0, 0, 1153, 1154, 7, 10, 0, 0, 1154, 1155, + 7, 8, 0, 0, 1155, 224, 1, 0, 0, 0, 1156, 1157, 7, 10, 0, 0, 1157, 1158, + 7, 8, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 8, 0, 0, 1160, 1161, + 7, 3, 0, 0, 1161, 1162, 7, 15, 0, 0, 1162, 1163, 7, 10, 0, 0, 1163, 226, + 1, 0, 0, 0, 1164, 1165, 7, 10, 0, 0, 1165, 1166, 7, 8, 0, 0, 1166, 1167, + 7, 4, 0, 0, 1167, 1168, 7, 5, 0, 0, 1168, 1169, 7, 14, 0, 0, 1169, 1170, + 7, 18, 0, 0, 1170, 1171, 7, 4, 0, 0, 1171, 1172, 7, 13, 0, 0, 1172, 1173, + 7, 15, 0, 0, 1173, 1174, 7, 23, 0, 0, 1174, 1175, 7, 5, 0, 0, 1175, 228, + 1, 0, 0, 0, 1176, 1177, 7, 10, 0, 0, 1177, 1178, 7, 8, 0, 0, 1178, 1179, + 7, 13, 0, 0, 1179, 1180, 7, 18, 0, 0, 1180, 1181, 7, 12, 0, 0, 1181, 1182, + 7, 5, 0, 0, 1182, 1183, 7, 4, 0, 0, 1183, 1184, 7, 18, 0, 0, 1184, 1185, + 7, 13, 0, 0, 1185, 1186, 7, 5, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, 230, + 1, 0, 0, 0, 1188, 1189, 7, 10, 0, 0, 1189, 1190, 7, 8, 0, 0, 1190, 1191, + 7, 6, 0, 0, 1191, 232, 1, 0, 0, 0, 1192, 1193, 7, 10, 0, 0, 1193, 1194, + 7, 18, 0, 0, 1194, 1195, 7, 7, 0, 0, 1195, 1196, 7, 7, 0, 0, 1196, 234, + 1, 0, 0, 0, 1197, 1198, 7, 10, 0, 0, 1198, 1199, 7, 18, 0, 0, 1199, 1200, + 7, 7, 0, 0, 1200, 1201, 7, 7, 0, 0, 1201, 1202, 7, 13, 0, 0, 1202, 236, + 1, 0, 0, 0, 1203, 1204, 7, 8, 0, 0, 1204, 1205, 7, 17, 0, 0, 1205, 238, + 1, 0, 0, 0, 1206, 1207, 7, 8, 0, 0, 1207, 1208, 7, 10, 0, 0, 1208, 240, + 1, 0, 0, 0, 1209, 1210, 7, 8, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, + 7, 6, 0, 0, 1212, 1213, 7, 15, 0, 0, 1213, 1214, 7, 8, 0, 0, 1214, 1215, + 7, 10, 0, 0, 1215, 1216, 7, 13, 0, 0, 1216, 242, 1, 0, 0, 0, 1217, 1218, + 7, 8, 0, 0, 1218, 1219, 7, 4, 0, 0, 1219, 244, 1, 0, 0, 0, 1220, 1221, + 7, 8, 0, 0, 1221, 1222, 7, 4, 0, 0, 1222, 1223, 7, 2, 0, 0, 1223, 1224, + 7, 5, 0, 0, 1224, 1225, 7, 4, 0, 0, 1225, 246, 1, 0, 0, 0, 1226, 1227, + 7, 8, 0, 0, 1227, 1228, 7, 18, 0, 0, 1228, 1229, 7, 6, 0, 0, 1229, 1230, + 7, 5, 0, 0, 1230, 1231, 7, 4, 0, 0, 1231, 248, 1, 0, 0, 0, 1232, 1233, + 7, 8, 0, 0, 1233, 1234, 7, 23, 0, 0, 1234, 1235, 7, 5, 0, 0, 1235, 1236, + 7, 4, 0, 0, 1236, 250, 1, 0, 0, 0, 1237, 1238, 7, 12, 0, 0, 1238, 1239, + 7, 1, 0, 0, 1239, 1240, 7, 4, 0, 0, 1240, 1241, 7, 6, 0, 0, 1241, 1242, + 7, 15, 0, 0, 1242, 1243, 7, 6, 0, 0, 1243, 1244, 7, 15, 0, 0, 1244, 1245, + 7, 8, 0, 0, 1245, 1246, 7, 10, 0, 0, 1246, 252, 1, 0, 0, 0, 1247, 1248, + 7, 12, 0, 0, 1248, 1249, 7, 1, 0, 0, 1249, 1250, 7, 13, 0, 0, 1250, 1251, + 7, 13, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 8, 0, 0, 1253, 1254, + 7, 4, 0, 0, 1254, 1255, 7, 2, 0, 0, 1255, 254, 1, 0, 0, 0, 1256, 1257, + 7, 12, 0, 0, 1257, 1258, 7, 5, 0, 0, 1258, 1259, 7, 4, 0, 0, 1259, 1260, + 7, 16, 0, 0, 1260, 1261, 7, 15, 0, 0, 1261, 1262, 7, 13, 0, 0, 1262, 1263, + 7, 13, 0, 0, 1263, 1264, 7, 15, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, + 7, 10, 0, 0, 1266, 256, 1, 0, 0, 0, 1267, 1268, 7, 12, 0, 0, 1268, 1269, + 7, 5, 0, 0, 1269, 1270, 7, 4, 0, 0, 1270, 1271, 7, 16, 0, 0, 1271, 1272, + 7, 15, 0, 0, 1272, 1273, 7, 13, 0, 0, 1273, 1274, 7, 13, 0, 0, 1274, 1275, + 7, 15, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1277, 7, 10, 0, 0, 1277, 1278, + 7, 13, 0, 0, 1278, 258, 1, 0, 0, 0, 1279, 1280, 7, 12, 0, 0, 1280, 1281, + 7, 4, 0, 0, 1281, 1282, 7, 5, 0, 0, 1282, 1283, 7, 14, 0, 0, 1283, 1284, + 7, 5, 0, 0, 1284, 1285, 7, 2, 0, 0, 1285, 1286, 7, 15, 0, 0, 1286, 1287, + 7, 10, 0, 0, 1287, 1288, 7, 3, 0, 0, 1288, 260, 1, 0, 0, 0, 1289, 1290, + 7, 12, 0, 0, 1290, 1291, 7, 4, 0, 0, 1291, 1292, 7, 15, 0, 0, 1292, 1293, + 7, 16, 0, 0, 1293, 1294, 7, 1, 0, 0, 1294, 1295, 7, 4, 0, 0, 1295, 1296, + 7, 11, 0, 0, 1296, 262, 1, 0, 0, 0, 1297, 1298, 7, 12, 0, 0, 1298, 1299, + 7, 4, 0, 0, 1299, 1300, 7, 8, 0, 0, 1300, 1301, 7, 6, 0, 0, 1301, 1302, + 7, 8, 0, 0, 1302, 264, 1, 0, 0, 0, 1303, 1304, 7, 26, 0, 0, 1304, 1305, + 7, 18, 0, 0, 1305, 1306, 7, 1, 0, 0, 1306, 1307, 7, 7, 0, 0, 1307, 1308, + 7, 15, 0, 0, 1308, 1309, 7, 17, 0, 0, 1309, 1310, 7, 11, 0, 0, 1310, 266, + 1, 0, 0, 0, 1311, 1312, 7, 4, 0, 0, 1312, 1313, 7, 1, 0, 0, 1313, 1314, + 7, 10, 0, 0, 1314, 1315, 7, 3, 0, 0, 1315, 1316, 7, 5, 0, 0, 1316, 268, + 1, 0, 0, 0, 1317, 1318, 7, 4, 0, 0, 1318, 1319, 7, 5, 0, 0, 1319, 1320, + 7, 14, 0, 0, 1320, 1321, 7, 18, 0, 0, 1321, 1322, 7, 4, 0, 0, 1322, 1323, + 7, 13, 0, 0, 1323, 1324, 7, 15, 0, 0, 1324, 1325, 7, 23, 0, 0, 1325, 1326, + 7, 5, 0, 0, 1326, 270, 1, 0, 0, 0, 1327, 1328, 7, 4, 0, 0, 1328, 1329, + 7, 5, 0, 0, 1329, 1330, 7, 10, 0, 0, 1330, 1331, 7, 1, 0, 0, 1331, 1332, + 7, 16, 0, 0, 1332, 1333, 7, 5, 0, 0, 1333, 272, 1, 0, 0, 0, 1334, 1335, + 7, 4, 0, 0, 1335, 1336, 7, 5, 0, 0, 1336, 1337, 7, 12, 0, 0, 1337, 1338, + 7, 7, 0, 0, 1338, 1339, 7, 1, 0, 0, 1339, 1340, 7, 14, 0, 0, 1340, 1341, + 7, 5, 0, 0, 1341, 274, 1, 0, 0, 0, 1342, 1343, 7, 4, 0, 0, 1343, 1344, + 7, 5, 0, 0, 1344, 1345, 7, 13, 0, 0, 1345, 1346, 7, 12, 0, 0, 1346, 1347, + 7, 5, 0, 0, 1347, 1348, 7, 14, 0, 0, 1348, 1349, 7, 6, 0, 0, 1349, 276, + 1, 0, 0, 0, 1350, 1351, 7, 4, 0, 0, 1351, 1352, 7, 5, 0, 0, 1352, 1353, + 7, 6, 0, 0, 1353, 1354, 7, 18, 0, 0, 1354, 1355, 7, 4, 0, 0, 1355, 1356, + 7, 10, 0, 0, 1356, 1357, 7, 13, 0, 0, 1357, 278, 1, 0, 0, 0, 1358, 1359, + 7, 4, 0, 0, 1359, 1360, 7, 5, 0, 0, 1360, 1361, 7, 23, 0, 0, 1361, 1362, + 7, 8, 0, 0, 1362, 1363, 7, 25, 0, 0, 1363, 1364, 7, 5, 0, 0, 1364, 280, + 1, 0, 0, 0, 1365, 1366, 7, 4, 0, 0, 1366, 1367, 7, 15, 0, 0, 1367, 1368, + 7, 3, 0, 0, 1368, 1369, 7, 19, 0, 0, 1369, 1370, 7, 6, 0, 0, 1370, 282, + 1, 0, 0, 0, 1371, 1372, 7, 4, 0, 0, 1372, 1373, 7, 8, 0, 0, 1373, 1374, + 7, 7, 0, 0, 1374, 1375, 7, 5, 0, 0, 1375, 284, 1, 0, 0, 0, 1376, 1377, + 7, 4, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 1379, 7, 7, 0, 0, 1379, 1380, + 7, 5, 0, 0, 1380, 1381, 7, 13, 0, 0, 1381, 286, 1, 0, 0, 0, 1382, 1383, + 7, 4, 0, 0, 1383, 1384, 7, 8, 0, 0, 1384, 1385, 7, 7, 0, 0, 1385, 1386, + 7, 7, 0, 0, 1386, 1387, 7, 18, 0, 0, 1387, 1388, 7, 12, 0, 0, 1388, 288, + 1, 0, 0, 0, 1389, 1390, 7, 4, 0, 0, 1390, 1391, 7, 8, 0, 0, 1391, 1392, + 7, 9, 0, 0, 1392, 1393, 7, 13, 0, 0, 1393, 290, 1, 0, 0, 0, 1394, 1395, + 7, 13, 0, 0, 1395, 1396, 7, 14, 0, 0, 1396, 1397, 7, 19, 0, 0, 1397, 1398, + 7, 5, 0, 0, 1398, 1399, 7, 16, 0, 0, 1399, 1400, 7, 1, 0, 0, 1400, 292, + 1, 0, 0, 0, 1401, 1402, 7, 13, 0, 0, 1402, 1403, 7, 5, 0, 0, 1403, 1404, + 7, 7, 0, 0, 1404, 1405, 7, 5, 0, 0, 1405, 1406, 7, 14, 0, 0, 1406, 1407, + 7, 6, 0, 0, 1407, 294, 1, 0, 0, 0, 1408, 1409, 7, 13, 0, 0, 1409, 1410, + 7, 5, 0, 0, 1410, 1411, 7, 6, 0, 0, 1411, 296, 1, 0, 0, 0, 1412, 1413, + 7, 13, 0, 0, 1413, 1414, 7, 17, 0, 0, 1414, 1415, 7, 18, 0, 0, 1415, 1416, + 7, 10, 0, 0, 1416, 1417, 7, 14, 0, 0, 1417, 298, 1, 0, 0, 0, 1418, 1419, + 7, 13, 0, 0, 1419, 1420, 7, 16, 0, 0, 1420, 1421, 7, 1, 0, 0, 1421, 1422, + 7, 7, 0, 0, 1422, 1423, 7, 7, 0, 0, 1423, 1424, 7, 15, 0, 0, 1424, 1425, + 7, 10, 0, 0, 1425, 1426, 7, 6, 0, 0, 1426, 300, 1, 0, 0, 0, 1427, 1428, + 7, 13, 0, 0, 1428, 1429, 7, 8, 0, 0, 1429, 1430, 7, 16, 0, 0, 1430, 1431, + 7, 5, 0, 0, 1431, 302, 1, 0, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, + 7, 6, 0, 0, 1434, 1435, 7, 1, 0, 0, 1435, 1436, 7, 6, 0, 0, 1436, 1437, + 7, 15, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 304, 1, 0, 0, 0, 1439, 1440, + 7, 13, 0, 0, 1440, 1441, 7, 6, 0, 0, 1441, 1442, 7, 8, 0, 0, 1442, 1443, + 7, 4, 0, 0, 1443, 1444, 7, 1, 0, 0, 1444, 1445, 7, 3, 0, 0, 1445, 1446, + 7, 5, 0, 0, 1446, 306, 1, 0, 0, 0, 1447, 1448, 7, 13, 0, 0, 1448, 1449, + 7, 6, 0, 0, 1449, 1450, 7, 4, 0, 0, 1450, 1451, 7, 18, 0, 0, 1451, 1452, + 7, 14, 0, 0, 1452, 1453, 7, 6, 0, 0, 1453, 308, 1, 0, 0, 0, 1454, 1455, + 7, 13, 0, 0, 1455, 1456, 7, 6, 0, 0, 1456, 1457, 7, 11, 0, 0, 1457, 1458, + 7, 12, 0, 0, 1458, 1459, 7, 5, 0, 0, 1459, 310, 1, 0, 0, 0, 1460, 1461, + 7, 13, 0, 0, 1461, 1462, 7, 18, 0, 0, 1462, 1463, 7, 12, 0, 0, 1463, 1464, + 7, 5, 0, 0, 1464, 1465, 7, 4, 0, 0, 1465, 1466, 7, 18, 0, 0, 1466, 1467, + 7, 13, 0, 0, 1467, 1468, 7, 5, 0, 0, 1468, 1469, 7, 4, 0, 0, 1469, 312, + 1, 0, 0, 0, 1470, 1471, 7, 6, 0, 0, 1471, 1472, 7, 1, 0, 0, 1472, 1473, + 7, 21, 0, 0, 1473, 1474, 7, 7, 0, 0, 1474, 1475, 7, 5, 0, 0, 1475, 314, + 1, 0, 0, 0, 1476, 1477, 7, 6, 0, 0, 1477, 1478, 7, 1, 0, 0, 1478, 1479, + 7, 21, 0, 0, 1479, 1480, 7, 7, 0, 0, 1480, 1481, 7, 5, 0, 0, 1481, 1482, + 7, 13, 0, 0, 1482, 1483, 7, 1, 0, 0, 1483, 1484, 7, 16, 0, 0, 1484, 1485, + 7, 12, 0, 0, 1485, 1486, 7, 7, 0, 0, 1486, 1487, 7, 5, 0, 0, 1487, 316, + 1, 0, 0, 0, 1488, 1489, 7, 6, 0, 0, 1489, 1490, 7, 5, 0, 0, 1490, 1491, + 7, 22, 0, 0, 1491, 1492, 7, 6, 0, 0, 1492, 318, 1, 0, 0, 0, 1493, 1494, + 7, 6, 0, 0, 1494, 1495, 7, 19, 0, 0, 1495, 1496, 7, 5, 0, 0, 1496, 1497, + 7, 10, 0, 0, 1497, 320, 1, 0, 0, 0, 1498, 1499, 7, 6, 0, 0, 1499, 1500, + 7, 15, 0, 0, 1500, 1501, 7, 16, 0, 0, 1501, 1502, 7, 5, 0, 0, 1502, 322, + 1, 0, 0, 0, 1503, 1504, 7, 6, 0, 0, 1504, 1505, 7, 15, 0, 0, 1505, 1506, + 7, 16, 0, 0, 1506, 1507, 7, 5, 0, 0, 1507, 1508, 7, 13, 0, 0, 1508, 1509, + 7, 6, 0, 0, 1509, 1510, 7, 1, 0, 0, 1510, 1511, 7, 16, 0, 0, 1511, 1512, + 7, 12, 0, 0, 1512, 324, 1, 0, 0, 0, 1513, 1514, 7, 6, 0, 0, 1514, 1515, + 7, 15, 0, 0, 1515, 1516, 7, 16, 0, 0, 1516, 1517, 7, 5, 0, 0, 1517, 1518, + 7, 18, 0, 0, 1518, 1519, 7, 18, 0, 0, 1519, 1520, 7, 15, 0, 0, 1520, 1521, + 7, 2, 0, 0, 1521, 326, 1, 0, 0, 0, 1522, 1523, 7, 6, 0, 0, 1523, 1524, + 7, 15, 0, 0, 1524, 1525, 7, 10, 0, 0, 1525, 1526, 7, 11, 0, 0, 1526, 1527, + 7, 15, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 328, + 1, 0, 0, 0, 1530, 1531, 7, 6, 0, 0, 1531, 1532, 7, 8, 0, 0, 1532, 330, + 1, 0, 0, 0, 1533, 1534, 7, 6, 0, 0, 1534, 1535, 7, 8, 0, 0, 1535, 1536, + 7, 25, 0, 0, 1536, 1537, 7, 5, 0, 0, 1537, 1538, 7, 10, 0, 0, 1538, 332, + 1, 0, 0, 0, 1539, 1540, 7, 6, 0, 0, 1540, 1541, 7, 4, 0, 0, 1541, 1542, + 7, 5, 0, 0, 1542, 1543, 7, 1, 0, 0, 1543, 1544, 7, 6, 0, 0, 1544, 334, + 1, 0, 0, 0, 1545, 1546, 7, 6, 0, 0, 1546, 1547, 7, 4, 0, 0, 1547, 1548, + 7, 15, 0, 0, 1548, 1549, 7, 3, 0, 0, 1549, 1550, 7, 3, 0, 0, 1550, 1551, + 7, 5, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 336, 1, 0, 0, 0, 1553, 1554, + 7, 6, 0, 0, 1554, 1555, 7, 4, 0, 0, 1555, 1556, 7, 18, 0, 0, 1556, 1557, + 7, 5, 0, 0, 1557, 338, 1, 0, 0, 0, 1558, 1559, 7, 6, 0, 0, 1559, 1560, + 7, 4, 0, 0, 1560, 1561, 7, 18, 0, 0, 1561, 1562, 7, 10, 0, 0, 1562, 1563, + 7, 14, 0, 0, 1563, 1564, 7, 1, 0, 0, 1564, 1565, 7, 6, 0, 0, 1565, 1566, + 7, 5, 0, 0, 1566, 340, 1, 0, 0, 0, 1567, 1568, 7, 6, 0, 0, 1568, 1569, + 7, 6, 0, 0, 1569, 1570, 7, 7, 0, 0, 1570, 342, 1, 0, 0, 0, 1571, 1572, + 7, 6, 0, 0, 1572, 1573, 7, 18, 0, 0, 1573, 1574, 7, 12, 0, 0, 1574, 1575, + 7, 7, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 344, 1, 0, 0, 0, 1577, 1578, + 7, 6, 0, 0, 1578, 1579, 7, 11, 0, 0, 1579, 1580, 7, 12, 0, 0, 1580, 1581, + 7, 5, 0, 0, 1581, 346, 1, 0, 0, 0, 1582, 1583, 7, 18, 0, 0, 1583, 1584, + 7, 10, 0, 0, 1584, 1585, 7, 21, 0, 0, 1585, 1586, 7, 8, 0, 0, 1586, 1587, + 7, 18, 0, 0, 1587, 1588, 7, 10, 0, 0, 1588, 1589, 7, 2, 0, 0, 1589, 1590, + 7, 5, 0, 0, 1590, 1591, 7, 2, 0, 0, 1591, 348, 1, 0, 0, 0, 1592, 1593, + 7, 18, 0, 0, 1593, 1594, 7, 10, 0, 0, 1594, 1595, 7, 15, 0, 0, 1595, 1596, + 7, 8, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 350, 1, 0, 0, 0, 1598, 1599, + 7, 18, 0, 0, 1599, 1600, 7, 10, 0, 0, 1600, 1601, 7, 7, 0, 0, 1601, 1602, + 7, 8, 0, 0, 1602, 1603, 7, 3, 0, 0, 1603, 1604, 7, 3, 0, 0, 1604, 1605, + 7, 5, 0, 0, 1605, 1606, 7, 2, 0, 0, 1606, 352, 1, 0, 0, 0, 1607, 1608, + 7, 18, 0, 0, 1608, 1609, 7, 10, 0, 0, 1609, 1610, 7, 10, 0, 0, 1610, 1611, + 7, 5, 0, 0, 1611, 1612, 7, 13, 0, 0, 1612, 1613, 7, 6, 0, 0, 1613, 354, + 1, 0, 0, 0, 1614, 1615, 7, 18, 0, 0, 1615, 1616, 7, 12, 0, 0, 1616, 1617, + 7, 2, 0, 0, 1617, 1618, 7, 1, 0, 0, 1618, 1619, 7, 6, 0, 0, 1619, 1620, + 7, 5, 0, 0, 1620, 356, 1, 0, 0, 0, 1621, 1622, 7, 18, 0, 0, 1622, 1623, + 7, 13, 0, 0, 1623, 1624, 7, 5, 0, 0, 1624, 358, 1, 0, 0, 0, 1625, 1626, + 7, 18, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 5, 0, 0, 1628, 1629, + 7, 4, 0, 0, 1629, 360, 1, 0, 0, 0, 1630, 1631, 7, 18, 0, 0, 1631, 1632, + 7, 13, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, + 7, 13, 0, 0, 1635, 362, 1, 0, 0, 0, 1636, 1637, 7, 18, 0, 0, 1637, 1638, + 7, 13, 0, 0, 1638, 1639, 7, 15, 0, 0, 1639, 1640, 7, 10, 0, 0, 1640, 1641, + 7, 3, 0, 0, 1641, 364, 1, 0, 0, 0, 1642, 1643, 7, 18, 0, 0, 1643, 1644, + 7, 18, 0, 0, 1644, 1645, 7, 15, 0, 0, 1645, 1646, 7, 2, 0, 0, 1646, 366, + 1, 0, 0, 0, 1647, 1648, 7, 23, 0, 0, 1648, 1649, 7, 1, 0, 0, 1649, 1650, + 7, 7, 0, 0, 1650, 1651, 7, 18, 0, 0, 1651, 1652, 7, 5, 0, 0, 1652, 1653, + 7, 13, 0, 0, 1653, 368, 1, 0, 0, 0, 1654, 1655, 7, 23, 0, 0, 1655, 1656, + 7, 1, 0, 0, 1656, 1657, 7, 4, 0, 0, 1657, 1658, 7, 14, 0, 0, 1658, 1659, + 7, 19, 0, 0, 1659, 1660, 7, 1, 0, 0, 1660, 1661, 7, 4, 0, 0, 1661, 370, + 1, 0, 0, 0, 1662, 1663, 7, 23, 0, 0, 1663, 1664, 7, 1, 0, 0, 1664, 1665, + 7, 4, 0, 0, 1665, 1666, 7, 15, 0, 0, 1666, 1667, 7, 10, 0, 0, 1667, 1668, + 7, 6, 0, 0, 1668, 372, 1, 0, 0, 0, 1669, 1670, 7, 9, 0, 0, 1670, 1671, + 7, 19, 0, 0, 1671, 1672, 7, 5, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 374, + 1, 0, 0, 0, 1674, 1675, 7, 9, 0, 0, 1675, 1676, 7, 19, 0, 0, 1676, 1677, + 7, 5, 0, 0, 1677, 1678, 7, 4, 0, 0, 1678, 1679, 7, 5, 0, 0, 1679, 376, + 1, 0, 0, 0, 1680, 1681, 7, 9, 0, 0, 1681, 1682, 7, 15, 0, 0, 1682, 1683, + 7, 10, 0, 0, 1683, 1684, 7, 2, 0, 0, 1684, 1685, 7, 8, 0, 0, 1685, 1686, + 7, 9, 0, 0, 1686, 378, 1, 0, 0, 0, 1687, 1688, 7, 9, 0, 0, 1688, 1689, + 7, 15, 0, 0, 1689, 1690, 7, 6, 0, 0, 1690, 1691, 7, 19, 0, 0, 1691, 380, + 1, 0, 0, 0, 1692, 1693, 7, 9, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, + 7, 6, 0, 0, 1695, 1696, 7, 19, 0, 0, 1696, 1697, 7, 15, 0, 0, 1697, 1698, + 7, 10, 0, 0, 1698, 382, 1, 0, 0, 0, 1699, 1700, 7, 9, 0, 0, 1700, 1701, + 7, 4, 0, 0, 1701, 1702, 7, 15, 0, 0, 1702, 1703, 7, 6, 0, 0, 1703, 1704, + 7, 5, 0, 0, 1704, 1705, 7, 6, 0, 0, 1705, 1706, 7, 15, 0, 0, 1706, 1707, + 7, 16, 0, 0, 1707, 1708, 7, 5, 0, 0, 1708, 384, 1, 0, 0, 0, 1709, 1710, + 7, 16, 0, 0, 1710, 1711, 7, 1, 0, 0, 1711, 1712, 7, 6, 0, 0, 1712, 1713, + 7, 5, 0, 0, 1713, 1714, 7, 4, 0, 0, 1714, 1715, 7, 15, 0, 0, 1715, 1716, + 7, 1, 0, 0, 1716, 1717, 7, 7, 0, 0, 1717, 1718, 7, 15, 0, 0, 1718, 1719, + 7, 20, 0, 0, 1719, 1720, 7, 5, 0, 0, 1720, 1721, 7, 2, 0, 0, 1721, 386, + 1, 0, 0, 0, 1722, 1723, 7, 23, 0, 0, 1723, 1724, 7, 15, 0, 0, 1724, 1725, + 7, 5, 0, 0, 1725, 1726, 7, 9, 0, 0, 1726, 388, 1, 0, 0, 0, 1727, 1728, + 5, 59, 0, 0, 1728, 390, 1, 0, 0, 0, 1729, 1730, 5, 39, 0, 0, 1730, 392, + 1, 0, 0, 0, 1731, 1732, 5, 34, 0, 0, 1732, 394, 1, 0, 0, 0, 1733, 1734, + 5, 46, 0, 0, 1734, 396, 1, 0, 0, 0, 1735, 1736, 5, 44, 0, 0, 1736, 398, + 1, 0, 0, 0, 1737, 1738, 5, 40, 0, 0, 1738, 400, 1, 0, 0, 0, 1739, 1740, + 5, 41, 0, 0, 1740, 402, 1, 0, 0, 0, 1741, 1742, 5, 60, 0, 0, 1742, 404, + 1, 0, 0, 0, 1743, 1744, 5, 62, 0, 0, 1744, 406, 1, 0, 0, 0, 1745, 1749, + 3, 1, 0, 0, 1746, 1748, 7, 27, 0, 0, 1747, 1746, 1, 0, 0, 0, 1748, 1751, + 1, 0, 0, 0, 1749, 1747, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 408, + 1, 0, 0, 0, 1751, 1749, 1, 0, 0, 0, 1752, 1756, 3, 1, 0, 0, 1753, 1755, + 7, 28, 0, 0, 1754, 1753, 1, 0, 0, 0, 1755, 1758, 1, 0, 0, 0, 1756, 1754, + 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1759, 1, 0, 0, 0, 1758, 1756, + 1, 0, 0, 0, 1759, 1763, 5, 45, 0, 0, 1760, 1762, 7, 28, 0, 0, 1761, 1760, + 1, 0, 0, 0, 1762, 1765, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1763, 1764, + 1, 0, 0, 0, 1764, 410, 1, 0, 0, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1768, + 7, 29, 0, 0, 1767, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1767, + 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, + 6, 205, 0, 0, 1772, 412, 1, 0, 0, 0, 1773, 1774, 5, 45, 0, 0, 1774, 1775, + 5, 45, 0, 0, 1775, 1779, 5, 32, 0, 0, 1776, 1777, 5, 47, 0, 0, 1777, 1779, + 5, 47, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1779, 1783, + 1, 0, 0, 0, 1780, 1782, 9, 0, 0, 0, 1781, 1780, 1, 0, 0, 0, 1782, 1785, + 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1783, 1781, 1, 0, 0, 0, 1784, 1786, + 1, 0, 0, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1787, 7, 30, 0, 0, 1787, 1788, + 1, 0, 0, 0, 1788, 1789, 6, 206, 0, 0, 1789, 414, 1, 0, 0, 0, 1790, 1791, + 5, 47, 0, 0, 1791, 1792, 5, 42, 0, 0, 1792, 1796, 1, 0, 0, 0, 1793, 1795, + 9, 0, 0, 0, 1794, 1793, 1, 0, 0, 0, 1795, 1798, 1, 0, 0, 0, 1796, 1797, + 1, 0, 0, 0, 1796, 1794, 1, 0, 0, 0, 1797, 1799, 1, 0, 0, 0, 1798, 1796, + 1, 0, 0, 0, 1799, 1800, 5, 42, 0, 0, 1800, 1801, 5, 47, 0, 0, 1801, 1802, + 1, 0, 0, 0, 1802, 1803, 6, 207, 0, 0, 1803, 416, 1, 0, 0, 0, 1804, 1805, + 9, 0, 0, 0, 1805, 418, 1, 0, 0, 0, 8, 0, 1749, 1756, 1763, 1769, 1778, + 1783, 1796, 1, 0, 1, 0, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -706,138 +1011,206 @@ const ( CqlLexerK_ALLOW = 4 CqlLexerK_ALTER = 5 CqlLexerK_AND = 6 - CqlLexerK_APPLY = 7 - CqlLexerK_AS = 8 - CqlLexerK_ASC = 9 - CqlLexerK_ASCII = 10 - CqlLexerK_AUTHORIZE = 11 - CqlLexerK_BATCH = 12 - CqlLexerK_BEGIN = 13 - CqlLexerK_BIGINT = 14 - CqlLexerK_BLOB = 15 - CqlLexerK_BOOLEAN = 16 - CqlLexerK_BY = 17 - CqlLexerK_CALLED = 18 - CqlLexerK_CLUSTERING = 19 - CqlLexerK_COLUMNFAMILY = 20 - CqlLexerK_COMPACT = 21 - CqlLexerK_CONTAINS = 22 - CqlLexerK_COUNT = 23 - CqlLexerK_COUNTER = 24 - CqlLexerK_CREATE = 25 - CqlLexerK_CUSTOM = 26 - CqlLexerK_DATE = 27 - CqlLexerK_DECIMAL = 28 - CqlLexerK_DELETE = 29 - CqlLexerK_DESC = 30 - CqlLexerK_DESCRIBE = 31 - CqlLexerK_DISTINCT = 32 - CqlLexerK_DOUBLE = 33 - CqlLexerK_DROP = 34 - CqlLexerK_ENTRIES = 35 - CqlLexerK_EXECUTE = 36 - CqlLexerK_EXISTS = 37 - CqlLexerK_FILTERING = 38 - CqlLexerK_FINALFUNC = 39 - CqlLexerK_FLOAT = 40 - CqlLexerK_FROM = 41 - CqlLexerK_FROZEN = 42 - CqlLexerK_FULL = 43 - CqlLexerK_FUNCTION = 44 - CqlLexerK_FUNCTIONS = 45 - CqlLexerK_GRANT = 46 - CqlLexerK_IF = 47 - CqlLexerK_IN = 48 - CqlLexerK_INDEX = 49 - CqlLexerK_INET = 50 - CqlLexerK_INFINITY = 51 - CqlLexerK_INITCOND = 52 - CqlLexerK_INPUT = 53 - CqlLexerK_INSERT = 54 - CqlLexerK_INT = 55 - CqlLexerK_INTO = 56 - CqlLexerK_JSON = 57 - CqlLexerK_KEY = 58 - CqlLexerK_KEYS = 59 - CqlLexerK_KEYSPACE = 60 - CqlLexerK_KEYSPACES = 61 - CqlLexerK_LANGUAGE = 62 - CqlLexerK_LIMIT = 63 - CqlLexerK_LIST = 64 - CqlLexerK_LOGIN = 65 - CqlLexerK_MAP = 66 - CqlLexerK_MODIFY = 67 - CqlLexerK_NAN = 68 - CqlLexerK_NOLOGIN = 69 - CqlLexerK_NORECURSIVE = 70 - CqlLexerK_NOSUPERUSER = 71 - CqlLexerK_NOT = 72 - CqlLexerK_NULL = 73 - CqlLexerK_OF = 74 - CqlLexerK_ON = 75 - CqlLexerK_OPTIONS = 76 - CqlLexerK_OR = 77 - CqlLexerK_ORDER = 78 - CqlLexerK_PASSWORD = 79 - CqlLexerK_PERMISSION = 80 - CqlLexerK_PERMISSIONS = 81 - CqlLexerK_PRIMARY = 82 - CqlLexerK_RENAME = 83 - CqlLexerK_REPLACE = 84 - CqlLexerK_RETURNS = 85 - CqlLexerK_REVOKE = 86 - CqlLexerK_ROLE = 87 - CqlLexerK_ROLES = 88 - CqlLexerK_SCHEMA = 89 - CqlLexerK_SELECT = 90 - CqlLexerK_SET = 91 - CqlLexerK_SFUNC = 92 - CqlLexerK_SMALLINT = 93 - CqlLexerK_STATIC = 94 - CqlLexerK_STORAGE = 95 - CqlLexerK_STYPE = 96 - CqlLexerK_SUPERUSER = 97 - CqlLexerK_TABLE = 98 - CqlLexerK_TEXT = 99 - CqlLexerK_TIME = 100 - CqlLexerK_TIMESTAMP = 101 - CqlLexerK_TIMEUUID = 102 - CqlLexerK_TINYINT = 103 - CqlLexerK_TO = 104 - CqlLexerK_TOKEN = 105 - CqlLexerK_TRIGGER = 106 - CqlLexerK_TRUNCATE = 107 - CqlLexerK_TTL = 108 - CqlLexerK_TUPLE = 109 - CqlLexerK_TYPE = 110 - CqlLexerK_UNLOGGED = 111 - CqlLexerK_UPDATE = 112 - CqlLexerK_USE = 113 - CqlLexerK_USER = 114 - CqlLexerK_USERS = 115 - CqlLexerK_USING = 116 - CqlLexerK_UUID = 117 - CqlLexerK_VALUES = 118 - CqlLexerK_VARCHAR = 119 - CqlLexerK_VARINT = 120 - CqlLexerK_WHERE = 121 - CqlLexerK_WITH = 122 - CqlLexerK_WRITETIME = 123 - CqlLexerK_MATERIALIZED = 124 - CqlLexerK_VIEW = 125 - CqlLexerSEMICOLON = 126 - CqlLexerSQUOTE = 127 - CqlLexerDQUOTE = 128 - CqlLexerDOT = 129 - CqlLexerCOMMA = 130 - CqlLexerL_PAREN = 131 - CqlLexerR_PAREN = 132 - CqlLexerL_ANGLE_BRACKET = 133 - CqlLexerR_ANGLE_BRACKET = 134 - CqlLexerIDENTIFIER = 135 - CqlLexerIDENTIFIER_WITH_HYPHEN = 136 - CqlLexerWS = 137 - CqlLexerCOMMENT = 138 - CqlLexerMULTILINE_COMMENT = 139 - CqlLexerUNKNOWN = 140 + CqlLexerK_ANY = 7 + CqlLexerK_APPLY = 8 + CqlLexerK_ARRAY = 9 + CqlLexerK_AS = 10 + CqlLexerK_ASC = 11 + CqlLexerK_ASCII = 12 + CqlLexerK_ASSERT_ROWS_MODIFIED = 13 + CqlLexerK_AT = 14 + CqlLexerK_AUTHORIZE = 15 + CqlLexerK_BATCH = 16 + CqlLexerK_BEGIN = 17 + CqlLexerK_BETWEEN = 18 + CqlLexerK_BIGINT = 19 + CqlLexerK_BLOB = 20 + CqlLexerK_BOOLEAN = 21 + CqlLexerK_BY = 22 + CqlLexerK_CALLED = 23 + CqlLexerK_CASE = 24 + CqlLexerK_CAST = 25 + CqlLexerK_CLUSTERING = 26 + CqlLexerK_COLLATE = 27 + CqlLexerK_COLUMNFAMILY = 28 + CqlLexerK_COMPACT = 29 + CqlLexerK_CONTAINS = 30 + CqlLexerK_COUNT = 31 + CqlLexerK_COUNTER = 32 + CqlLexerK_CREATE = 33 + CqlLexerK_CROSS = 34 + CqlLexerK_CUBE = 35 + CqlLexerK_CURRENT = 36 + CqlLexerK_CUSTOM = 37 + CqlLexerK_DATE = 38 + CqlLexerK_DECIMAL = 39 + CqlLexerK_DEFAULT = 40 + CqlLexerK_DEFINE = 41 + CqlLexerK_DELETE = 42 + CqlLexerK_DESC = 43 + CqlLexerK_DESCRIBE = 44 + CqlLexerK_DISTINCT = 45 + CqlLexerK_DOUBLE = 46 + CqlLexerK_DROP = 47 + CqlLexerK_ELSE = 48 + CqlLexerK_END = 49 + CqlLexerK_ENTRIES = 50 + CqlLexerK_ENUM = 51 + CqlLexerK_ESCAPE = 52 + CqlLexerK_EXCEPT = 53 + CqlLexerK_EXCLUDE = 54 + CqlLexerK_EXECUTE = 55 + CqlLexerK_EXISTS = 56 + CqlLexerK_EXTRACT = 57 + CqlLexerK_FALSE = 58 + CqlLexerK_FETCH = 59 + CqlLexerK_FILTERING = 60 + CqlLexerK_FINALFUNC = 61 + CqlLexerK_FLOAT = 62 + CqlLexerK_FOLLOWING = 63 + CqlLexerK_FOR = 64 + CqlLexerK_FROM = 65 + CqlLexerK_FROZEN = 66 + CqlLexerK_FULL = 67 + CqlLexerK_FUNCTION = 68 + CqlLexerK_FUNCTIONS = 69 + CqlLexerK_GRANT = 70 + CqlLexerK_GROUP = 71 + CqlLexerK_GROUPING = 72 + CqlLexerK_GROUPS = 73 + CqlLexerK_HASH = 74 + CqlLexerK_HAVING = 75 + CqlLexerK_IF = 76 + CqlLexerK_IGNORE = 77 + CqlLexerK_IN = 78 + CqlLexerK_INDEX = 79 + CqlLexerK_INET = 80 + CqlLexerK_INFINITY = 81 + CqlLexerK_INITCOND = 82 + CqlLexerK_INNER = 83 + CqlLexerK_INPUT = 84 + CqlLexerK_INSERT = 85 + CqlLexerK_INT = 86 + CqlLexerK_INTERSECT = 87 + CqlLexerK_INTERVAL = 88 + CqlLexerK_INTO = 89 + CqlLexerK_IS = 90 + CqlLexerK_JOIN = 91 + CqlLexerK_JSON = 92 + CqlLexerK_KEY = 93 + CqlLexerK_KEYS = 94 + CqlLexerK_KEYSPACE = 95 + CqlLexerK_KEYSPACES = 96 + CqlLexerK_LANGUAGE = 97 + CqlLexerK_LATERAL = 98 + CqlLexerK_LEFT = 99 + CqlLexerK_LIKE = 100 + CqlLexerK_LIMIT = 101 + CqlLexerK_LIST = 102 + CqlLexerK_LOGIN = 103 + CqlLexerK_LOOKUP = 104 + CqlLexerK_MAP = 105 + CqlLexerK_MERGE = 106 + CqlLexerK_MODIFY = 107 + CqlLexerK_NAN = 108 + CqlLexerK_NATURAL = 109 + CqlLexerK_NEW = 110 + CqlLexerK_NO = 111 + CqlLexerK_NOLOGIN = 112 + CqlLexerK_NORECURSIVE = 113 + CqlLexerK_NOSUPERUSER = 114 + CqlLexerK_NOT = 115 + CqlLexerK_NULL = 116 + CqlLexerK_NULLS = 117 + CqlLexerK_OF = 118 + CqlLexerK_ON = 119 + CqlLexerK_OPTIONS = 120 + CqlLexerK_OR = 121 + CqlLexerK_ORDER = 122 + CqlLexerK_OUTER = 123 + CqlLexerK_OVER = 124 + CqlLexerK_PARTITION = 125 + CqlLexerK_PASSWORD = 126 + CqlLexerK_PERMISSION = 127 + CqlLexerK_PERMISSIONS = 128 + CqlLexerK_PRECEDING = 129 + CqlLexerK_PRIMARY = 130 + CqlLexerK_PROTO = 131 + CqlLexerK_QUALIFY = 132 + CqlLexerK_RANGE = 133 + CqlLexerK_RECURSIVE = 134 + CqlLexerK_RENAME = 135 + CqlLexerK_REPLACE = 136 + CqlLexerK_RESPECT = 137 + CqlLexerK_RETURNS = 138 + CqlLexerK_REVOKE = 139 + CqlLexerK_RIGHT = 140 + CqlLexerK_ROLE = 141 + CqlLexerK_ROLES = 142 + CqlLexerK_ROLLUP = 143 + CqlLexerK_ROWS = 144 + CqlLexerK_SCHEMA = 145 + CqlLexerK_SELECT = 146 + CqlLexerK_SET = 147 + CqlLexerK_SFUNC = 148 + CqlLexerK_SMALLINT = 149 + CqlLexerK_SOME = 150 + CqlLexerK_STATIC = 151 + CqlLexerK_STORAGE = 152 + CqlLexerK_STRUCT = 153 + CqlLexerK_STYPE = 154 + CqlLexerK_SUPERUSER = 155 + CqlLexerK_TABLE = 156 + CqlLexerK_TABLESAMPLE = 157 + CqlLexerK_TEXT = 158 + CqlLexerK_THEN = 159 + CqlLexerK_TIME = 160 + CqlLexerK_TIMESTAMP = 161 + CqlLexerK_TIMEUUID = 162 + CqlLexerK_TINYINT = 163 + CqlLexerK_TO = 164 + CqlLexerK_TOKEN = 165 + CqlLexerK_TREAT = 166 + CqlLexerK_TRIGGER = 167 + CqlLexerK_TRUE = 168 + CqlLexerK_TRUNCATE = 169 + CqlLexerK_TTL = 170 + CqlLexerK_TUPLE = 171 + CqlLexerK_TYPE = 172 + CqlLexerK_UNBOUNDED = 173 + CqlLexerK_UNION = 174 + CqlLexerK_UNLOGGED = 175 + CqlLexerK_UNNEST = 176 + CqlLexerK_UPDATE = 177 + CqlLexerK_USE = 178 + CqlLexerK_USER = 179 + CqlLexerK_USERS = 180 + CqlLexerK_USING = 181 + CqlLexerK_UUID = 182 + CqlLexerK_VALUES = 183 + CqlLexerK_VARCHAR = 184 + CqlLexerK_VARINT = 185 + CqlLexerK_WHEN = 186 + CqlLexerK_WHERE = 187 + CqlLexerK_WINDOW = 188 + CqlLexerK_WITH = 189 + CqlLexerK_WITHIN = 190 + CqlLexerK_WRITETIME = 191 + CqlLexerK_MATERIALIZED = 192 + CqlLexerK_VIEW = 193 + CqlLexerSEMICOLON = 194 + CqlLexerSQUOTE = 195 + CqlLexerDQUOTE = 196 + CqlLexerDOT = 197 + CqlLexerCOMMA = 198 + CqlLexerL_PAREN = 199 + CqlLexerR_PAREN = 200 + CqlLexerL_ANGLE_BRACKET = 201 + CqlLexerR_ANGLE_BRACKET = 202 + CqlLexerIDENTIFIER = 203 + CqlLexerIDENTIFIER_WITH_HYPHEN = 204 + CqlLexerWS = 205 + CqlLexerCOMMENT = 206 + CqlLexerMULTILINE_COMMENT = 207 + CqlLexerUNKNOWN = 208 ) diff --git a/translator/cqlparser/cql_parser.go b/translator/cqlparser/cql_parser.go index bab7fb4..6554e87 100644 --- a/translator/cqlparser/cql_parser.go +++ b/translator/cqlparser/cql_parser.go @@ -48,49 +48,71 @@ func cqlparserParserInit() { staticData := &CqlParserParserStaticData staticData.LiteralNames = []string{ "", "'ADD'", "'AGGREGATE'", "'ALL'", "'ALLOW'", "'ALTER'", "'AND'", - "'APPLY'", "'AS'", "'ASC'", "'ASCII'", "'AUTHORIZE'", "'BATCH'", "'BEGIN'", - "'BIGINT'", "'BLOB'", "'BOOLEAN'", "'BY'", "'CALLED'", "'CLUSTERING'", - "'COLUMNFAMILY'", "'COMPACT'", "'CONTAINS'", "'COUNT'", "'COUNTER'", - "'CREATE'", "'CUSTOM'", "'DATE'", "'DECIMAL'", "'DELETE'", "'DESC'", - "'DESCRIBE'", "'DISTINCT'", "'DOUBLE'", "'DROP'", "'ENTRIES'", "'EXECUTE'", - "'EXISTS'", "'FILTERING'", "'FINALFUNC'", "'FLOAT'", "'FROM'", "'FROZEN'", - "'FULL'", "'FUNCTION'", "'FUNCTIONS'", "'GRANT'", "'IF'", "'IN'", "'INDEX'", - "'INET'", "'INFINITY'", "'INITCOND'", "'INPUT'", "'INSERT'", "'INT'", - "'INTO'", "'JSON'", "'KEY'", "'KEYS'", "'KEYSPACE'", "'KEYSPACES'", - "'LANGUAGE'", "'LIMIT'", "'LIST'", "'LOGIN'", "'MAP'", "'MODIFY'", "'NAN'", - "'NOLOGIN'", "'NORECURSIVE'", "'NOSUPERUSER'", "'NOT'", "'NULL'", "'OF'", - "'ON'", "'OPTIONS'", "'OR'", "'ORDER'", "'PASSWORD'", "'PERMISSION'", - "'PERMISSIONS'", "'PRIMARY'", "'RENAME'", "'REPLACE'", "'RETURNS'", - "'REVOKE'", "'ROLE'", "'ROLES'", "'SCHEMA'", "'SELECT'", "'SET'", "'SFUNC'", - "'SMALLINT'", "'STATIC'", "'STORAGE'", "'STYPE'", "'SUPERUSER'", "'TABLE'", - "'TEXT'", "'TIME'", "'TIMESTAMP'", "'TIMEUUID'", "'TINYINT'", "'TO'", - "'TOKEN'", "'TRIGGER'", "'TRUNCATE'", "'TTL'", "'TUPLE'", "'TYPE'", - "'UNLOGGED'", "'UPDATE'", "'USE'", "'USER'", "'USERS'", "'USING'", "'UUID'", - "'VALUES'", "'VARCHAR'", "'VARINT'", "'WHERE'", "'WITH'", "'WRITETIME'", + "'ANY'", "'APPLY'", "'ARRAY'", "'AS'", "'ASC'", "'ASCII'", "'ASSERT_ROWS_MODIFIED'", + "'AT'", "'AUTHORIZE'", "'BATCH'", "'BEGIN'", "'BETWEEN'", "'BIGINT'", + "'BLOB'", "'BOOLEAN'", "'BY'", "'CALLED'", "'CASE'", "'CAST'", "'CLUSTERING'", + "'COLLATE'", "'COLUMNFAMILY'", "'COMPACT'", "'CONTAINS'", "'COUNT'", + "'COUNTER'", "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CUSTOM'", + "'DATE'", "'DECIMAL'", "'DEFAULT'", "'DEFINE'", "'DELETE'", "'DESC'", + "'DESCRIBE'", "'DISTINCT'", "'DOUBLE'", "'DROP'", "'ELSE'", "'END'", + "'ENTRIES'", "'ENUM'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", + "'EXISTS'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTERING'", "'FINALFUNC'", + "'FLOAT'", "'FOLLOWING'", "'FOR'", "'FROM'", "'FROZEN'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRANT'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", + "'HAVING'", "'IF'", "'IGNORE'", "'IN'", "'INDEX'", "'INET'", "'INFINITY'", + "'INITCOND'", "'INNER'", "'INPUT'", "'INSERT'", "'INT'", "'INTERSECT'", + "'INTERVAL'", "'INTO'", "'IS'", "'JOIN'", "'JSON'", "'KEY'", "'KEYS'", + "'KEYSPACE'", "'KEYSPACES'", "'LANGUAGE'", "'LATERAL'", "'LEFT'", "'LIKE'", + "'LIMIT'", "'LIST'", "'LOGIN'", "'LOOKUP'", "'MAP'", "'MERGE'", "'MODIFY'", + "'NAN'", "'NATURAL'", "'NEW'", "'NO'", "'NOLOGIN'", "'NORECURSIVE'", + "'NOSUPERUSER'", "'NOT'", "'NULL'", "'NULLS'", "'OF'", "'ON'", "'OPTIONS'", + "'OR'", "'ORDER'", "'OUTER'", "'OVER'", "'PARTITION'", "'PASSWORD'", + "'PERMISSION'", "'PERMISSIONS'", "'PRECEDING'", "'PRIMARY'", "'PROTO'", + "'QUALIFY'", "'RANGE'", "'RECURSIVE'", "'RENAME'", "'REPLACE'", "'RESPECT'", + "'RETURNS'", "'REVOKE'", "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLUP'", + "'ROWS'", "'SCHEMA'", "'SELECT'", "'SET'", "'SFUNC'", "'SMALLINT'", + "'SOME'", "'STATIC'", "'STORAGE'", "'STRUCT'", "'STYPE'", "'SUPERUSER'", + "'TABLE'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", "'TIME'", "'TIMESTAMP'", + "'TIMEUUID'", "'TINYINT'", "'TO'", "'TOKEN'", "'TREAT'", "'TRIGGER'", + "'TRUE'", "'TRUNCATE'", "'TTL'", "'TUPLE'", "'TYPE'", "'UNBOUNDED'", + "'UNION'", "'UNLOGGED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", + "'USERS'", "'USING'", "'UUID'", "'VALUES'", "'VARCHAR'", "'VARINT'", + "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", "'WITHIN'", "'WRITETIME'", "'MATERIALIZED'", "'VIEW'", "';'", "'''", "'\"'", "'.'", "','", "'('", "')'", "'<'", "'>'", } staticData.SymbolicNames = []string{ "", "K_ADD", "K_AGGREGATE", "K_ALL", "K_ALLOW", "K_ALTER", "K_AND", - "K_APPLY", "K_AS", "K_ASC", "K_ASCII", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", - "K_BIGINT", "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CLUSTERING", - "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", "K_COUNTER", - "K_CREATE", "K_CUSTOM", "K_DATE", "K_DECIMAL", "K_DELETE", "K_DESC", - "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ENTRIES", "K_EXECUTE", - "K_EXISTS", "K_FILTERING", "K_FINALFUNC", "K_FLOAT", "K_FROM", "K_FROZEN", - "K_FULL", "K_FUNCTION", "K_FUNCTIONS", "K_GRANT", "K_IF", "K_IN", "K_INDEX", - "K_INET", "K_INFINITY", "K_INITCOND", "K_INPUT", "K_INSERT", "K_INT", - "K_INTO", "K_JSON", "K_KEY", "K_KEYS", "K_KEYSPACE", "K_KEYSPACES", - "K_LANGUAGE", "K_LIMIT", "K_LIST", "K_LOGIN", "K_MAP", "K_MODIFY", "K_NAN", - "K_NOLOGIN", "K_NORECURSIVE", "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_OF", - "K_ON", "K_OPTIONS", "K_OR", "K_ORDER", "K_PASSWORD", "K_PERMISSION", - "K_PERMISSIONS", "K_PRIMARY", "K_RENAME", "K_REPLACE", "K_RETURNS", - "K_REVOKE", "K_ROLE", "K_ROLES", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", - "K_SMALLINT", "K_STATIC", "K_STORAGE", "K_STYPE", "K_SUPERUSER", "K_TABLE", - "K_TEXT", "K_TIME", "K_TIMESTAMP", "K_TIMEUUID", "K_TINYINT", "K_TO", - "K_TOKEN", "K_TRIGGER", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", - "K_UNLOGGED", "K_UPDATE", "K_USE", "K_USER", "K_USERS", "K_USING", "K_UUID", - "K_VALUES", "K_VARCHAR", "K_VARINT", "K_WHERE", "K_WITH", "K_WRITETIME", + "K_ANY", "K_APPLY", "K_ARRAY", "K_AS", "K_ASC", "K_ASCII", "K_ASSERT_ROWS_MODIFIED", + "K_AT", "K_AUTHORIZE", "K_BATCH", "K_BEGIN", "K_BETWEEN", "K_BIGINT", + "K_BLOB", "K_BOOLEAN", "K_BY", "K_CALLED", "K_CASE", "K_CAST", "K_CLUSTERING", + "K_COLLATE", "K_COLUMNFAMILY", "K_COMPACT", "K_CONTAINS", "K_COUNT", + "K_COUNTER", "K_CREATE", "K_CROSS", "K_CUBE", "K_CURRENT", "K_CUSTOM", + "K_DATE", "K_DECIMAL", "K_DEFAULT", "K_DEFINE", "K_DELETE", "K_DESC", + "K_DESCRIBE", "K_DISTINCT", "K_DOUBLE", "K_DROP", "K_ELSE", "K_END", + "K_ENTRIES", "K_ENUM", "K_ESCAPE", "K_EXCEPT", "K_EXCLUDE", "K_EXECUTE", + "K_EXISTS", "K_EXTRACT", "K_FALSE", "K_FETCH", "K_FILTERING", "K_FINALFUNC", + "K_FLOAT", "K_FOLLOWING", "K_FOR", "K_FROM", "K_FROZEN", "K_FULL", "K_FUNCTION", + "K_FUNCTIONS", "K_GRANT", "K_GROUP", "K_GROUPING", "K_GROUPS", "K_HASH", + "K_HAVING", "K_IF", "K_IGNORE", "K_IN", "K_INDEX", "K_INET", "K_INFINITY", + "K_INITCOND", "K_INNER", "K_INPUT", "K_INSERT", "K_INT", "K_INTERSECT", + "K_INTERVAL", "K_INTO", "K_IS", "K_JOIN", "K_JSON", "K_KEY", "K_KEYS", + "K_KEYSPACE", "K_KEYSPACES", "K_LANGUAGE", "K_LATERAL", "K_LEFT", "K_LIKE", + "K_LIMIT", "K_LIST", "K_LOGIN", "K_LOOKUP", "K_MAP", "K_MERGE", "K_MODIFY", + "K_NAN", "K_NATURAL", "K_NEW", "K_NO", "K_NOLOGIN", "K_NORECURSIVE", + "K_NOSUPERUSER", "K_NOT", "K_NULL", "K_NULLS", "K_OF", "K_ON", "K_OPTIONS", + "K_OR", "K_ORDER", "K_OUTER", "K_OVER", "K_PARTITION", "K_PASSWORD", + "K_PERMISSION", "K_PERMISSIONS", "K_PRECEDING", "K_PRIMARY", "K_PROTO", + "K_QUALIFY", "K_RANGE", "K_RECURSIVE", "K_RENAME", "K_REPLACE", "K_RESPECT", + "K_RETURNS", "K_REVOKE", "K_RIGHT", "K_ROLE", "K_ROLES", "K_ROLLUP", + "K_ROWS", "K_SCHEMA", "K_SELECT", "K_SET", "K_SFUNC", "K_SMALLINT", + "K_SOME", "K_STATIC", "K_STORAGE", "K_STRUCT", "K_STYPE", "K_SUPERUSER", + "K_TABLE", "K_TABLESAMPLE", "K_TEXT", "K_THEN", "K_TIME", "K_TIMESTAMP", + "K_TIMEUUID", "K_TINYINT", "K_TO", "K_TOKEN", "K_TREAT", "K_TRIGGER", + "K_TRUE", "K_TRUNCATE", "K_TTL", "K_TUPLE", "K_TYPE", "K_UNBOUNDED", + "K_UNION", "K_UNLOGGED", "K_UNNEST", "K_UPDATE", "K_USE", "K_USER", + "K_USERS", "K_USING", "K_UUID", "K_VALUES", "K_VARCHAR", "K_VARINT", + "K_WHEN", "K_WHERE", "K_WINDOW", "K_WITH", "K_WITHIN", "K_WRITETIME", "K_MATERIALIZED", "K_VIEW", "SEMICOLON", "SQUOTE", "DQUOTE", "DOT", "COMMA", "L_PAREN", "R_PAREN", "L_ANGLE_BRACKET", "R_ANGLE_BRACKET", "IDENTIFIER", "IDENTIFIER_WITH_HYPHEN", "WS", "COMMENT", "MULTILINE_COMMENT", @@ -106,7 +128,7 @@ func cqlparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 140, 545, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 208, 545, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, @@ -163,216 +185,218 @@ func cqlparserParserInit() { 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 535, 8, 22, 1, 23, 1, 23, 3, 23, 539, 8, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 0, 0, 26, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, - 48, 50, 0, 5, 2, 0, 24, 24, 111, 111, 12, 0, 10, 10, 14, 16, 24, 24, 27, - 28, 33, 33, 40, 40, 50, 50, 55, 55, 93, 93, 99, 103, 117, 117, 119, 120, - 2, 0, 64, 64, 91, 91, 31, 0, 1, 1, 4, 7, 9, 9, 11, 13, 17, 17, 20, 20, - 25, 25, 29, 31, 34, 36, 41, 41, 43, 43, 46, 49, 51, 51, 54, 54, 56, 56, - 60, 60, 63, 63, 67, 68, 70, 70, 72, 75, 77, 78, 82, 84, 86, 86, 89, 91, - 98, 98, 104, 105, 107, 107, 111, 113, 116, 116, 121, 122, 124, 125, 30, - 0, 2, 3, 8, 8, 10, 10, 14, 16, 18, 19, 21, 24, 26, 28, 32, 33, 37, 40, - 42, 42, 44, 45, 50, 50, 52, 53, 55, 55, 57, 59, 61, 62, 64, 66, 69, 69, - 71, 71, 76, 76, 79, 81, 85, 85, 87, 88, 92, 97, 99, 103, 106, 106, 108, - 110, 114, 115, 117, 120, 123, 123, 634, 0, 52, 1, 0, 0, 0, 2, 60, 1, 0, - 0, 0, 4, 62, 1, 0, 0, 0, 6, 415, 1, 0, 0, 0, 8, 417, 1, 0, 0, 0, 10, 429, - 1, 0, 0, 0, 12, 434, 1, 0, 0, 0, 14, 439, 1, 0, 0, 0, 16, 456, 1, 0, 0, - 0, 18, 458, 1, 0, 0, 0, 20, 466, 1, 0, 0, 0, 22, 471, 1, 0, 0, 0, 24, 475, - 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 483, 1, 0, 0, 0, 30, 487, 1, 0, 0, - 0, 32, 489, 1, 0, 0, 0, 34, 492, 1, 0, 0, 0, 36, 495, 1, 0, 0, 0, 38, 499, - 1, 0, 0, 0, 40, 513, 1, 0, 0, 0, 42, 515, 1, 0, 0, 0, 44, 534, 1, 0, 0, - 0, 46, 538, 1, 0, 0, 0, 48, 540, 1, 0, 0, 0, 50, 542, 1, 0, 0, 0, 52, 54, - 3, 2, 1, 0, 53, 55, 5, 126, 0, 0, 54, 53, 1, 0, 0, 0, 54, 55, 1, 0, 0, - 0, 55, 56, 1, 0, 0, 0, 56, 57, 5, 0, 0, 1, 57, 1, 1, 0, 0, 0, 58, 61, 3, - 4, 2, 0, 59, 61, 3, 6, 3, 0, 60, 58, 1, 0, 0, 0, 60, 59, 1, 0, 0, 0, 61, - 3, 1, 0, 0, 0, 62, 63, 5, 25, 0, 0, 63, 65, 5, 98, 0, 0, 64, 66, 3, 36, - 18, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, - 68, 3, 22, 11, 0, 68, 69, 5, 131, 0, 0, 69, 70, 3, 8, 4, 0, 70, 72, 5, - 132, 0, 0, 71, 73, 3, 42, 21, 0, 72, 71, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, - 73, 5, 1, 0, 0, 0, 74, 75, 5, 113, 0, 0, 75, 416, 3, 24, 12, 0, 76, 77, - 5, 25, 0, 0, 77, 79, 5, 60, 0, 0, 78, 80, 3, 36, 18, 0, 79, 78, 1, 0, 0, - 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 3, 24, 12, 0, 82, 86, - 5, 122, 0, 0, 83, 85, 3, 44, 22, 0, 84, 83, 1, 0, 0, 0, 85, 88, 1, 0, 0, - 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 416, 1, 0, 0, 0, 88, 86, - 1, 0, 0, 0, 89, 90, 5, 5, 0, 0, 90, 91, 5, 60, 0, 0, 91, 92, 3, 24, 12, - 0, 92, 96, 5, 122, 0, 0, 93, 95, 3, 44, 22, 0, 94, 93, 1, 0, 0, 0, 95, - 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 416, 1, 0, - 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 34, 0, 0, 100, 102, 5, 60, 0, 0, - 101, 103, 3, 34, 17, 0, 102, 101, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, - 104, 1, 0, 0, 0, 104, 416, 3, 24, 12, 0, 105, 106, 5, 5, 0, 0, 106, 107, - 5, 98, 0, 0, 107, 111, 3, 22, 11, 0, 108, 110, 3, 44, 22, 0, 109, 108, - 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, - 0, 0, 112, 416, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 5, 34, 0, 0, - 115, 117, 5, 98, 0, 0, 116, 118, 3, 34, 17, 0, 117, 116, 1, 0, 0, 0, 117, - 118, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 416, 3, 22, 11, 0, 120, 122, - 5, 107, 0, 0, 121, 123, 5, 98, 0, 0, 122, 121, 1, 0, 0, 0, 122, 123, 1, - 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 416, 3, 22, 11, 0, 125, 129, 5, 90, - 0, 0, 126, 128, 3, 44, 22, 0, 127, 126, 1, 0, 0, 0, 128, 131, 1, 0, 0, - 0, 129, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 416, 1, 0, 0, 0, 131, - 129, 1, 0, 0, 0, 132, 133, 5, 54, 0, 0, 133, 137, 5, 56, 0, 0, 134, 136, - 3, 44, 22, 0, 135, 134, 1, 0, 0, 0, 136, 139, 1, 0, 0, 0, 137, 135, 1, - 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 416, 1, 0, 0, 0, 139, 137, 1, 0, 0, - 0, 140, 141, 5, 112, 0, 0, 141, 145, 3, 22, 11, 0, 142, 144, 3, 44, 22, - 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, - 146, 1, 0, 0, 0, 146, 416, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 148, 152, - 5, 29, 0, 0, 149, 151, 3, 44, 22, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, - 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 416, 1, 0, 0, - 0, 154, 152, 1, 0, 0, 0, 155, 157, 5, 13, 0, 0, 156, 158, 7, 0, 0, 0, 157, - 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 167, - 5, 12, 0, 0, 160, 162, 3, 44, 22, 0, 161, 160, 1, 0, 0, 0, 162, 165, 1, - 0, 0, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 166, 1, 0, 0, - 0, 165, 163, 1, 0, 0, 0, 166, 168, 5, 126, 0, 0, 167, 163, 1, 0, 0, 0, - 168, 169, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, - 171, 1, 0, 0, 0, 171, 172, 5, 7, 0, 0, 172, 173, 5, 12, 0, 0, 173, 416, - 5, 126, 0, 0, 174, 176, 5, 25, 0, 0, 175, 177, 5, 26, 0, 0, 176, 175, 1, - 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 182, 5, 49, 0, - 0, 179, 181, 3, 44, 22, 0, 180, 179, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, - 182, 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 416, 1, 0, 0, 0, 184, - 182, 1, 0, 0, 0, 185, 186, 5, 34, 0, 0, 186, 188, 5, 49, 0, 0, 187, 189, - 3, 34, 17, 0, 188, 187, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 193, 1, - 0, 0, 0, 190, 192, 3, 44, 22, 0, 191, 190, 1, 0, 0, 0, 192, 195, 1, 0, - 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 416, 1, 0, 0, 0, - 195, 193, 1, 0, 0, 0, 196, 197, 5, 25, 0, 0, 197, 198, 5, 124, 0, 0, 198, - 200, 5, 125, 0, 0, 199, 201, 3, 36, 18, 0, 200, 199, 1, 0, 0, 0, 200, 201, - 1, 0, 0, 0, 201, 205, 1, 0, 0, 0, 202, 204, 3, 44, 22, 0, 203, 202, 1, - 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, - 0, 206, 416, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 5, 0, 0, 209, - 210, 5, 124, 0, 0, 210, 214, 5, 125, 0, 0, 211, 213, 3, 44, 22, 0, 212, - 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, - 1, 0, 0, 0, 215, 416, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 218, 5, 34, - 0, 0, 218, 219, 5, 124, 0, 0, 219, 221, 5, 125, 0, 0, 220, 222, 3, 34, - 17, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 226, 1, 0, 0, 0, - 223, 225, 3, 44, 22, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, - 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 416, 1, 0, 0, 0, 228, 226, - 1, 0, 0, 0, 229, 230, 5, 25, 0, 0, 230, 232, 5, 87, 0, 0, 231, 233, 3, - 36, 18, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 237, 1, 0, - 0, 0, 234, 236, 3, 44, 22, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, - 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 416, 1, 0, 0, 0, 239, - 237, 1, 0, 0, 0, 240, 241, 5, 5, 0, 0, 241, 245, 5, 87, 0, 0, 242, 244, - 3, 44, 22, 0, 243, 242, 1, 0, 0, 0, 244, 247, 1, 0, 0, 0, 245, 243, 1, - 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 416, 1, 0, 0, 0, 247, 245, 1, 0, 0, - 0, 248, 249, 5, 34, 0, 0, 249, 253, 5, 87, 0, 0, 250, 252, 3, 44, 22, 0, - 251, 250, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 253, - 254, 1, 0, 0, 0, 254, 416, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 256, 260, - 5, 46, 0, 0, 257, 259, 3, 44, 22, 0, 258, 257, 1, 0, 0, 0, 259, 262, 1, - 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 416, 1, 0, 0, - 0, 262, 260, 1, 0, 0, 0, 263, 267, 5, 86, 0, 0, 264, 266, 3, 44, 22, 0, - 265, 264, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, - 268, 1, 0, 0, 0, 268, 416, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 274, - 5, 64, 0, 0, 271, 273, 3, 44, 22, 0, 272, 271, 1, 0, 0, 0, 273, 276, 1, - 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 416, 1, 0, 0, - 0, 276, 274, 1, 0, 0, 0, 277, 278, 5, 25, 0, 0, 278, 282, 5, 114, 0, 0, - 279, 281, 3, 44, 22, 0, 280, 279, 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, - 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 416, 1, 0, 0, 0, 284, 282, - 1, 0, 0, 0, 285, 286, 5, 5, 0, 0, 286, 290, 5, 114, 0, 0, 287, 289, 3, - 44, 22, 0, 288, 287, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 288, 1, 0, - 0, 0, 290, 291, 1, 0, 0, 0, 291, 416, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, - 293, 294, 5, 34, 0, 0, 294, 298, 5, 114, 0, 0, 295, 297, 3, 44, 22, 0, - 296, 295, 1, 0, 0, 0, 297, 300, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, - 299, 1, 0, 0, 0, 299, 416, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 304, - 5, 25, 0, 0, 302, 303, 5, 77, 0, 0, 303, 305, 5, 84, 0, 0, 304, 302, 1, - 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 5, 44, 0, - 0, 307, 309, 3, 36, 18, 0, 308, 307, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, - 309, 313, 1, 0, 0, 0, 310, 312, 3, 44, 22, 0, 311, 310, 1, 0, 0, 0, 312, - 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, - 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 8, 0, 0, 317, 321, 5, 127, - 0, 0, 318, 320, 3, 44, 22, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, - 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, - 321, 1, 0, 0, 0, 324, 325, 5, 126, 0, 0, 325, 416, 5, 127, 0, 0, 326, 327, - 5, 34, 0, 0, 327, 329, 5, 44, 0, 0, 328, 330, 3, 34, 17, 0, 329, 328, 1, - 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, 333, 3, 44, 22, - 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, - 335, 1, 0, 0, 0, 335, 416, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 340, - 5, 25, 0, 0, 338, 339, 5, 77, 0, 0, 339, 341, 5, 84, 0, 0, 340, 338, 1, - 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 5, 2, 0, - 0, 343, 345, 3, 36, 18, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, - 345, 349, 1, 0, 0, 0, 346, 348, 3, 44, 22, 0, 347, 346, 1, 0, 0, 0, 348, - 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 416, - 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 34, 0, 0, 353, 355, 5, 2, - 0, 0, 354, 356, 3, 34, 17, 0, 355, 354, 1, 0, 0, 0, 355, 356, 1, 0, 0, - 0, 356, 360, 1, 0, 0, 0, 357, 359, 3, 44, 22, 0, 358, 357, 1, 0, 0, 0, - 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, - 416, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 25, 0, 0, 364, 366, - 5, 110, 0, 0, 365, 367, 3, 36, 18, 0, 366, 365, 1, 0, 0, 0, 366, 367, 1, - 0, 0, 0, 367, 371, 1, 0, 0, 0, 368, 370, 3, 44, 22, 0, 369, 368, 1, 0, - 0, 0, 370, 373, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, - 372, 416, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 374, 375, 5, 5, 0, 0, 375, - 379, 5, 110, 0, 0, 376, 378, 3, 44, 22, 0, 377, 376, 1, 0, 0, 0, 378, 381, - 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 416, 1, 0, - 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 34, 0, 0, 383, 385, 5, 110, 0, - 0, 384, 386, 3, 34, 17, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, - 386, 390, 1, 0, 0, 0, 387, 389, 3, 44, 22, 0, 388, 387, 1, 0, 0, 0, 389, - 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 416, - 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 394, 5, 25, 0, 0, 394, 396, 5, 106, - 0, 0, 395, 397, 3, 36, 18, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, 0, 0, - 0, 397, 401, 1, 0, 0, 0, 398, 400, 3, 44, 22, 0, 399, 398, 1, 0, 0, 0, - 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, - 416, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 405, 5, 34, 0, 0, 405, 407, - 5, 106, 0, 0, 406, 408, 3, 34, 17, 0, 407, 406, 1, 0, 0, 0, 407, 408, 1, - 0, 0, 0, 408, 412, 1, 0, 0, 0, 409, 411, 3, 44, 22, 0, 410, 409, 1, 0, - 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, - 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 74, 1, 0, 0, 0, 415, 76, - 1, 0, 0, 0, 415, 89, 1, 0, 0, 0, 415, 99, 1, 0, 0, 0, 415, 105, 1, 0, 0, - 0, 415, 114, 1, 0, 0, 0, 415, 120, 1, 0, 0, 0, 415, 125, 1, 0, 0, 0, 415, - 132, 1, 0, 0, 0, 415, 140, 1, 0, 0, 0, 415, 148, 1, 0, 0, 0, 415, 155, - 1, 0, 0, 0, 415, 174, 1, 0, 0, 0, 415, 185, 1, 0, 0, 0, 415, 196, 1, 0, - 0, 0, 415, 208, 1, 0, 0, 0, 415, 217, 1, 0, 0, 0, 415, 229, 1, 0, 0, 0, - 415, 240, 1, 0, 0, 0, 415, 248, 1, 0, 0, 0, 415, 256, 1, 0, 0, 0, 415, - 263, 1, 0, 0, 0, 415, 270, 1, 0, 0, 0, 415, 277, 1, 0, 0, 0, 415, 285, - 1, 0, 0, 0, 415, 293, 1, 0, 0, 0, 415, 301, 1, 0, 0, 0, 415, 326, 1, 0, - 0, 0, 415, 337, 1, 0, 0, 0, 415, 352, 1, 0, 0, 0, 415, 363, 1, 0, 0, 0, - 415, 374, 1, 0, 0, 0, 415, 382, 1, 0, 0, 0, 415, 393, 1, 0, 0, 0, 415, - 404, 1, 0, 0, 0, 416, 7, 1, 0, 0, 0, 417, 422, 3, 10, 5, 0, 418, 419, 5, - 130, 0, 0, 419, 421, 3, 10, 5, 0, 420, 418, 1, 0, 0, 0, 421, 424, 1, 0, - 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 1, 0, 0, 0, - 424, 422, 1, 0, 0, 0, 425, 426, 5, 130, 0, 0, 426, 428, 3, 12, 6, 0, 427, - 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 9, 1, 0, 0, 0, 429, 430, 3, - 20, 10, 0, 430, 432, 3, 30, 15, 0, 431, 433, 3, 32, 16, 0, 432, 431, 1, - 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 11, 1, 0, 0, 0, 434, 435, 3, 32, 16, - 0, 435, 436, 5, 131, 0, 0, 436, 437, 3, 14, 7, 0, 437, 438, 5, 132, 0, - 0, 438, 13, 1, 0, 0, 0, 439, 442, 3, 16, 8, 0, 440, 441, 5, 130, 0, 0, - 441, 443, 3, 18, 9, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, - 15, 1, 0, 0, 0, 444, 457, 3, 20, 10, 0, 445, 446, 5, 131, 0, 0, 446, 451, - 3, 20, 10, 0, 447, 448, 5, 130, 0, 0, 448, 450, 3, 20, 10, 0, 449, 447, + 48, 50, 0, 5, 2, 0, 32, 32, 175, 175, 13, 0, 12, 12, 19, 21, 32, 32, 38, + 39, 46, 46, 62, 62, 80, 80, 86, 86, 149, 149, 158, 158, 160, 163, 182, + 182, 184, 185, 2, 0, 102, 102, 147, 147, 37, 0, 1, 1, 3, 11, 13, 18, 22, + 22, 24, 25, 27, 28, 30, 30, 33, 36, 40, 45, 47, 59, 63, 65, 67, 67, 70, + 79, 81, 81, 83, 83, 85, 85, 87, 91, 95, 95, 98, 101, 104, 104, 106, 111, + 113, 113, 115, 119, 121, 125, 129, 137, 139, 140, 143, 147, 150, 150, 153, + 153, 156, 157, 159, 159, 164, 166, 168, 169, 173, 178, 181, 181, 186, 190, + 192, 193, 36, 0, 2, 2, 12, 12, 19, 21, 23, 23, 26, 26, 29, 29, 31, 32, + 37, 39, 46, 46, 60, 62, 66, 66, 68, 69, 80, 80, 82, 82, 84, 84, 86, 86, + 92, 94, 96, 97, 102, 103, 105, 105, 112, 112, 114, 114, 120, 120, 126, + 128, 138, 138, 141, 142, 148, 149, 151, 152, 154, 155, 158, 158, 160, 163, + 167, 167, 170, 172, 179, 180, 182, 185, 191, 191, 634, 0, 52, 1, 0, 0, + 0, 2, 60, 1, 0, 0, 0, 4, 62, 1, 0, 0, 0, 6, 415, 1, 0, 0, 0, 8, 417, 1, + 0, 0, 0, 10, 429, 1, 0, 0, 0, 12, 434, 1, 0, 0, 0, 14, 439, 1, 0, 0, 0, + 16, 456, 1, 0, 0, 0, 18, 458, 1, 0, 0, 0, 20, 466, 1, 0, 0, 0, 22, 471, + 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 483, 1, 0, 0, + 0, 30, 487, 1, 0, 0, 0, 32, 489, 1, 0, 0, 0, 34, 492, 1, 0, 0, 0, 36, 495, + 1, 0, 0, 0, 38, 499, 1, 0, 0, 0, 40, 513, 1, 0, 0, 0, 42, 515, 1, 0, 0, + 0, 44, 534, 1, 0, 0, 0, 46, 538, 1, 0, 0, 0, 48, 540, 1, 0, 0, 0, 50, 542, + 1, 0, 0, 0, 52, 54, 3, 2, 1, 0, 53, 55, 5, 194, 0, 0, 54, 53, 1, 0, 0, + 0, 54, 55, 1, 0, 0, 0, 55, 56, 1, 0, 0, 0, 56, 57, 5, 0, 0, 1, 57, 1, 1, + 0, 0, 0, 58, 61, 3, 4, 2, 0, 59, 61, 3, 6, 3, 0, 60, 58, 1, 0, 0, 0, 60, + 59, 1, 0, 0, 0, 61, 3, 1, 0, 0, 0, 62, 63, 5, 33, 0, 0, 63, 65, 5, 156, + 0, 0, 64, 66, 3, 36, 18, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, + 67, 1, 0, 0, 0, 67, 68, 3, 22, 11, 0, 68, 69, 5, 199, 0, 0, 69, 70, 3, + 8, 4, 0, 70, 72, 5, 200, 0, 0, 71, 73, 3, 42, 21, 0, 72, 71, 1, 0, 0, 0, + 72, 73, 1, 0, 0, 0, 73, 5, 1, 0, 0, 0, 74, 75, 5, 178, 0, 0, 75, 416, 3, + 24, 12, 0, 76, 77, 5, 33, 0, 0, 77, 79, 5, 95, 0, 0, 78, 80, 3, 36, 18, + 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, + 3, 24, 12, 0, 82, 86, 5, 189, 0, 0, 83, 85, 3, 44, 22, 0, 84, 83, 1, 0, + 0, 0, 85, 88, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 416, + 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 89, 90, 5, 5, 0, 0, 90, 91, 5, 95, 0, 0, + 91, 92, 3, 24, 12, 0, 92, 96, 5, 189, 0, 0, 93, 95, 3, 44, 22, 0, 94, 93, + 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, + 97, 416, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 47, 0, 0, 100, 102, + 5, 95, 0, 0, 101, 103, 3, 34, 17, 0, 102, 101, 1, 0, 0, 0, 102, 103, 1, + 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 416, 3, 24, 12, 0, 105, 106, 5, 5, + 0, 0, 106, 107, 5, 156, 0, 0, 107, 111, 3, 22, 11, 0, 108, 110, 3, 44, + 22, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, + 111, 112, 1, 0, 0, 0, 112, 416, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, + 115, 5, 47, 0, 0, 115, 117, 5, 156, 0, 0, 116, 118, 3, 34, 17, 0, 117, + 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 416, + 3, 22, 11, 0, 120, 122, 5, 169, 0, 0, 121, 123, 5, 156, 0, 0, 122, 121, + 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 416, 3, 22, + 11, 0, 125, 129, 5, 146, 0, 0, 126, 128, 3, 44, 22, 0, 127, 126, 1, 0, + 0, 0, 128, 131, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, + 130, 416, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 132, 133, 5, 85, 0, 0, 133, + 137, 5, 89, 0, 0, 134, 136, 3, 44, 22, 0, 135, 134, 1, 0, 0, 0, 136, 139, + 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 138, 1, 0, 0, 0, 138, 416, 1, 0, + 0, 0, 139, 137, 1, 0, 0, 0, 140, 141, 5, 177, 0, 0, 141, 145, 3, 22, 11, + 0, 142, 144, 3, 44, 22, 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, + 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 416, 1, 0, 0, 0, 147, + 145, 1, 0, 0, 0, 148, 152, 5, 42, 0, 0, 149, 151, 3, 44, 22, 0, 150, 149, + 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, + 0, 0, 153, 416, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 157, 5, 17, 0, 0, + 156, 158, 7, 0, 0, 0, 157, 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, + 159, 1, 0, 0, 0, 159, 167, 5, 16, 0, 0, 160, 162, 3, 44, 22, 0, 161, 160, + 1, 0, 0, 0, 162, 165, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, + 0, 0, 164, 166, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 166, 168, 5, 194, 0, + 0, 167, 163, 1, 0, 0, 0, 168, 169, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, + 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 5, 8, 0, 0, 172, 173, + 5, 16, 0, 0, 173, 416, 5, 194, 0, 0, 174, 176, 5, 33, 0, 0, 175, 177, 5, + 37, 0, 0, 176, 175, 1, 0, 0, 0, 176, 177, 1, 0, 0, 0, 177, 178, 1, 0, 0, + 0, 178, 182, 5, 79, 0, 0, 179, 181, 3, 44, 22, 0, 180, 179, 1, 0, 0, 0, + 181, 184, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, + 416, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 185, 186, 5, 47, 0, 0, 186, 188, + 5, 79, 0, 0, 187, 189, 3, 34, 17, 0, 188, 187, 1, 0, 0, 0, 188, 189, 1, + 0, 0, 0, 189, 193, 1, 0, 0, 0, 190, 192, 3, 44, 22, 0, 191, 190, 1, 0, + 0, 0, 192, 195, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, + 194, 416, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 197, 5, 33, 0, 0, 197, + 198, 5, 192, 0, 0, 198, 200, 5, 193, 0, 0, 199, 201, 3, 36, 18, 0, 200, + 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 205, 1, 0, 0, 0, 202, 204, + 3, 44, 22, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, + 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 416, 1, 0, 0, 0, 207, 205, 1, 0, 0, + 0, 208, 209, 5, 5, 0, 0, 209, 210, 5, 192, 0, 0, 210, 214, 5, 193, 0, 0, + 211, 213, 3, 44, 22, 0, 212, 211, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, + 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 416, 1, 0, 0, 0, 216, 214, + 1, 0, 0, 0, 217, 218, 5, 47, 0, 0, 218, 219, 5, 192, 0, 0, 219, 221, 5, + 193, 0, 0, 220, 222, 3, 34, 17, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, + 0, 0, 222, 226, 1, 0, 0, 0, 223, 225, 3, 44, 22, 0, 224, 223, 1, 0, 0, + 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, + 416, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 230, 5, 33, 0, 0, 230, 232, + 5, 141, 0, 0, 231, 233, 3, 36, 18, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, + 0, 0, 0, 233, 237, 1, 0, 0, 0, 234, 236, 3, 44, 22, 0, 235, 234, 1, 0, + 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, + 238, 416, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 5, 0, 0, 241, + 245, 5, 141, 0, 0, 242, 244, 3, 44, 22, 0, 243, 242, 1, 0, 0, 0, 244, 247, + 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 416, 1, 0, + 0, 0, 247, 245, 1, 0, 0, 0, 248, 249, 5, 47, 0, 0, 249, 253, 5, 141, 0, + 0, 250, 252, 3, 44, 22, 0, 251, 250, 1, 0, 0, 0, 252, 255, 1, 0, 0, 0, + 253, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 416, 1, 0, 0, 0, 255, + 253, 1, 0, 0, 0, 256, 260, 5, 70, 0, 0, 257, 259, 3, 44, 22, 0, 258, 257, + 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, + 0, 0, 261, 416, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 267, 5, 139, 0, + 0, 264, 266, 3, 44, 22, 0, 265, 264, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, + 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 416, 1, 0, 0, 0, 269, + 267, 1, 0, 0, 0, 270, 274, 5, 102, 0, 0, 271, 273, 3, 44, 22, 0, 272, 271, + 1, 0, 0, 0, 273, 276, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 275, 1, 0, + 0, 0, 275, 416, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 277, 278, 5, 33, 0, 0, + 278, 282, 5, 179, 0, 0, 279, 281, 3, 44, 22, 0, 280, 279, 1, 0, 0, 0, 281, + 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 416, + 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 5, 5, 0, 0, 286, 290, 5, 179, + 0, 0, 287, 289, 3, 44, 22, 0, 288, 287, 1, 0, 0, 0, 289, 292, 1, 0, 0, + 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 416, 1, 0, 0, 0, 292, + 290, 1, 0, 0, 0, 293, 294, 5, 47, 0, 0, 294, 298, 5, 179, 0, 0, 295, 297, + 3, 44, 22, 0, 296, 295, 1, 0, 0, 0, 297, 300, 1, 0, 0, 0, 298, 296, 1, + 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 416, 1, 0, 0, 0, 300, 298, 1, 0, 0, + 0, 301, 304, 5, 33, 0, 0, 302, 303, 5, 121, 0, 0, 303, 305, 5, 136, 0, + 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, + 308, 5, 68, 0, 0, 307, 309, 3, 36, 18, 0, 308, 307, 1, 0, 0, 0, 308, 309, + 1, 0, 0, 0, 309, 313, 1, 0, 0, 0, 310, 312, 3, 44, 22, 0, 311, 310, 1, + 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, + 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 10, 0, 0, 317, + 321, 5, 195, 0, 0, 318, 320, 3, 44, 22, 0, 319, 318, 1, 0, 0, 0, 320, 323, + 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, + 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 194, 0, 0, 325, 416, 5, 195, 0, + 0, 326, 327, 5, 47, 0, 0, 327, 329, 5, 68, 0, 0, 328, 330, 3, 34, 17, 0, + 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, + 333, 3, 44, 22, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, + 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 416, 1, 0, 0, 0, 336, 334, 1, 0, + 0, 0, 337, 340, 5, 33, 0, 0, 338, 339, 5, 121, 0, 0, 339, 341, 5, 136, + 0, 0, 340, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, + 342, 344, 5, 2, 0, 0, 343, 345, 3, 36, 18, 0, 344, 343, 1, 0, 0, 0, 344, + 345, 1, 0, 0, 0, 345, 349, 1, 0, 0, 0, 346, 348, 3, 44, 22, 0, 347, 346, + 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, + 0, 0, 350, 416, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 47, 0, 0, + 353, 355, 5, 2, 0, 0, 354, 356, 3, 34, 17, 0, 355, 354, 1, 0, 0, 0, 355, + 356, 1, 0, 0, 0, 356, 360, 1, 0, 0, 0, 357, 359, 3, 44, 22, 0, 358, 357, + 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, + 0, 0, 361, 416, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 33, 0, 0, + 364, 366, 5, 172, 0, 0, 365, 367, 3, 36, 18, 0, 366, 365, 1, 0, 0, 0, 366, + 367, 1, 0, 0, 0, 367, 371, 1, 0, 0, 0, 368, 370, 3, 44, 22, 0, 369, 368, + 1, 0, 0, 0, 370, 373, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 371, 372, 1, 0, + 0, 0, 372, 416, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 374, 375, 5, 5, 0, 0, + 375, 379, 5, 172, 0, 0, 376, 378, 3, 44, 22, 0, 377, 376, 1, 0, 0, 0, 378, + 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 416, + 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 47, 0, 0, 383, 385, 5, 172, + 0, 0, 384, 386, 3, 34, 17, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, + 0, 386, 390, 1, 0, 0, 0, 387, 389, 3, 44, 22, 0, 388, 387, 1, 0, 0, 0, + 389, 392, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, + 416, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 394, 5, 33, 0, 0, 394, 396, + 5, 167, 0, 0, 395, 397, 3, 36, 18, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, + 0, 0, 0, 397, 401, 1, 0, 0, 0, 398, 400, 3, 44, 22, 0, 399, 398, 1, 0, + 0, 0, 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, + 402, 416, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 405, 5, 47, 0, 0, 405, + 407, 5, 167, 0, 0, 406, 408, 3, 34, 17, 0, 407, 406, 1, 0, 0, 0, 407, 408, + 1, 0, 0, 0, 408, 412, 1, 0, 0, 0, 409, 411, 3, 44, 22, 0, 410, 409, 1, + 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, + 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 74, 1, 0, 0, 0, 415, + 76, 1, 0, 0, 0, 415, 89, 1, 0, 0, 0, 415, 99, 1, 0, 0, 0, 415, 105, 1, + 0, 0, 0, 415, 114, 1, 0, 0, 0, 415, 120, 1, 0, 0, 0, 415, 125, 1, 0, 0, + 0, 415, 132, 1, 0, 0, 0, 415, 140, 1, 0, 0, 0, 415, 148, 1, 0, 0, 0, 415, + 155, 1, 0, 0, 0, 415, 174, 1, 0, 0, 0, 415, 185, 1, 0, 0, 0, 415, 196, + 1, 0, 0, 0, 415, 208, 1, 0, 0, 0, 415, 217, 1, 0, 0, 0, 415, 229, 1, 0, + 0, 0, 415, 240, 1, 0, 0, 0, 415, 248, 1, 0, 0, 0, 415, 256, 1, 0, 0, 0, + 415, 263, 1, 0, 0, 0, 415, 270, 1, 0, 0, 0, 415, 277, 1, 0, 0, 0, 415, + 285, 1, 0, 0, 0, 415, 293, 1, 0, 0, 0, 415, 301, 1, 0, 0, 0, 415, 326, + 1, 0, 0, 0, 415, 337, 1, 0, 0, 0, 415, 352, 1, 0, 0, 0, 415, 363, 1, 0, + 0, 0, 415, 374, 1, 0, 0, 0, 415, 382, 1, 0, 0, 0, 415, 393, 1, 0, 0, 0, + 415, 404, 1, 0, 0, 0, 416, 7, 1, 0, 0, 0, 417, 422, 3, 10, 5, 0, 418, 419, + 5, 198, 0, 0, 419, 421, 3, 10, 5, 0, 420, 418, 1, 0, 0, 0, 421, 424, 1, + 0, 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 1, 0, 0, + 0, 424, 422, 1, 0, 0, 0, 425, 426, 5, 198, 0, 0, 426, 428, 3, 12, 6, 0, + 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 9, 1, 0, 0, 0, 429, 430, + 3, 20, 10, 0, 430, 432, 3, 30, 15, 0, 431, 433, 3, 32, 16, 0, 432, 431, + 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 11, 1, 0, 0, 0, 434, 435, 3, 32, + 16, 0, 435, 436, 5, 199, 0, 0, 436, 437, 3, 14, 7, 0, 437, 438, 5, 200, + 0, 0, 438, 13, 1, 0, 0, 0, 439, 442, 3, 16, 8, 0, 440, 441, 5, 198, 0, + 0, 441, 443, 3, 18, 9, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, + 15, 1, 0, 0, 0, 444, 457, 3, 20, 10, 0, 445, 446, 5, 199, 0, 0, 446, 451, + 3, 20, 10, 0, 447, 448, 5, 198, 0, 0, 448, 450, 3, 20, 10, 0, 449, 447, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, - 0, 0, 452, 454, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 455, 5, 132, 0, + 0, 0, 452, 454, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 455, 5, 200, 0, 0, 455, 457, 1, 0, 0, 0, 456, 444, 1, 0, 0, 0, 456, 445, 1, 0, 0, 0, 457, - 17, 1, 0, 0, 0, 458, 463, 3, 20, 10, 0, 459, 460, 5, 130, 0, 0, 460, 462, + 17, 1, 0, 0, 0, 458, 463, 3, 20, 10, 0, 459, 460, 5, 198, 0, 0, 460, 462, 3, 20, 10, 0, 461, 459, 1, 0, 0, 0, 462, 465, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 19, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 466, 467, 3, 28, 14, 0, 467, 21, 1, 0, 0, 0, 468, 469, 3, 24, 12, 0, - 469, 470, 5, 129, 0, 0, 470, 472, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, + 469, 470, 5, 197, 0, 0, 470, 472, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 3, 28, 14, 0, 474, 23, - 1, 0, 0, 0, 475, 476, 3, 26, 13, 0, 476, 25, 1, 0, 0, 0, 477, 480, 5, 136, + 1, 0, 0, 0, 475, 476, 3, 26, 13, 0, 476, 25, 1, 0, 0, 0, 477, 480, 5, 204, 0, 0, 478, 480, 3, 28, 14, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, - 0, 480, 27, 1, 0, 0, 0, 481, 484, 3, 50, 25, 0, 482, 484, 5, 135, 0, 0, + 0, 480, 27, 1, 0, 0, 0, 481, 484, 3, 50, 25, 0, 482, 484, 5, 203, 0, 0, 483, 481, 1, 0, 0, 0, 483, 482, 1, 0, 0, 0, 484, 29, 1, 0, 0, 0, 485, 488, 3, 38, 19, 0, 486, 488, 3, 40, 20, 0, 487, 485, 1, 0, 0, 0, 487, 486, 1, - 0, 0, 0, 488, 31, 1, 0, 0, 0, 489, 490, 5, 82, 0, 0, 490, 491, 5, 58, 0, - 0, 491, 33, 1, 0, 0, 0, 492, 493, 5, 47, 0, 0, 493, 494, 5, 37, 0, 0, 494, - 35, 1, 0, 0, 0, 495, 496, 5, 47, 0, 0, 496, 497, 5, 72, 0, 0, 497, 498, - 5, 37, 0, 0, 498, 37, 1, 0, 0, 0, 499, 500, 7, 1, 0, 0, 500, 39, 1, 0, - 0, 0, 501, 502, 5, 66, 0, 0, 502, 503, 5, 133, 0, 0, 503, 504, 3, 38, 19, - 0, 504, 505, 5, 130, 0, 0, 505, 506, 3, 38, 19, 0, 506, 507, 5, 134, 0, - 0, 507, 514, 1, 0, 0, 0, 508, 509, 7, 2, 0, 0, 509, 510, 5, 133, 0, 0, - 510, 511, 3, 38, 19, 0, 511, 512, 5, 134, 0, 0, 512, 514, 1, 0, 0, 0, 513, - 501, 1, 0, 0, 0, 513, 508, 1, 0, 0, 0, 514, 41, 1, 0, 0, 0, 515, 519, 5, - 122, 0, 0, 516, 518, 3, 44, 22, 0, 517, 516, 1, 0, 0, 0, 518, 521, 1, 0, - 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 43, 1, 0, 0, 0, - 521, 519, 1, 0, 0, 0, 522, 535, 3, 46, 23, 0, 523, 535, 5, 127, 0, 0, 524, - 535, 5, 128, 0, 0, 525, 535, 5, 129, 0, 0, 526, 535, 5, 130, 0, 0, 527, - 535, 5, 131, 0, 0, 528, 535, 5, 132, 0, 0, 529, 535, 5, 133, 0, 0, 530, - 535, 5, 134, 0, 0, 531, 535, 5, 135, 0, 0, 532, 535, 5, 136, 0, 0, 533, - 535, 5, 140, 0, 0, 534, 522, 1, 0, 0, 0, 534, 523, 1, 0, 0, 0, 534, 524, - 1, 0, 0, 0, 534, 525, 1, 0, 0, 0, 534, 526, 1, 0, 0, 0, 534, 527, 1, 0, - 0, 0, 534, 528, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, - 534, 531, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 533, 1, 0, 0, 0, 535, - 45, 1, 0, 0, 0, 536, 539, 3, 48, 24, 0, 537, 539, 3, 50, 25, 0, 538, 536, - 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 47, 1, 0, 0, 0, 540, 541, 7, 3, - 0, 0, 541, 49, 1, 0, 0, 0, 542, 543, 7, 4, 0, 0, 543, 51, 1, 0, 0, 0, 73, - 54, 60, 65, 72, 79, 86, 96, 102, 111, 117, 122, 129, 137, 145, 152, 157, - 163, 169, 176, 182, 188, 193, 200, 205, 214, 221, 226, 232, 237, 245, 253, - 260, 267, 274, 282, 290, 298, 304, 308, 313, 321, 329, 334, 340, 344, 349, - 355, 360, 366, 371, 379, 385, 390, 396, 401, 407, 412, 415, 422, 427, 432, - 442, 451, 456, 463, 471, 479, 483, 487, 513, 519, 534, 538, + 0, 0, 0, 488, 31, 1, 0, 0, 0, 489, 490, 5, 130, 0, 0, 490, 491, 5, 93, + 0, 0, 491, 33, 1, 0, 0, 0, 492, 493, 5, 76, 0, 0, 493, 494, 5, 56, 0, 0, + 494, 35, 1, 0, 0, 0, 495, 496, 5, 76, 0, 0, 496, 497, 5, 115, 0, 0, 497, + 498, 5, 56, 0, 0, 498, 37, 1, 0, 0, 0, 499, 500, 7, 1, 0, 0, 500, 39, 1, + 0, 0, 0, 501, 502, 5, 105, 0, 0, 502, 503, 5, 201, 0, 0, 503, 504, 3, 38, + 19, 0, 504, 505, 5, 198, 0, 0, 505, 506, 3, 38, 19, 0, 506, 507, 5, 202, + 0, 0, 507, 514, 1, 0, 0, 0, 508, 509, 7, 2, 0, 0, 509, 510, 5, 201, 0, + 0, 510, 511, 3, 38, 19, 0, 511, 512, 5, 202, 0, 0, 512, 514, 1, 0, 0, 0, + 513, 501, 1, 0, 0, 0, 513, 508, 1, 0, 0, 0, 514, 41, 1, 0, 0, 0, 515, 519, + 5, 189, 0, 0, 516, 518, 3, 44, 22, 0, 517, 516, 1, 0, 0, 0, 518, 521, 1, + 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 43, 1, 0, 0, + 0, 521, 519, 1, 0, 0, 0, 522, 535, 3, 46, 23, 0, 523, 535, 5, 195, 0, 0, + 524, 535, 5, 196, 0, 0, 525, 535, 5, 197, 0, 0, 526, 535, 5, 198, 0, 0, + 527, 535, 5, 199, 0, 0, 528, 535, 5, 200, 0, 0, 529, 535, 5, 201, 0, 0, + 530, 535, 5, 202, 0, 0, 531, 535, 5, 203, 0, 0, 532, 535, 5, 204, 0, 0, + 533, 535, 5, 208, 0, 0, 534, 522, 1, 0, 0, 0, 534, 523, 1, 0, 0, 0, 534, + 524, 1, 0, 0, 0, 534, 525, 1, 0, 0, 0, 534, 526, 1, 0, 0, 0, 534, 527, + 1, 0, 0, 0, 534, 528, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 530, 1, 0, + 0, 0, 534, 531, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 533, 1, 0, 0, 0, + 535, 45, 1, 0, 0, 0, 536, 539, 3, 48, 24, 0, 537, 539, 3, 50, 25, 0, 538, + 536, 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 47, 1, 0, 0, 0, 540, 541, 7, + 3, 0, 0, 541, 49, 1, 0, 0, 0, 542, 543, 7, 4, 0, 0, 543, 51, 1, 0, 0, 0, + 73, 54, 60, 65, 72, 79, 86, 96, 102, 111, 117, 122, 129, 137, 145, 152, + 157, 163, 169, 176, 182, 188, 193, 200, 205, 214, 221, 226, 232, 237, 245, + 253, 260, 267, 274, 282, 290, 298, 304, 308, 313, 321, 329, 334, 340, 344, + 349, 355, 360, 366, 371, 379, 385, 390, 396, 401, 407, 412, 415, 422, 427, + 432, 442, 451, 456, 463, 471, 479, 483, 487, 513, 519, 534, 538, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -417,140 +441,208 @@ const ( CqlParserK_ALLOW = 4 CqlParserK_ALTER = 5 CqlParserK_AND = 6 - CqlParserK_APPLY = 7 - CqlParserK_AS = 8 - CqlParserK_ASC = 9 - CqlParserK_ASCII = 10 - CqlParserK_AUTHORIZE = 11 - CqlParserK_BATCH = 12 - CqlParserK_BEGIN = 13 - CqlParserK_BIGINT = 14 - CqlParserK_BLOB = 15 - CqlParserK_BOOLEAN = 16 - CqlParserK_BY = 17 - CqlParserK_CALLED = 18 - CqlParserK_CLUSTERING = 19 - CqlParserK_COLUMNFAMILY = 20 - CqlParserK_COMPACT = 21 - CqlParserK_CONTAINS = 22 - CqlParserK_COUNT = 23 - CqlParserK_COUNTER = 24 - CqlParserK_CREATE = 25 - CqlParserK_CUSTOM = 26 - CqlParserK_DATE = 27 - CqlParserK_DECIMAL = 28 - CqlParserK_DELETE = 29 - CqlParserK_DESC = 30 - CqlParserK_DESCRIBE = 31 - CqlParserK_DISTINCT = 32 - CqlParserK_DOUBLE = 33 - CqlParserK_DROP = 34 - CqlParserK_ENTRIES = 35 - CqlParserK_EXECUTE = 36 - CqlParserK_EXISTS = 37 - CqlParserK_FILTERING = 38 - CqlParserK_FINALFUNC = 39 - CqlParserK_FLOAT = 40 - CqlParserK_FROM = 41 - CqlParserK_FROZEN = 42 - CqlParserK_FULL = 43 - CqlParserK_FUNCTION = 44 - CqlParserK_FUNCTIONS = 45 - CqlParserK_GRANT = 46 - CqlParserK_IF = 47 - CqlParserK_IN = 48 - CqlParserK_INDEX = 49 - CqlParserK_INET = 50 - CqlParserK_INFINITY = 51 - CqlParserK_INITCOND = 52 - CqlParserK_INPUT = 53 - CqlParserK_INSERT = 54 - CqlParserK_INT = 55 - CqlParserK_INTO = 56 - CqlParserK_JSON = 57 - CqlParserK_KEY = 58 - CqlParserK_KEYS = 59 - CqlParserK_KEYSPACE = 60 - CqlParserK_KEYSPACES = 61 - CqlParserK_LANGUAGE = 62 - CqlParserK_LIMIT = 63 - CqlParserK_LIST = 64 - CqlParserK_LOGIN = 65 - CqlParserK_MAP = 66 - CqlParserK_MODIFY = 67 - CqlParserK_NAN = 68 - CqlParserK_NOLOGIN = 69 - CqlParserK_NORECURSIVE = 70 - CqlParserK_NOSUPERUSER = 71 - CqlParserK_NOT = 72 - CqlParserK_NULL = 73 - CqlParserK_OF = 74 - CqlParserK_ON = 75 - CqlParserK_OPTIONS = 76 - CqlParserK_OR = 77 - CqlParserK_ORDER = 78 - CqlParserK_PASSWORD = 79 - CqlParserK_PERMISSION = 80 - CqlParserK_PERMISSIONS = 81 - CqlParserK_PRIMARY = 82 - CqlParserK_RENAME = 83 - CqlParserK_REPLACE = 84 - CqlParserK_RETURNS = 85 - CqlParserK_REVOKE = 86 - CqlParserK_ROLE = 87 - CqlParserK_ROLES = 88 - CqlParserK_SCHEMA = 89 - CqlParserK_SELECT = 90 - CqlParserK_SET = 91 - CqlParserK_SFUNC = 92 - CqlParserK_SMALLINT = 93 - CqlParserK_STATIC = 94 - CqlParserK_STORAGE = 95 - CqlParserK_STYPE = 96 - CqlParserK_SUPERUSER = 97 - CqlParserK_TABLE = 98 - CqlParserK_TEXT = 99 - CqlParserK_TIME = 100 - CqlParserK_TIMESTAMP = 101 - CqlParserK_TIMEUUID = 102 - CqlParserK_TINYINT = 103 - CqlParserK_TO = 104 - CqlParserK_TOKEN = 105 - CqlParserK_TRIGGER = 106 - CqlParserK_TRUNCATE = 107 - CqlParserK_TTL = 108 - CqlParserK_TUPLE = 109 - CqlParserK_TYPE = 110 - CqlParserK_UNLOGGED = 111 - CqlParserK_UPDATE = 112 - CqlParserK_USE = 113 - CqlParserK_USER = 114 - CqlParserK_USERS = 115 - CqlParserK_USING = 116 - CqlParserK_UUID = 117 - CqlParserK_VALUES = 118 - CqlParserK_VARCHAR = 119 - CqlParserK_VARINT = 120 - CqlParserK_WHERE = 121 - CqlParserK_WITH = 122 - CqlParserK_WRITETIME = 123 - CqlParserK_MATERIALIZED = 124 - CqlParserK_VIEW = 125 - CqlParserSEMICOLON = 126 - CqlParserSQUOTE = 127 - CqlParserDQUOTE = 128 - CqlParserDOT = 129 - CqlParserCOMMA = 130 - CqlParserL_PAREN = 131 - CqlParserR_PAREN = 132 - CqlParserL_ANGLE_BRACKET = 133 - CqlParserR_ANGLE_BRACKET = 134 - CqlParserIDENTIFIER = 135 - CqlParserIDENTIFIER_WITH_HYPHEN = 136 - CqlParserWS = 137 - CqlParserCOMMENT = 138 - CqlParserMULTILINE_COMMENT = 139 - CqlParserUNKNOWN = 140 + CqlParserK_ANY = 7 + CqlParserK_APPLY = 8 + CqlParserK_ARRAY = 9 + CqlParserK_AS = 10 + CqlParserK_ASC = 11 + CqlParserK_ASCII = 12 + CqlParserK_ASSERT_ROWS_MODIFIED = 13 + CqlParserK_AT = 14 + CqlParserK_AUTHORIZE = 15 + CqlParserK_BATCH = 16 + CqlParserK_BEGIN = 17 + CqlParserK_BETWEEN = 18 + CqlParserK_BIGINT = 19 + CqlParserK_BLOB = 20 + CqlParserK_BOOLEAN = 21 + CqlParserK_BY = 22 + CqlParserK_CALLED = 23 + CqlParserK_CASE = 24 + CqlParserK_CAST = 25 + CqlParserK_CLUSTERING = 26 + CqlParserK_COLLATE = 27 + CqlParserK_COLUMNFAMILY = 28 + CqlParserK_COMPACT = 29 + CqlParserK_CONTAINS = 30 + CqlParserK_COUNT = 31 + CqlParserK_COUNTER = 32 + CqlParserK_CREATE = 33 + CqlParserK_CROSS = 34 + CqlParserK_CUBE = 35 + CqlParserK_CURRENT = 36 + CqlParserK_CUSTOM = 37 + CqlParserK_DATE = 38 + CqlParserK_DECIMAL = 39 + CqlParserK_DEFAULT = 40 + CqlParserK_DEFINE = 41 + CqlParserK_DELETE = 42 + CqlParserK_DESC = 43 + CqlParserK_DESCRIBE = 44 + CqlParserK_DISTINCT = 45 + CqlParserK_DOUBLE = 46 + CqlParserK_DROP = 47 + CqlParserK_ELSE = 48 + CqlParserK_END = 49 + CqlParserK_ENTRIES = 50 + CqlParserK_ENUM = 51 + CqlParserK_ESCAPE = 52 + CqlParserK_EXCEPT = 53 + CqlParserK_EXCLUDE = 54 + CqlParserK_EXECUTE = 55 + CqlParserK_EXISTS = 56 + CqlParserK_EXTRACT = 57 + CqlParserK_FALSE = 58 + CqlParserK_FETCH = 59 + CqlParserK_FILTERING = 60 + CqlParserK_FINALFUNC = 61 + CqlParserK_FLOAT = 62 + CqlParserK_FOLLOWING = 63 + CqlParserK_FOR = 64 + CqlParserK_FROM = 65 + CqlParserK_FROZEN = 66 + CqlParserK_FULL = 67 + CqlParserK_FUNCTION = 68 + CqlParserK_FUNCTIONS = 69 + CqlParserK_GRANT = 70 + CqlParserK_GROUP = 71 + CqlParserK_GROUPING = 72 + CqlParserK_GROUPS = 73 + CqlParserK_HASH = 74 + CqlParserK_HAVING = 75 + CqlParserK_IF = 76 + CqlParserK_IGNORE = 77 + CqlParserK_IN = 78 + CqlParserK_INDEX = 79 + CqlParserK_INET = 80 + CqlParserK_INFINITY = 81 + CqlParserK_INITCOND = 82 + CqlParserK_INNER = 83 + CqlParserK_INPUT = 84 + CqlParserK_INSERT = 85 + CqlParserK_INT = 86 + CqlParserK_INTERSECT = 87 + CqlParserK_INTERVAL = 88 + CqlParserK_INTO = 89 + CqlParserK_IS = 90 + CqlParserK_JOIN = 91 + CqlParserK_JSON = 92 + CqlParserK_KEY = 93 + CqlParserK_KEYS = 94 + CqlParserK_KEYSPACE = 95 + CqlParserK_KEYSPACES = 96 + CqlParserK_LANGUAGE = 97 + CqlParserK_LATERAL = 98 + CqlParserK_LEFT = 99 + CqlParserK_LIKE = 100 + CqlParserK_LIMIT = 101 + CqlParserK_LIST = 102 + CqlParserK_LOGIN = 103 + CqlParserK_LOOKUP = 104 + CqlParserK_MAP = 105 + CqlParserK_MERGE = 106 + CqlParserK_MODIFY = 107 + CqlParserK_NAN = 108 + CqlParserK_NATURAL = 109 + CqlParserK_NEW = 110 + CqlParserK_NO = 111 + CqlParserK_NOLOGIN = 112 + CqlParserK_NORECURSIVE = 113 + CqlParserK_NOSUPERUSER = 114 + CqlParserK_NOT = 115 + CqlParserK_NULL = 116 + CqlParserK_NULLS = 117 + CqlParserK_OF = 118 + CqlParserK_ON = 119 + CqlParserK_OPTIONS = 120 + CqlParserK_OR = 121 + CqlParserK_ORDER = 122 + CqlParserK_OUTER = 123 + CqlParserK_OVER = 124 + CqlParserK_PARTITION = 125 + CqlParserK_PASSWORD = 126 + CqlParserK_PERMISSION = 127 + CqlParserK_PERMISSIONS = 128 + CqlParserK_PRECEDING = 129 + CqlParserK_PRIMARY = 130 + CqlParserK_PROTO = 131 + CqlParserK_QUALIFY = 132 + CqlParserK_RANGE = 133 + CqlParserK_RECURSIVE = 134 + CqlParserK_RENAME = 135 + CqlParserK_REPLACE = 136 + CqlParserK_RESPECT = 137 + CqlParserK_RETURNS = 138 + CqlParserK_REVOKE = 139 + CqlParserK_RIGHT = 140 + CqlParserK_ROLE = 141 + CqlParserK_ROLES = 142 + CqlParserK_ROLLUP = 143 + CqlParserK_ROWS = 144 + CqlParserK_SCHEMA = 145 + CqlParserK_SELECT = 146 + CqlParserK_SET = 147 + CqlParserK_SFUNC = 148 + CqlParserK_SMALLINT = 149 + CqlParserK_SOME = 150 + CqlParserK_STATIC = 151 + CqlParserK_STORAGE = 152 + CqlParserK_STRUCT = 153 + CqlParserK_STYPE = 154 + CqlParserK_SUPERUSER = 155 + CqlParserK_TABLE = 156 + CqlParserK_TABLESAMPLE = 157 + CqlParserK_TEXT = 158 + CqlParserK_THEN = 159 + CqlParserK_TIME = 160 + CqlParserK_TIMESTAMP = 161 + CqlParserK_TIMEUUID = 162 + CqlParserK_TINYINT = 163 + CqlParserK_TO = 164 + CqlParserK_TOKEN = 165 + CqlParserK_TREAT = 166 + CqlParserK_TRIGGER = 167 + CqlParserK_TRUE = 168 + CqlParserK_TRUNCATE = 169 + CqlParserK_TTL = 170 + CqlParserK_TUPLE = 171 + CqlParserK_TYPE = 172 + CqlParserK_UNBOUNDED = 173 + CqlParserK_UNION = 174 + CqlParserK_UNLOGGED = 175 + CqlParserK_UNNEST = 176 + CqlParserK_UPDATE = 177 + CqlParserK_USE = 178 + CqlParserK_USER = 179 + CqlParserK_USERS = 180 + CqlParserK_USING = 181 + CqlParserK_UUID = 182 + CqlParserK_VALUES = 183 + CqlParserK_VARCHAR = 184 + CqlParserK_VARINT = 185 + CqlParserK_WHEN = 186 + CqlParserK_WHERE = 187 + CqlParserK_WINDOW = 188 + CqlParserK_WITH = 189 + CqlParserK_WITHIN = 190 + CqlParserK_WRITETIME = 191 + CqlParserK_MATERIALIZED = 192 + CqlParserK_VIEW = 193 + CqlParserSEMICOLON = 194 + CqlParserSQUOTE = 195 + CqlParserDQUOTE = 196 + CqlParserDOT = 197 + CqlParserCOMMA = 198 + CqlParserL_PAREN = 199 + CqlParserR_PAREN = 200 + CqlParserL_ANGLE_BRACKET = 201 + CqlParserR_ANGLE_BRACKET = 202 + CqlParserIDENTIFIER = 203 + CqlParserIDENTIFIER_WITH_HYPHEN = 204 + CqlParserWS = 205 + CqlParserCOMMENT = 206 + CqlParserMULTILINE_COMMENT = 207 + CqlParserUNKNOWN = 208 ) // CqlParser rules. @@ -1557,7 +1649,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(83) p.NonSemicolonToken() @@ -1608,7 +1700,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(93) p.NonSemicolonToken() @@ -1688,7 +1780,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(108) p.NonSemicolonToken() @@ -1789,7 +1881,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(126) p.NonSemicolonToken() @@ -1828,7 +1920,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(134) p.NonSemicolonToken() @@ -1863,7 +1955,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(142) p.NonSemicolonToken() @@ -1894,7 +1986,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(149) p.NonSemicolonToken() @@ -1963,7 +2055,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(160) p.NonSemicolonToken() @@ -2065,7 +2157,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(179) p.NonSemicolonToken() @@ -2116,7 +2208,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(190) p.NonSemicolonToken() @@ -2175,7 +2267,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(202) p.NonSemicolonToken() @@ -2222,7 +2314,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(211) p.NonSemicolonToken() @@ -2281,7 +2373,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(223) p.NonSemicolonToken() @@ -2332,7 +2424,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(234) p.NonSemicolonToken() @@ -2371,7 +2463,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(242) p.NonSemicolonToken() @@ -2410,7 +2502,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(250) p.NonSemicolonToken() @@ -2441,7 +2533,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(257) p.NonSemicolonToken() @@ -2472,7 +2564,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(264) p.NonSemicolonToken() @@ -2503,7 +2595,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(271) p.NonSemicolonToken() @@ -2542,7 +2634,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(279) p.NonSemicolonToken() @@ -2581,7 +2673,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(287) p.NonSemicolonToken() @@ -2620,7 +2712,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(295) p.NonSemicolonToken() @@ -2740,7 +2832,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(318) p.NonSemicolonToken() @@ -2807,7 +2899,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(331) p.NonSemicolonToken() @@ -2884,7 +2976,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(346) p.NonSemicolonToken() @@ -2935,7 +3027,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(357) p.NonSemicolonToken() @@ -2986,7 +3078,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(368) p.NonSemicolonToken() @@ -3025,7 +3117,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(376) p.NonSemicolonToken() @@ -3076,7 +3168,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(387) p.NonSemicolonToken() @@ -3127,7 +3219,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(398) p.NonSemicolonToken() @@ -3178,7 +3270,7 @@ func (p *CqlParser) UnsupportedStatement() (localctx IUnsupportedStatementContex } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(409) p.NonSemicolonToken() @@ -4026,7 +4118,7 @@ func (p *CqlParser) PartitionKey() (localctx IPartitionKeyContext) { } switch p.GetTokenStream().LA(1) { - case CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_AS, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_EXISTS, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME, CqlParserIDENTIFIER: + case CqlParserK_AGGREGATE, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DOUBLE, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME, CqlParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { p.SetState(444) @@ -4734,7 +4826,7 @@ func (p *CqlParser) GeneralIdentifier() (localctx IGeneralIdentifierContext) { } } - case CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_AS, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_EXISTS, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME, CqlParserIDENTIFIER: + case CqlParserK_AGGREGATE, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DOUBLE, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME, CqlParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { p.SetState(478) @@ -4856,7 +4948,7 @@ func (p *CqlParser) Identifier() (localctx IIdentifierContext) { } switch p.GetTokenStream().LA(1) { - case CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_AS, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_EXISTS, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME: + case CqlParserK_AGGREGATE, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DOUBLE, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME: p.EnterOuterAlt(localctx, 1) { p.SetState(481) @@ -5548,7 +5640,7 @@ func (p *CqlParser) CqlNativeType() (localctx ICqlNativeTypeContext) { p.SetState(499) _la = p.GetTokenStream().LA(1) - if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&37155805446915072) != 0) || ((int64((_la-93)) & ^0x3f) == 0 && ((int64(1)<<(_la-93))&218105793) != 0)) { + if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4611757216103927808) != 0) || _la == CqlParserK_INET || _la == CqlParserK_INT || ((int64((_la-149)) & ^0x3f) == 0 && ((int64(1)<<(_la-149))&111669180929) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -5948,7 +6040,7 @@ func (p *CqlParser) WihtTableOptions() (localctx IWihtTableOptionsContext) { } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-4611686018427387905) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4607) != 0) { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&73723) != 0) { { p.SetState(516) p.NonSemicolonToken() @@ -6122,7 +6214,7 @@ func (p *CqlParser) NonSemicolonToken() (localctx INonSemicolonTokenContext) { } switch p.GetTokenStream().LA(1) { - case CqlParserK_ADD, CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_ALLOW, CqlParserK_ALTER, CqlParserK_AND, CqlParserK_APPLY, CqlParserK_AS, CqlParserK_ASC, CqlParserK_ASCII, CqlParserK_AUTHORIZE, CqlParserK_BATCH, CqlParserK_BEGIN, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_BY, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COLUMNFAMILY, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CREATE, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DELETE, CqlParserK_DESC, CqlParserK_DESCRIBE, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_DROP, CqlParserK_ENTRIES, CqlParserK_EXECUTE, CqlParserK_EXISTS, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROM, CqlParserK_FROZEN, CqlParserK_FULL, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_GRANT, CqlParserK_IF, CqlParserK_IN, CqlParserK_INDEX, CqlParserK_INET, CqlParserK_INFINITY, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INSERT, CqlParserK_INT, CqlParserK_INTO, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACE, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIMIT, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_MODIFY, CqlParserK_NAN, CqlParserK_NOLOGIN, CqlParserK_NORECURSIVE, CqlParserK_NOSUPERUSER, CqlParserK_NOT, CqlParserK_NULL, CqlParserK_OF, CqlParserK_ON, CqlParserK_OPTIONS, CqlParserK_OR, CqlParserK_ORDER, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_PRIMARY, CqlParserK_RENAME, CqlParserK_REPLACE, CqlParserK_RETURNS, CqlParserK_REVOKE, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SCHEMA, CqlParserK_SELECT, CqlParserK_SET, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TABLE, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TO, CqlParserK_TOKEN, CqlParserK_TRIGGER, CqlParserK_TRUNCATE, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_UNLOGGED, CqlParserK_UPDATE, CqlParserK_USE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_USING, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WHERE, CqlParserK_WITH, CqlParserK_WRITETIME, CqlParserK_MATERIALIZED, CqlParserK_VIEW: + case CqlParserK_ADD, CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_ALLOW, CqlParserK_ALTER, CqlParserK_AND, CqlParserK_ANY, CqlParserK_APPLY, CqlParserK_ARRAY, CqlParserK_AS, CqlParserK_ASC, CqlParserK_ASCII, CqlParserK_ASSERT_ROWS_MODIFIED, CqlParserK_AT, CqlParserK_AUTHORIZE, CqlParserK_BATCH, CqlParserK_BEGIN, CqlParserK_BETWEEN, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_BY, CqlParserK_CALLED, CqlParserK_CASE, CqlParserK_CAST, CqlParserK_CLUSTERING, CqlParserK_COLLATE, CqlParserK_COLUMNFAMILY, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CREATE, CqlParserK_CROSS, CqlParserK_CUBE, CqlParserK_CURRENT, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DEFAULT, CqlParserK_DEFINE, CqlParserK_DELETE, CqlParserK_DESC, CqlParserK_DESCRIBE, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_DROP, CqlParserK_ELSE, CqlParserK_END, CqlParserK_ENTRIES, CqlParserK_ENUM, CqlParserK_ESCAPE, CqlParserK_EXCEPT, CqlParserK_EXCLUDE, CqlParserK_EXECUTE, CqlParserK_EXISTS, CqlParserK_EXTRACT, CqlParserK_FALSE, CqlParserK_FETCH, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FOLLOWING, CqlParserK_FOR, CqlParserK_FROM, CqlParserK_FROZEN, CqlParserK_FULL, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_GRANT, CqlParserK_GROUP, CqlParserK_GROUPING, CqlParserK_GROUPS, CqlParserK_HASH, CqlParserK_HAVING, CqlParserK_IF, CqlParserK_IGNORE, CqlParserK_IN, CqlParserK_INDEX, CqlParserK_INET, CqlParserK_INFINITY, CqlParserK_INITCOND, CqlParserK_INNER, CqlParserK_INPUT, CqlParserK_INSERT, CqlParserK_INT, CqlParserK_INTERSECT, CqlParserK_INTERVAL, CqlParserK_INTO, CqlParserK_IS, CqlParserK_JOIN, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACE, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LATERAL, CqlParserK_LEFT, CqlParserK_LIKE, CqlParserK_LIMIT, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_LOOKUP, CqlParserK_MAP, CqlParserK_MERGE, CqlParserK_MODIFY, CqlParserK_NAN, CqlParserK_NATURAL, CqlParserK_NEW, CqlParserK_NO, CqlParserK_NOLOGIN, CqlParserK_NORECURSIVE, CqlParserK_NOSUPERUSER, CqlParserK_NOT, CqlParserK_NULL, CqlParserK_NULLS, CqlParserK_OF, CqlParserK_ON, CqlParserK_OPTIONS, CqlParserK_OR, CqlParserK_ORDER, CqlParserK_OUTER, CqlParserK_OVER, CqlParserK_PARTITION, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_PRECEDING, CqlParserK_PRIMARY, CqlParserK_PROTO, CqlParserK_QUALIFY, CqlParserK_RANGE, CqlParserK_RECURSIVE, CqlParserK_RENAME, CqlParserK_REPLACE, CqlParserK_RESPECT, CqlParserK_RETURNS, CqlParserK_REVOKE, CqlParserK_RIGHT, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_ROLLUP, CqlParserK_ROWS, CqlParserK_SCHEMA, CqlParserK_SELECT, CqlParserK_SET, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_SOME, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STRUCT, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TABLE, CqlParserK_TABLESAMPLE, CqlParserK_TEXT, CqlParserK_THEN, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TO, CqlParserK_TOKEN, CqlParserK_TREAT, CqlParserK_TRIGGER, CqlParserK_TRUE, CqlParserK_TRUNCATE, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_UNBOUNDED, CqlParserK_UNION, CqlParserK_UNLOGGED, CqlParserK_UNNEST, CqlParserK_UPDATE, CqlParserK_USE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_USING, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WHEN, CqlParserK_WHERE, CqlParserK_WINDOW, CqlParserK_WITH, CqlParserK_WITHIN, CqlParserK_WRITETIME, CqlParserK_MATERIALIZED, CqlParserK_VIEW: p.EnterOuterAlt(localctx, 1) { p.SetState(522) @@ -6377,14 +6469,14 @@ func (p *CqlParser) Keyword() (localctx IKeywordContext) { } switch p.GetTokenStream().LA(1) { - case CqlParserK_ADD, CqlParserK_ALLOW, CqlParserK_ALTER, CqlParserK_AND, CqlParserK_APPLY, CqlParserK_ASC, CqlParserK_AUTHORIZE, CqlParserK_BATCH, CqlParserK_BEGIN, CqlParserK_BY, CqlParserK_COLUMNFAMILY, CqlParserK_CREATE, CqlParserK_DELETE, CqlParserK_DESC, CqlParserK_DESCRIBE, CqlParserK_DROP, CqlParserK_ENTRIES, CqlParserK_EXECUTE, CqlParserK_FROM, CqlParserK_FULL, CqlParserK_GRANT, CqlParserK_IF, CqlParserK_IN, CqlParserK_INDEX, CqlParserK_INFINITY, CqlParserK_INSERT, CqlParserK_INTO, CqlParserK_KEYSPACE, CqlParserK_LIMIT, CqlParserK_MODIFY, CqlParserK_NAN, CqlParserK_NORECURSIVE, CqlParserK_NOT, CqlParserK_NULL, CqlParserK_OF, CqlParserK_ON, CqlParserK_OR, CqlParserK_ORDER, CqlParserK_PRIMARY, CqlParserK_RENAME, CqlParserK_REPLACE, CqlParserK_REVOKE, CqlParserK_SCHEMA, CqlParserK_SELECT, CqlParserK_SET, CqlParserK_TABLE, CqlParserK_TO, CqlParserK_TOKEN, CqlParserK_TRUNCATE, CqlParserK_UNLOGGED, CqlParserK_UPDATE, CqlParserK_USE, CqlParserK_USING, CqlParserK_WHERE, CqlParserK_WITH, CqlParserK_MATERIALIZED, CqlParserK_VIEW: + case CqlParserK_ADD, CqlParserK_ALL, CqlParserK_ALLOW, CqlParserK_ALTER, CqlParserK_AND, CqlParserK_ANY, CqlParserK_APPLY, CqlParserK_ARRAY, CqlParserK_AS, CqlParserK_ASC, CqlParserK_ASSERT_ROWS_MODIFIED, CqlParserK_AT, CqlParserK_AUTHORIZE, CqlParserK_BATCH, CqlParserK_BEGIN, CqlParserK_BETWEEN, CqlParserK_BY, CqlParserK_CASE, CqlParserK_CAST, CqlParserK_COLLATE, CqlParserK_COLUMNFAMILY, CqlParserK_CONTAINS, CqlParserK_CREATE, CqlParserK_CROSS, CqlParserK_CUBE, CqlParserK_CURRENT, CqlParserK_DEFAULT, CqlParserK_DEFINE, CqlParserK_DELETE, CqlParserK_DESC, CqlParserK_DESCRIBE, CqlParserK_DISTINCT, CqlParserK_DROP, CqlParserK_ELSE, CqlParserK_END, CqlParserK_ENTRIES, CqlParserK_ENUM, CqlParserK_ESCAPE, CqlParserK_EXCEPT, CqlParserK_EXCLUDE, CqlParserK_EXECUTE, CqlParserK_EXISTS, CqlParserK_EXTRACT, CqlParserK_FALSE, CqlParserK_FETCH, CqlParserK_FOLLOWING, CqlParserK_FOR, CqlParserK_FROM, CqlParserK_FULL, CqlParserK_GRANT, CqlParserK_GROUP, CqlParserK_GROUPING, CqlParserK_GROUPS, CqlParserK_HASH, CqlParserK_HAVING, CqlParserK_IF, CqlParserK_IGNORE, CqlParserK_IN, CqlParserK_INDEX, CqlParserK_INFINITY, CqlParserK_INNER, CqlParserK_INSERT, CqlParserK_INTERSECT, CqlParserK_INTERVAL, CqlParserK_INTO, CqlParserK_IS, CqlParserK_JOIN, CqlParserK_KEYSPACE, CqlParserK_LATERAL, CqlParserK_LEFT, CqlParserK_LIKE, CqlParserK_LIMIT, CqlParserK_LOOKUP, CqlParserK_MERGE, CqlParserK_MODIFY, CqlParserK_NAN, CqlParserK_NATURAL, CqlParserK_NEW, CqlParserK_NO, CqlParserK_NORECURSIVE, CqlParserK_NOT, CqlParserK_NULL, CqlParserK_NULLS, CqlParserK_OF, CqlParserK_ON, CqlParserK_OR, CqlParserK_ORDER, CqlParserK_OUTER, CqlParserK_OVER, CqlParserK_PARTITION, CqlParserK_PRECEDING, CqlParserK_PRIMARY, CqlParserK_PROTO, CqlParserK_QUALIFY, CqlParserK_RANGE, CqlParserK_RECURSIVE, CqlParserK_RENAME, CqlParserK_REPLACE, CqlParserK_RESPECT, CqlParserK_REVOKE, CqlParserK_RIGHT, CqlParserK_ROLLUP, CqlParserK_ROWS, CqlParserK_SCHEMA, CqlParserK_SELECT, CqlParserK_SET, CqlParserK_SOME, CqlParserK_STRUCT, CqlParserK_TABLE, CqlParserK_TABLESAMPLE, CqlParserK_THEN, CqlParserK_TO, CqlParserK_TOKEN, CqlParserK_TREAT, CqlParserK_TRUE, CqlParserK_TRUNCATE, CqlParserK_UNBOUNDED, CqlParserK_UNION, CqlParserK_UNLOGGED, CqlParserK_UNNEST, CqlParserK_UPDATE, CqlParserK_USE, CqlParserK_USING, CqlParserK_WHEN, CqlParserK_WHERE, CqlParserK_WINDOW, CqlParserK_WITH, CqlParserK_WITHIN, CqlParserK_MATERIALIZED, CqlParserK_VIEW: p.EnterOuterAlt(localctx, 1) { p.SetState(536) p.ReservedKeyword() } - case CqlParserK_AGGREGATE, CqlParserK_ALL, CqlParserK_AS, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_CONTAINS, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DISTINCT, CqlParserK_DOUBLE, CqlParserK_EXISTS, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME: + case CqlParserK_AGGREGATE, CqlParserK_ASCII, CqlParserK_BIGINT, CqlParserK_BLOB, CqlParserK_BOOLEAN, CqlParserK_CALLED, CqlParserK_CLUSTERING, CqlParserK_COMPACT, CqlParserK_COUNT, CqlParserK_COUNTER, CqlParserK_CUSTOM, CqlParserK_DATE, CqlParserK_DECIMAL, CqlParserK_DOUBLE, CqlParserK_FILTERING, CqlParserK_FINALFUNC, CqlParserK_FLOAT, CqlParserK_FROZEN, CqlParserK_FUNCTION, CqlParserK_FUNCTIONS, CqlParserK_INET, CqlParserK_INITCOND, CqlParserK_INPUT, CqlParserK_INT, CqlParserK_JSON, CqlParserK_KEY, CqlParserK_KEYS, CqlParserK_KEYSPACES, CqlParserK_LANGUAGE, CqlParserK_LIST, CqlParserK_LOGIN, CqlParserK_MAP, CqlParserK_NOLOGIN, CqlParserK_NOSUPERUSER, CqlParserK_OPTIONS, CqlParserK_PASSWORD, CqlParserK_PERMISSION, CqlParserK_PERMISSIONS, CqlParserK_RETURNS, CqlParserK_ROLE, CqlParserK_ROLES, CqlParserK_SFUNC, CqlParserK_SMALLINT, CqlParserK_STATIC, CqlParserK_STORAGE, CqlParserK_STYPE, CqlParserK_SUPERUSER, CqlParserK_TEXT, CqlParserK_TIME, CqlParserK_TIMESTAMP, CqlParserK_TIMEUUID, CqlParserK_TINYINT, CqlParserK_TRIGGER, CqlParserK_TTL, CqlParserK_TUPLE, CqlParserK_TYPE, CqlParserK_USER, CqlParserK_USERS, CqlParserK_UUID, CqlParserK_VALUES, CqlParserK_VARCHAR, CqlParserK_VARINT, CqlParserK_WRITETIME: p.EnterOuterAlt(localctx, 2) { p.SetState(537) @@ -6418,62 +6510,135 @@ type IReservedKeywordContext interface { // Getter signatures K_ADD() antlr.TerminalNode + K_ALL() antlr.TerminalNode K_ALLOW() antlr.TerminalNode K_ALTER() antlr.TerminalNode K_AND() antlr.TerminalNode + K_ANY() antlr.TerminalNode K_APPLY() antlr.TerminalNode + K_ARRAY() antlr.TerminalNode + K_AS() antlr.TerminalNode K_ASC() antlr.TerminalNode + K_ASSERT_ROWS_MODIFIED() antlr.TerminalNode + K_AT() antlr.TerminalNode K_AUTHORIZE() antlr.TerminalNode K_BATCH() antlr.TerminalNode K_BEGIN() antlr.TerminalNode + K_BETWEEN() antlr.TerminalNode K_BY() antlr.TerminalNode + K_CASE() antlr.TerminalNode + K_CAST() antlr.TerminalNode + K_COLLATE() antlr.TerminalNode K_COLUMNFAMILY() antlr.TerminalNode + K_CONTAINS() antlr.TerminalNode K_CREATE() antlr.TerminalNode + K_CROSS() antlr.TerminalNode + K_CUBE() antlr.TerminalNode + K_CURRENT() antlr.TerminalNode + K_DEFAULT() antlr.TerminalNode + K_DEFINE() antlr.TerminalNode K_DELETE() antlr.TerminalNode K_DESC() antlr.TerminalNode K_DESCRIBE() antlr.TerminalNode + K_DISTINCT() antlr.TerminalNode K_DROP() antlr.TerminalNode + K_ELSE() antlr.TerminalNode + K_END() antlr.TerminalNode K_ENTRIES() antlr.TerminalNode + K_ENUM() antlr.TerminalNode + K_ESCAPE() antlr.TerminalNode + K_EXCEPT() antlr.TerminalNode + K_EXCLUDE() antlr.TerminalNode K_EXECUTE() antlr.TerminalNode + K_EXISTS() antlr.TerminalNode + K_EXTRACT() antlr.TerminalNode + K_FALSE() antlr.TerminalNode + K_FETCH() antlr.TerminalNode + K_FOLLOWING() antlr.TerminalNode + K_FOR() antlr.TerminalNode K_FROM() antlr.TerminalNode K_FULL() antlr.TerminalNode K_GRANT() antlr.TerminalNode + K_GROUP() antlr.TerminalNode + K_GROUPING() antlr.TerminalNode + K_GROUPS() antlr.TerminalNode + K_HASH() antlr.TerminalNode + K_HAVING() antlr.TerminalNode K_IF() antlr.TerminalNode + K_IGNORE() antlr.TerminalNode K_IN() antlr.TerminalNode K_INDEX() antlr.TerminalNode K_INFINITY() antlr.TerminalNode + K_INNER() antlr.TerminalNode K_INSERT() antlr.TerminalNode + K_INTERSECT() antlr.TerminalNode + K_INTERVAL() antlr.TerminalNode K_INTO() antlr.TerminalNode + K_IS() antlr.TerminalNode + K_JOIN() antlr.TerminalNode K_KEYSPACE() antlr.TerminalNode + K_LATERAL() antlr.TerminalNode + K_LEFT() antlr.TerminalNode + K_LIKE() antlr.TerminalNode K_LIMIT() antlr.TerminalNode + K_LOOKUP() antlr.TerminalNode + K_MATERIALIZED() antlr.TerminalNode + K_MERGE() antlr.TerminalNode K_MODIFY() antlr.TerminalNode K_NAN() antlr.TerminalNode + K_NATURAL() antlr.TerminalNode + K_NEW() antlr.TerminalNode + K_NO() antlr.TerminalNode K_NORECURSIVE() antlr.TerminalNode K_NOT() antlr.TerminalNode K_NULL() antlr.TerminalNode + K_NULLS() antlr.TerminalNode K_OF() antlr.TerminalNode K_ON() antlr.TerminalNode K_OR() antlr.TerminalNode K_ORDER() antlr.TerminalNode + K_OUTER() antlr.TerminalNode + K_OVER() antlr.TerminalNode + K_PARTITION() antlr.TerminalNode + K_PRECEDING() antlr.TerminalNode K_PRIMARY() antlr.TerminalNode + K_PROTO() antlr.TerminalNode + K_QUALIFY() antlr.TerminalNode + K_RANGE() antlr.TerminalNode + K_RECURSIVE() antlr.TerminalNode K_RENAME() antlr.TerminalNode K_REPLACE() antlr.TerminalNode + K_RESPECT() antlr.TerminalNode K_REVOKE() antlr.TerminalNode + K_RIGHT() antlr.TerminalNode + K_ROLLUP() antlr.TerminalNode + K_ROWS() antlr.TerminalNode K_SCHEMA() antlr.TerminalNode K_SELECT() antlr.TerminalNode K_SET() antlr.TerminalNode + K_SOME() antlr.TerminalNode + K_STRUCT() antlr.TerminalNode K_TABLE() antlr.TerminalNode + K_TABLESAMPLE() antlr.TerminalNode + K_THEN() antlr.TerminalNode K_TO() antlr.TerminalNode K_TOKEN() antlr.TerminalNode + K_TREAT() antlr.TerminalNode + K_TRUE() antlr.TerminalNode K_TRUNCATE() antlr.TerminalNode + K_UNBOUNDED() antlr.TerminalNode + K_UNION() antlr.TerminalNode K_UNLOGGED() antlr.TerminalNode + K_UNNEST() antlr.TerminalNode K_UPDATE() antlr.TerminalNode K_USE() antlr.TerminalNode K_USING() antlr.TerminalNode + K_VIEW() antlr.TerminalNode + K_WHEN() antlr.TerminalNode K_WHERE() antlr.TerminalNode + K_WINDOW() antlr.TerminalNode K_WITH() antlr.TerminalNode - K_MATERIALIZED() antlr.TerminalNode - K_VIEW() antlr.TerminalNode + K_WITHIN() antlr.TerminalNode // IsReservedKeywordContext differentiates from other interfaces. IsReservedKeywordContext() @@ -6515,6 +6680,10 @@ func (s *ReservedKeywordContext) K_ADD() antlr.TerminalNode { return s.GetToken(CqlParserK_ADD, 0) } +func (s *ReservedKeywordContext) K_ALL() antlr.TerminalNode { + return s.GetToken(CqlParserK_ALL, 0) +} + func (s *ReservedKeywordContext) K_ALLOW() antlr.TerminalNode { return s.GetToken(CqlParserK_ALLOW, 0) } @@ -6527,14 +6696,34 @@ func (s *ReservedKeywordContext) K_AND() antlr.TerminalNode { return s.GetToken(CqlParserK_AND, 0) } +func (s *ReservedKeywordContext) K_ANY() antlr.TerminalNode { + return s.GetToken(CqlParserK_ANY, 0) +} + func (s *ReservedKeywordContext) K_APPLY() antlr.TerminalNode { return s.GetToken(CqlParserK_APPLY, 0) } +func (s *ReservedKeywordContext) K_ARRAY() antlr.TerminalNode { + return s.GetToken(CqlParserK_ARRAY, 0) +} + +func (s *ReservedKeywordContext) K_AS() antlr.TerminalNode { + return s.GetToken(CqlParserK_AS, 0) +} + func (s *ReservedKeywordContext) K_ASC() antlr.TerminalNode { return s.GetToken(CqlParserK_ASC, 0) } +func (s *ReservedKeywordContext) K_ASSERT_ROWS_MODIFIED() antlr.TerminalNode { + return s.GetToken(CqlParserK_ASSERT_ROWS_MODIFIED, 0) +} + +func (s *ReservedKeywordContext) K_AT() antlr.TerminalNode { + return s.GetToken(CqlParserK_AT, 0) +} + func (s *ReservedKeywordContext) K_AUTHORIZE() antlr.TerminalNode { return s.GetToken(CqlParserK_AUTHORIZE, 0) } @@ -6547,18 +6736,58 @@ func (s *ReservedKeywordContext) K_BEGIN() antlr.TerminalNode { return s.GetToken(CqlParserK_BEGIN, 0) } +func (s *ReservedKeywordContext) K_BETWEEN() antlr.TerminalNode { + return s.GetToken(CqlParserK_BETWEEN, 0) +} + func (s *ReservedKeywordContext) K_BY() antlr.TerminalNode { return s.GetToken(CqlParserK_BY, 0) } +func (s *ReservedKeywordContext) K_CASE() antlr.TerminalNode { + return s.GetToken(CqlParserK_CASE, 0) +} + +func (s *ReservedKeywordContext) K_CAST() antlr.TerminalNode { + return s.GetToken(CqlParserK_CAST, 0) +} + +func (s *ReservedKeywordContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(CqlParserK_COLLATE, 0) +} + func (s *ReservedKeywordContext) K_COLUMNFAMILY() antlr.TerminalNode { return s.GetToken(CqlParserK_COLUMNFAMILY, 0) } +func (s *ReservedKeywordContext) K_CONTAINS() antlr.TerminalNode { + return s.GetToken(CqlParserK_CONTAINS, 0) +} + func (s *ReservedKeywordContext) K_CREATE() antlr.TerminalNode { return s.GetToken(CqlParserK_CREATE, 0) } +func (s *ReservedKeywordContext) K_CROSS() antlr.TerminalNode { + return s.GetToken(CqlParserK_CROSS, 0) +} + +func (s *ReservedKeywordContext) K_CUBE() antlr.TerminalNode { + return s.GetToken(CqlParserK_CUBE, 0) +} + +func (s *ReservedKeywordContext) K_CURRENT() antlr.TerminalNode { + return s.GetToken(CqlParserK_CURRENT, 0) +} + +func (s *ReservedKeywordContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(CqlParserK_DEFAULT, 0) +} + +func (s *ReservedKeywordContext) K_DEFINE() antlr.TerminalNode { + return s.GetToken(CqlParserK_DEFINE, 0) +} + func (s *ReservedKeywordContext) K_DELETE() antlr.TerminalNode { return s.GetToken(CqlParserK_DELETE, 0) } @@ -6571,18 +6800,70 @@ func (s *ReservedKeywordContext) K_DESCRIBE() antlr.TerminalNode { return s.GetToken(CqlParserK_DESCRIBE, 0) } +func (s *ReservedKeywordContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(CqlParserK_DISTINCT, 0) +} + func (s *ReservedKeywordContext) K_DROP() antlr.TerminalNode { return s.GetToken(CqlParserK_DROP, 0) } +func (s *ReservedKeywordContext) K_ELSE() antlr.TerminalNode { + return s.GetToken(CqlParserK_ELSE, 0) +} + +func (s *ReservedKeywordContext) K_END() antlr.TerminalNode { + return s.GetToken(CqlParserK_END, 0) +} + func (s *ReservedKeywordContext) K_ENTRIES() antlr.TerminalNode { return s.GetToken(CqlParserK_ENTRIES, 0) } +func (s *ReservedKeywordContext) K_ENUM() antlr.TerminalNode { + return s.GetToken(CqlParserK_ENUM, 0) +} + +func (s *ReservedKeywordContext) K_ESCAPE() antlr.TerminalNode { + return s.GetToken(CqlParserK_ESCAPE, 0) +} + +func (s *ReservedKeywordContext) K_EXCEPT() antlr.TerminalNode { + return s.GetToken(CqlParserK_EXCEPT, 0) +} + +func (s *ReservedKeywordContext) K_EXCLUDE() antlr.TerminalNode { + return s.GetToken(CqlParserK_EXCLUDE, 0) +} + func (s *ReservedKeywordContext) K_EXECUTE() antlr.TerminalNode { return s.GetToken(CqlParserK_EXECUTE, 0) } +func (s *ReservedKeywordContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(CqlParserK_EXISTS, 0) +} + +func (s *ReservedKeywordContext) K_EXTRACT() antlr.TerminalNode { + return s.GetToken(CqlParserK_EXTRACT, 0) +} + +func (s *ReservedKeywordContext) K_FALSE() antlr.TerminalNode { + return s.GetToken(CqlParserK_FALSE, 0) +} + +func (s *ReservedKeywordContext) K_FETCH() antlr.TerminalNode { + return s.GetToken(CqlParserK_FETCH, 0) +} + +func (s *ReservedKeywordContext) K_FOLLOWING() antlr.TerminalNode { + return s.GetToken(CqlParserK_FOLLOWING, 0) +} + +func (s *ReservedKeywordContext) K_FOR() antlr.TerminalNode { + return s.GetToken(CqlParserK_FOR, 0) +} + func (s *ReservedKeywordContext) K_FROM() antlr.TerminalNode { return s.GetToken(CqlParserK_FROM, 0) } @@ -6595,10 +6876,34 @@ func (s *ReservedKeywordContext) K_GRANT() antlr.TerminalNode { return s.GetToken(CqlParserK_GRANT, 0) } +func (s *ReservedKeywordContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(CqlParserK_GROUP, 0) +} + +func (s *ReservedKeywordContext) K_GROUPING() antlr.TerminalNode { + return s.GetToken(CqlParserK_GROUPING, 0) +} + +func (s *ReservedKeywordContext) K_GROUPS() antlr.TerminalNode { + return s.GetToken(CqlParserK_GROUPS, 0) +} + +func (s *ReservedKeywordContext) K_HASH() antlr.TerminalNode { + return s.GetToken(CqlParserK_HASH, 0) +} + +func (s *ReservedKeywordContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(CqlParserK_HAVING, 0) +} + func (s *ReservedKeywordContext) K_IF() antlr.TerminalNode { return s.GetToken(CqlParserK_IF, 0) } +func (s *ReservedKeywordContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(CqlParserK_IGNORE, 0) +} + func (s *ReservedKeywordContext) K_IN() antlr.TerminalNode { return s.GetToken(CqlParserK_IN, 0) } @@ -6611,22 +6916,66 @@ func (s *ReservedKeywordContext) K_INFINITY() antlr.TerminalNode { return s.GetToken(CqlParserK_INFINITY, 0) } +func (s *ReservedKeywordContext) K_INNER() antlr.TerminalNode { + return s.GetToken(CqlParserK_INNER, 0) +} + func (s *ReservedKeywordContext) K_INSERT() antlr.TerminalNode { return s.GetToken(CqlParserK_INSERT, 0) } +func (s *ReservedKeywordContext) K_INTERSECT() antlr.TerminalNode { + return s.GetToken(CqlParserK_INTERSECT, 0) +} + +func (s *ReservedKeywordContext) K_INTERVAL() antlr.TerminalNode { + return s.GetToken(CqlParserK_INTERVAL, 0) +} + func (s *ReservedKeywordContext) K_INTO() antlr.TerminalNode { return s.GetToken(CqlParserK_INTO, 0) } +func (s *ReservedKeywordContext) K_IS() antlr.TerminalNode { + return s.GetToken(CqlParserK_IS, 0) +} + +func (s *ReservedKeywordContext) K_JOIN() antlr.TerminalNode { + return s.GetToken(CqlParserK_JOIN, 0) +} + func (s *ReservedKeywordContext) K_KEYSPACE() antlr.TerminalNode { return s.GetToken(CqlParserK_KEYSPACE, 0) } +func (s *ReservedKeywordContext) K_LATERAL() antlr.TerminalNode { + return s.GetToken(CqlParserK_LATERAL, 0) +} + +func (s *ReservedKeywordContext) K_LEFT() antlr.TerminalNode { + return s.GetToken(CqlParserK_LEFT, 0) +} + +func (s *ReservedKeywordContext) K_LIKE() antlr.TerminalNode { + return s.GetToken(CqlParserK_LIKE, 0) +} + func (s *ReservedKeywordContext) K_LIMIT() antlr.TerminalNode { return s.GetToken(CqlParserK_LIMIT, 0) } +func (s *ReservedKeywordContext) K_LOOKUP() antlr.TerminalNode { + return s.GetToken(CqlParserK_LOOKUP, 0) +} + +func (s *ReservedKeywordContext) K_MATERIALIZED() antlr.TerminalNode { + return s.GetToken(CqlParserK_MATERIALIZED, 0) +} + +func (s *ReservedKeywordContext) K_MERGE() antlr.TerminalNode { + return s.GetToken(CqlParserK_MERGE, 0) +} + func (s *ReservedKeywordContext) K_MODIFY() antlr.TerminalNode { return s.GetToken(CqlParserK_MODIFY, 0) } @@ -6635,6 +6984,18 @@ func (s *ReservedKeywordContext) K_NAN() antlr.TerminalNode { return s.GetToken(CqlParserK_NAN, 0) } +func (s *ReservedKeywordContext) K_NATURAL() antlr.TerminalNode { + return s.GetToken(CqlParserK_NATURAL, 0) +} + +func (s *ReservedKeywordContext) K_NEW() antlr.TerminalNode { + return s.GetToken(CqlParserK_NEW, 0) +} + +func (s *ReservedKeywordContext) K_NO() antlr.TerminalNode { + return s.GetToken(CqlParserK_NO, 0) +} + func (s *ReservedKeywordContext) K_NORECURSIVE() antlr.TerminalNode { return s.GetToken(CqlParserK_NORECURSIVE, 0) } @@ -6647,6 +7008,10 @@ func (s *ReservedKeywordContext) K_NULL() antlr.TerminalNode { return s.GetToken(CqlParserK_NULL, 0) } +func (s *ReservedKeywordContext) K_NULLS() antlr.TerminalNode { + return s.GetToken(CqlParserK_NULLS, 0) +} + func (s *ReservedKeywordContext) K_OF() antlr.TerminalNode { return s.GetToken(CqlParserK_OF, 0) } @@ -6663,10 +7028,42 @@ func (s *ReservedKeywordContext) K_ORDER() antlr.TerminalNode { return s.GetToken(CqlParserK_ORDER, 0) } +func (s *ReservedKeywordContext) K_OUTER() antlr.TerminalNode { + return s.GetToken(CqlParserK_OUTER, 0) +} + +func (s *ReservedKeywordContext) K_OVER() antlr.TerminalNode { + return s.GetToken(CqlParserK_OVER, 0) +} + +func (s *ReservedKeywordContext) K_PARTITION() antlr.TerminalNode { + return s.GetToken(CqlParserK_PARTITION, 0) +} + +func (s *ReservedKeywordContext) K_PRECEDING() antlr.TerminalNode { + return s.GetToken(CqlParserK_PRECEDING, 0) +} + func (s *ReservedKeywordContext) K_PRIMARY() antlr.TerminalNode { return s.GetToken(CqlParserK_PRIMARY, 0) } +func (s *ReservedKeywordContext) K_PROTO() antlr.TerminalNode { + return s.GetToken(CqlParserK_PROTO, 0) +} + +func (s *ReservedKeywordContext) K_QUALIFY() antlr.TerminalNode { + return s.GetToken(CqlParserK_QUALIFY, 0) +} + +func (s *ReservedKeywordContext) K_RANGE() antlr.TerminalNode { + return s.GetToken(CqlParserK_RANGE, 0) +} + +func (s *ReservedKeywordContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(CqlParserK_RECURSIVE, 0) +} + func (s *ReservedKeywordContext) K_RENAME() antlr.TerminalNode { return s.GetToken(CqlParserK_RENAME, 0) } @@ -6675,10 +7072,26 @@ func (s *ReservedKeywordContext) K_REPLACE() antlr.TerminalNode { return s.GetToken(CqlParserK_REPLACE, 0) } +func (s *ReservedKeywordContext) K_RESPECT() antlr.TerminalNode { + return s.GetToken(CqlParserK_RESPECT, 0) +} + func (s *ReservedKeywordContext) K_REVOKE() antlr.TerminalNode { return s.GetToken(CqlParserK_REVOKE, 0) } +func (s *ReservedKeywordContext) K_RIGHT() antlr.TerminalNode { + return s.GetToken(CqlParserK_RIGHT, 0) +} + +func (s *ReservedKeywordContext) K_ROLLUP() antlr.TerminalNode { + return s.GetToken(CqlParserK_ROLLUP, 0) +} + +func (s *ReservedKeywordContext) K_ROWS() antlr.TerminalNode { + return s.GetToken(CqlParserK_ROWS, 0) +} + func (s *ReservedKeywordContext) K_SCHEMA() antlr.TerminalNode { return s.GetToken(CqlParserK_SCHEMA, 0) } @@ -6691,10 +7104,26 @@ func (s *ReservedKeywordContext) K_SET() antlr.TerminalNode { return s.GetToken(CqlParserK_SET, 0) } +func (s *ReservedKeywordContext) K_SOME() antlr.TerminalNode { + return s.GetToken(CqlParserK_SOME, 0) +} + +func (s *ReservedKeywordContext) K_STRUCT() antlr.TerminalNode { + return s.GetToken(CqlParserK_STRUCT, 0) +} + func (s *ReservedKeywordContext) K_TABLE() antlr.TerminalNode { return s.GetToken(CqlParserK_TABLE, 0) } +func (s *ReservedKeywordContext) K_TABLESAMPLE() antlr.TerminalNode { + return s.GetToken(CqlParserK_TABLESAMPLE, 0) +} + +func (s *ReservedKeywordContext) K_THEN() antlr.TerminalNode { + return s.GetToken(CqlParserK_THEN, 0) +} + func (s *ReservedKeywordContext) K_TO() antlr.TerminalNode { return s.GetToken(CqlParserK_TO, 0) } @@ -6703,14 +7132,34 @@ func (s *ReservedKeywordContext) K_TOKEN() antlr.TerminalNode { return s.GetToken(CqlParserK_TOKEN, 0) } +func (s *ReservedKeywordContext) K_TREAT() antlr.TerminalNode { + return s.GetToken(CqlParserK_TREAT, 0) +} + +func (s *ReservedKeywordContext) K_TRUE() antlr.TerminalNode { + return s.GetToken(CqlParserK_TRUE, 0) +} + func (s *ReservedKeywordContext) K_TRUNCATE() antlr.TerminalNode { return s.GetToken(CqlParserK_TRUNCATE, 0) } +func (s *ReservedKeywordContext) K_UNBOUNDED() antlr.TerminalNode { + return s.GetToken(CqlParserK_UNBOUNDED, 0) +} + +func (s *ReservedKeywordContext) K_UNION() antlr.TerminalNode { + return s.GetToken(CqlParserK_UNION, 0) +} + func (s *ReservedKeywordContext) K_UNLOGGED() antlr.TerminalNode { return s.GetToken(CqlParserK_UNLOGGED, 0) } +func (s *ReservedKeywordContext) K_UNNEST() antlr.TerminalNode { + return s.GetToken(CqlParserK_UNNEST, 0) +} + func (s *ReservedKeywordContext) K_UPDATE() antlr.TerminalNode { return s.GetToken(CqlParserK_UPDATE, 0) } @@ -6723,20 +7172,28 @@ func (s *ReservedKeywordContext) K_USING() antlr.TerminalNode { return s.GetToken(CqlParserK_USING, 0) } +func (s *ReservedKeywordContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(CqlParserK_VIEW, 0) +} + +func (s *ReservedKeywordContext) K_WHEN() antlr.TerminalNode { + return s.GetToken(CqlParserK_WHEN, 0) +} + func (s *ReservedKeywordContext) K_WHERE() antlr.TerminalNode { return s.GetToken(CqlParserK_WHERE, 0) } -func (s *ReservedKeywordContext) K_WITH() antlr.TerminalNode { - return s.GetToken(CqlParserK_WITH, 0) +func (s *ReservedKeywordContext) K_WINDOW() antlr.TerminalNode { + return s.GetToken(CqlParserK_WINDOW, 0) } -func (s *ReservedKeywordContext) K_MATERIALIZED() antlr.TerminalNode { - return s.GetToken(CqlParserK_MATERIALIZED, 0) +func (s *ReservedKeywordContext) K_WITH() antlr.TerminalNode { + return s.GetToken(CqlParserK_WITH, 0) } -func (s *ReservedKeywordContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(CqlParserK_VIEW, 0) +func (s *ReservedKeywordContext) K_WITHIN() antlr.TerminalNode { + return s.GetToken(CqlParserK_WITHIN, 0) } func (s *ReservedKeywordContext) GetRuleContext() antlr.RuleContext { @@ -6769,7 +7226,7 @@ func (p *CqlParser) ReservedKeyword() (localctx IReservedKeywordContext) { p.SetState(540) _la = p.GetTokenStream().LA(1) - if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-7977060089555961102) != 0) || ((int64((_la-67)) & ^0x3f) == 0 && ((int64(1)<<(_la-67))&487076369017834987) != 0)) { + if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-8070521870123274246) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&4538218011079409611) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-4750187407873683969) != 0) || _la == CqlParserK_VIEW) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -6799,8 +7256,6 @@ type INonReservedKeywordContext interface { // Getter signatures K_AGGREGATE() antlr.TerminalNode - K_ALL() antlr.TerminalNode - K_AS() antlr.TerminalNode K_ASCII() antlr.TerminalNode K_BIGINT() antlr.TerminalNode K_BLOB() antlr.TerminalNode @@ -6808,15 +7263,12 @@ type INonReservedKeywordContext interface { K_CALLED() antlr.TerminalNode K_CLUSTERING() antlr.TerminalNode K_COMPACT() antlr.TerminalNode - K_CONTAINS() antlr.TerminalNode K_COUNT() antlr.TerminalNode K_COUNTER() antlr.TerminalNode K_CUSTOM() antlr.TerminalNode K_DATE() antlr.TerminalNode K_DECIMAL() antlr.TerminalNode - K_DISTINCT() antlr.TerminalNode K_DOUBLE() antlr.TerminalNode - K_EXISTS() antlr.TerminalNode K_FILTERING() antlr.TerminalNode K_FINALFUNC() antlr.TerminalNode K_FLOAT() antlr.TerminalNode @@ -6907,14 +7359,6 @@ func (s *NonReservedKeywordContext) K_AGGREGATE() antlr.TerminalNode { return s.GetToken(CqlParserK_AGGREGATE, 0) } -func (s *NonReservedKeywordContext) K_ALL() antlr.TerminalNode { - return s.GetToken(CqlParserK_ALL, 0) -} - -func (s *NonReservedKeywordContext) K_AS() antlr.TerminalNode { - return s.GetToken(CqlParserK_AS, 0) -} - func (s *NonReservedKeywordContext) K_ASCII() antlr.TerminalNode { return s.GetToken(CqlParserK_ASCII, 0) } @@ -6943,10 +7387,6 @@ func (s *NonReservedKeywordContext) K_COMPACT() antlr.TerminalNode { return s.GetToken(CqlParserK_COMPACT, 0) } -func (s *NonReservedKeywordContext) K_CONTAINS() antlr.TerminalNode { - return s.GetToken(CqlParserK_CONTAINS, 0) -} - func (s *NonReservedKeywordContext) K_COUNT() antlr.TerminalNode { return s.GetToken(CqlParserK_COUNT, 0) } @@ -6967,18 +7407,10 @@ func (s *NonReservedKeywordContext) K_DECIMAL() antlr.TerminalNode { return s.GetToken(CqlParserK_DECIMAL, 0) } -func (s *NonReservedKeywordContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(CqlParserK_DISTINCT, 0) -} - func (s *NonReservedKeywordContext) K_DOUBLE() antlr.TerminalNode { return s.GetToken(CqlParserK_DOUBLE, 0) } -func (s *NonReservedKeywordContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(CqlParserK_EXISTS, 0) -} - func (s *NonReservedKeywordContext) K_FILTERING() antlr.TerminalNode { return s.GetToken(CqlParserK_FILTERING, 0) } @@ -7205,7 +7637,7 @@ func (p *CqlParser) NonReservedKeyword() (localctx INonReservedKeywordContext) { p.SetState(542) _la = p.GetTokenStream().LA(1) - if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&7977060089555961100) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&715075066284708007) != 0)) { + if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8070521870123274244) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&8088817534084923405) != 0) || ((int64((_la-138)) & ^0x3f) == 0 && ((int64(1)<<(_la-138))&9277709781003289) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) diff --git a/translator/translator_test.go b/translator/translator_test.go index 2df71fe..e8b9d2e 100644 --- a/translator/translator_test.go +++ b/translator/translator_test.go @@ -768,14 +768,14 @@ func TestToSpannerStmt_CreateTable(t *testing.T) { cqlStmt: `Create table (pk text)`, expectedSpannerStmt: "", expectError: true, - expectedErrorMsg: "SyntaxException: extraneous input '(' expecting {'AGGREGATE', 'ALL', 'AS', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'CONTAINS', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DISTINCT', 'DOUBLE', 'EXISTS', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'IF', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER, IDENTIFIER_WITH_HYPHEN} at line 1, column 13", + expectedErrorMsg: "SyntaxException: extraneous input '(' expecting {'AGGREGATE', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DOUBLE', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'IF', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER, IDENTIFIER_WITH_HYPHEN} at line 1, column 13", }, { name: "No column definition Syntax Error", cqlStmt: `Create table ks.t ()`, expectedSpannerStmt: "", expectError: true, - expectedErrorMsg: "SyntaxException: mismatched input ')' expecting {'AGGREGATE', 'ALL', 'AS', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'CONTAINS', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DISTINCT', 'DOUBLE', 'EXISTS', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER} at line 1, column 19", + expectedErrorMsg: "SyntaxException: mismatched input ')' expecting {'AGGREGATE', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DOUBLE', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER} at line 1, column 19", }, // Testcases for invalid keyspace name. { @@ -807,7 +807,7 @@ func TestToSpannerStmt_CreateTable(t *testing.T) { )`, expectedSpannerStmt: "", expectError: true, - expectedErrorMsg: "SyntaxException: extraneous input 'SCHEMA' expecting {'AGGREGATE', 'ALL', 'AS', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'CONTAINS', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DISTINCT', 'DOUBLE', 'EXISTS', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER} at line 2, column 6", + expectedErrorMsg: "SyntaxException: extraneous input 'SCHEMA' expecting {'AGGREGATE', 'ASCII', 'BIGINT', 'BLOB', 'BOOLEAN', 'CALLED', 'CLUSTERING', 'COMPACT', 'COUNT', 'COUNTER', 'CUSTOM', 'DATE', 'DECIMAL', 'DOUBLE', 'FILTERING', 'FINALFUNC', 'FLOAT', 'FROZEN', 'FUNCTION', 'FUNCTIONS', 'INET', 'INITCOND', 'INPUT', 'INT', 'JSON', 'KEY', 'KEYS', 'KEYSPACES', 'LANGUAGE', 'LIST', 'LOGIN', 'MAP', 'NOLOGIN', 'NOSUPERUSER', 'OPTIONS', 'PASSWORD', 'PERMISSION', 'PERMISSIONS', 'RETURNS', 'ROLE', 'ROLES', 'SFUNC', 'SMALLINT', 'STATIC', 'STORAGE', 'STYPE', 'SUPERUSER', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMEUUID', 'TINYINT', 'TRIGGER', 'TTL', 'TUPLE', 'TYPE', 'USER', 'USERS', 'UUID', 'VALUES', 'VARCHAR', 'VARINT', 'WRITETIME', IDENTIFIER} at line 2, column 6", }, }