diff --git a/include/common/ttokendef.h b/include/common/ttokendef.h index 641cbbb588..10b5328e6d 100644 --- a/include/common/ttokendef.h +++ b/include/common/ttokendef.h @@ -16,335 +16,336 @@ #ifndef _TD_COMMON_TOKEN_H_ #define _TD_COMMON_TOKEN_H_ -#define TK_OR 1 -#define TK_AND 2 -#define TK_UNION 3 -#define TK_ALL 4 -#define TK_MINUS 5 -#define TK_EXCEPT 6 -#define TK_INTERSECT 7 -#define TK_NK_BITAND 8 -#define TK_NK_BITOR 9 -#define TK_NK_LSHIFT 10 -#define TK_NK_RSHIFT 11 -#define TK_NK_PLUS 12 -#define TK_NK_MINUS 13 -#define TK_NK_STAR 14 -#define TK_NK_SLASH 15 -#define TK_NK_REM 16 -#define TK_NK_CONCAT 17 -#define TK_CREATE 18 -#define TK_ACCOUNT 19 -#define TK_NK_ID 20 -#define TK_PASS 21 -#define TK_NK_STRING 22 -#define TK_ALTER 23 -#define TK_PPS 24 -#define TK_TSERIES 25 -#define TK_STORAGE 26 -#define TK_STREAMS 27 -#define TK_QTIME 28 -#define TK_DBS 29 -#define TK_USERS 30 -#define TK_CONNS 31 -#define TK_STATE 32 -#define TK_USER 33 -#define TK_ENABLE 34 -#define TK_NK_INTEGER 35 -#define TK_SYSINFO 36 -#define TK_DROP 37 -#define TK_GRANT 38 -#define TK_ON 39 -#define TK_TO 40 -#define TK_REVOKE 41 -#define TK_FROM 42 -#define TK_SUBSCRIBE 43 -#define TK_NK_COMMA 44 -#define TK_READ 45 -#define TK_WRITE 46 -#define TK_NK_DOT 47 -#define TK_WITH 48 -#define TK_DNODE 49 -#define TK_PORT 50 -#define TK_DNODES 51 -#define TK_NK_IPTOKEN 52 -#define TK_FORCE 53 -#define TK_LOCAL 54 -#define TK_QNODE 55 -#define TK_BNODE 56 -#define TK_SNODE 57 -#define TK_MNODE 58 -#define TK_DATABASE 59 -#define TK_USE 60 -#define TK_FLUSH 61 -#define TK_TRIM 62 -#define TK_COMPACT 63 -#define TK_IF 64 -#define TK_NOT 65 -#define TK_EXISTS 66 -#define TK_BUFFER 67 -#define TK_CACHEMODEL 68 -#define TK_CACHESIZE 69 -#define TK_COMP 70 -#define TK_DURATION 71 -#define TK_NK_VARIABLE 72 -#define TK_MAXROWS 73 -#define TK_MINROWS 74 -#define TK_KEEP 75 -#define TK_PAGES 76 -#define TK_PAGESIZE 77 -#define TK_TSDB_PAGESIZE 78 -#define TK_PRECISION 79 -#define TK_REPLICA 80 -#define TK_VGROUPS 81 -#define TK_SINGLE_STABLE 82 -#define TK_RETENTIONS 83 -#define TK_SCHEMALESS 84 -#define TK_WAL_LEVEL 85 -#define TK_WAL_FSYNC_PERIOD 86 -#define TK_WAL_RETENTION_PERIOD 87 -#define TK_WAL_RETENTION_SIZE 88 -#define TK_WAL_ROLL_PERIOD 89 -#define TK_WAL_SEGMENT_SIZE 90 -#define TK_STT_TRIGGER 91 -#define TK_TABLE_PREFIX 92 -#define TK_TABLE_SUFFIX 93 -#define TK_NK_COLON 94 -#define TK_MAX_SPEED 95 -#define TK_START 96 -#define TK_TIMESTAMP 97 -#define TK_END 98 -#define TK_TABLE 99 -#define TK_NK_LP 100 -#define TK_NK_RP 101 -#define TK_STABLE 102 -#define TK_ADD 103 -#define TK_COLUMN 104 -#define TK_MODIFY 105 -#define TK_RENAME 106 -#define TK_TAG 107 -#define TK_SET 108 -#define TK_NK_EQ 109 -#define TK_USING 110 -#define TK_TAGS 111 -#define TK_BOOL 112 -#define TK_TINYINT 113 -#define TK_SMALLINT 114 -#define TK_INT 115 -#define TK_INTEGER 116 -#define TK_BIGINT 117 -#define TK_FLOAT 118 -#define TK_DOUBLE 119 -#define TK_BINARY 120 -#define TK_NCHAR 121 -#define TK_UNSIGNED 122 -#define TK_JSON 123 -#define TK_VARCHAR 124 -#define TK_MEDIUMBLOB 125 -#define TK_BLOB 126 -#define TK_VARBINARY 127 -#define TK_DECIMAL 128 -#define TK_COMMENT 129 -#define TK_MAX_DELAY 130 -#define TK_WATERMARK 131 -#define TK_ROLLUP 132 -#define TK_TTL 133 -#define TK_SMA 134 -#define TK_DELETE_MARK 135 -#define TK_FIRST 136 -#define TK_LAST 137 -#define TK_SHOW 138 -#define TK_PRIVILEGES 139 -#define TK_DATABASES 140 -#define TK_TABLES 141 -#define TK_STABLES 142 -#define TK_MNODES 143 -#define TK_QNODES 144 -#define TK_FUNCTIONS 145 -#define TK_INDEXES 146 -#define TK_ACCOUNTS 147 -#define TK_APPS 148 -#define TK_CONNECTIONS 149 -#define TK_LICENCES 150 -#define TK_GRANTS 151 -#define TK_QUERIES 152 -#define TK_SCORES 153 -#define TK_TOPICS 154 -#define TK_VARIABLES 155 -#define TK_CLUSTER 156 -#define TK_BNODES 157 -#define TK_SNODES 158 -#define TK_TRANSACTIONS 159 -#define TK_DISTRIBUTED 160 -#define TK_CONSUMERS 161 -#define TK_SUBSCRIPTIONS 162 -#define TK_VNODES 163 -#define TK_ALIVE 164 -#define TK_LIKE 165 -#define TK_TBNAME 166 -#define TK_QTAGS 167 -#define TK_AS 168 -#define TK_INDEX 169 -#define TK_FUNCTION 170 -#define TK_INTERVAL 171 -#define TK_COUNT 172 -#define TK_LAST_ROW 173 -#define TK_TOPIC 174 -#define TK_META 175 -#define TK_CONSUMER 176 -#define TK_GROUP 177 -#define TK_DESC 178 -#define TK_DESCRIBE 179 -#define TK_RESET 180 -#define TK_QUERY 181 -#define TK_CACHE 182 -#define TK_EXPLAIN 183 -#define TK_ANALYZE 184 -#define TK_VERBOSE 185 -#define TK_NK_BOOL 186 -#define TK_RATIO 187 -#define TK_NK_FLOAT 188 -#define TK_OUTPUTTYPE 189 -#define TK_AGGREGATE 190 -#define TK_BUFSIZE 191 -#define TK_LANGUAGE 192 -#define TK_REPLACE 193 -#define TK_STREAM 194 -#define TK_INTO 195 -#define TK_TRIGGER 196 -#define TK_AT_ONCE 197 -#define TK_WINDOW_CLOSE 198 -#define TK_IGNORE 199 -#define TK_EXPIRED 200 -#define TK_FILL_HISTORY 201 -#define TK_UPDATE 202 -#define TK_SUBTABLE 203 -#define TK_KILL 204 -#define TK_CONNECTION 205 -#define TK_TRANSACTION 206 -#define TK_BALANCE 207 -#define TK_VGROUP 208 -#define TK_LEADER 209 -#define TK_MERGE 210 -#define TK_REDISTRIBUTE 211 -#define TK_SPLIT 212 -#define TK_DELETE 213 -#define TK_INSERT 214 -#define TK_NULL 215 -#define TK_NK_QUESTION 216 -#define TK_NK_ARROW 217 -#define TK_ROWTS 218 -#define TK_QSTART 219 -#define TK_QEND 220 -#define TK_QDURATION 221 -#define TK_WSTART 222 -#define TK_WEND 223 -#define TK_WDURATION 224 -#define TK_IROWTS 225 -#define TK_ISFILLED 226 -#define TK_CAST 227 -#define TK_NOW 228 -#define TK_TODAY 229 -#define TK_TIMEZONE 230 -#define TK_CLIENT_VERSION 231 -#define TK_SERVER_VERSION 232 -#define TK_SERVER_STATUS 233 -#define TK_CURRENT_USER 234 -#define TK_CASE 235 -#define TK_WHEN 236 -#define TK_THEN 237 -#define TK_ELSE 238 -#define TK_BETWEEN 239 -#define TK_IS 240 -#define TK_NK_LT 241 -#define TK_NK_GT 242 -#define TK_NK_LE 243 -#define TK_NK_GE 244 -#define TK_NK_NE 245 -#define TK_MATCH 246 -#define TK_NMATCH 247 -#define TK_CONTAINS 248 -#define TK_IN 249 -#define TK_JOIN 250 -#define TK_INNER 251 -#define TK_SELECT 252 -#define TK_DISTINCT 253 -#define TK_WHERE 254 -#define TK_PARTITION 255 -#define TK_BY 256 -#define TK_SESSION 257 -#define TK_STATE_WINDOW 258 -#define TK_EVENT_WINDOW 259 -#define TK_SLIDING 260 -#define TK_FILL 261 -#define TK_VALUE 262 -#define TK_VALUE_F 263 -#define TK_NONE 264 -#define TK_PREV 265 -#define TK_NULL_F 266 -#define TK_LINEAR 267 -#define TK_NEXT 268 -#define TK_HAVING 269 -#define TK_RANGE 270 -#define TK_EVERY 271 -#define TK_ORDER 272 -#define TK_SLIMIT 273 -#define TK_SOFFSET 274 -#define TK_LIMIT 275 -#define TK_OFFSET 276 -#define TK_ASC 277 -#define TK_NULLS 278 -#define TK_ABORT 279 -#define TK_AFTER 280 -#define TK_ATTACH 281 -#define TK_BEFORE 282 -#define TK_BEGIN 283 -#define TK_BITAND 284 -#define TK_BITNOT 285 -#define TK_BITOR 286 -#define TK_BLOCKS 287 -#define TK_CHANGE 288 -#define TK_COMMA 289 -#define TK_CONCAT 290 -#define TK_CONFLICT 291 -#define TK_COPY 292 -#define TK_DEFERRED 293 -#define TK_DELIMITERS 294 -#define TK_DETACH 295 -#define TK_DIVIDE 296 -#define TK_DOT 297 -#define TK_EACH 298 -#define TK_FAIL 299 -#define TK_FILE 300 -#define TK_FOR 301 -#define TK_GLOB 302 -#define TK_ID 303 -#define TK_IMMEDIATE 304 -#define TK_IMPORT 305 -#define TK_INITIALLY 306 -#define TK_INSTEAD 307 -#define TK_ISNULL 308 -#define TK_KEY 309 -#define TK_MODULES 310 -#define TK_NK_BITNOT 311 -#define TK_NK_SEMI 312 -#define TK_NOTNULL 313 -#define TK_OF 314 -#define TK_PLUS 315 -#define TK_PRIVILEGE 316 -#define TK_RAISE 317 -#define TK_RESTRICT 318 -#define TK_ROW 319 -#define TK_SEMI 320 -#define TK_STAR 321 -#define TK_STATEMENT 322 -#define TK_STRICT 323 -#define TK_STRING 324 -#define TK_TIMES 325 -#define TK_VALUES 326 -#define TK_VARIABLE 327 -#define TK_VIEW 328 -#define TK_WAL 329 +#define TK_OR 1 +#define TK_AND 2 +#define TK_UNION 3 +#define TK_ALL 4 +#define TK_MINUS 5 +#define TK_EXCEPT 6 +#define TK_INTERSECT 7 +#define TK_NK_BITAND 8 +#define TK_NK_BITOR 9 +#define TK_NK_LSHIFT 10 +#define TK_NK_RSHIFT 11 +#define TK_NK_PLUS 12 +#define TK_NK_MINUS 13 +#define TK_NK_STAR 14 +#define TK_NK_SLASH 15 +#define TK_NK_REM 16 +#define TK_NK_CONCAT 17 +#define TK_CREATE 18 +#define TK_ACCOUNT 19 +#define TK_NK_ID 20 +#define TK_PASS 21 +#define TK_NK_STRING 22 +#define TK_ALTER 23 +#define TK_PPS 24 +#define TK_TSERIES 25 +#define TK_STORAGE 26 +#define TK_STREAMS 27 +#define TK_QTIME 28 +#define TK_DBS 29 +#define TK_USERS 30 +#define TK_CONNS 31 +#define TK_STATE 32 +#define TK_USER 33 +#define TK_ENABLE 34 +#define TK_NK_INTEGER 35 +#define TK_SYSINFO 36 +#define TK_DROP 37 +#define TK_GRANT 38 +#define TK_ON 39 +#define TK_TO 40 +#define TK_REVOKE 41 +#define TK_FROM 42 +#define TK_SUBSCRIBE 43 +#define TK_NK_COMMA 44 +#define TK_READ 45 +#define TK_WRITE 46 +#define TK_NK_DOT 47 +#define TK_WITH 48 +#define TK_DNODE 49 +#define TK_PORT 50 +#define TK_DNODES 51 +#define TK_NK_IPTOKEN 52 +#define TK_FORCE 53 +#define TK_LOCAL 54 +#define TK_QNODE 55 +#define TK_BNODE 56 +#define TK_SNODE 57 +#define TK_MNODE 58 +#define TK_DATABASE 59 +#define TK_USE 60 +#define TK_FLUSH 61 +#define TK_TRIM 62 +#define TK_COMPACT 63 +#define TK_IF 64 +#define TK_NOT 65 +#define TK_EXISTS 66 +#define TK_BUFFER 67 +#define TK_CACHEMODEL 68 +#define TK_CACHESIZE 69 +#define TK_COMP 70 +#define TK_DURATION 71 +#define TK_NK_VARIABLE 72 +#define TK_MAXROWS 73 +#define TK_MINROWS 74 +#define TK_KEEP 75 +#define TK_PAGES 76 +#define TK_PAGESIZE 77 +#define TK_TSDB_PAGESIZE 78 +#define TK_PRECISION 79 +#define TK_REPLICA 80 +#define TK_VGROUPS 81 +#define TK_SINGLE_STABLE 82 +#define TK_RETENTIONS 83 +#define TK_SCHEMALESS 84 +#define TK_WAL_LEVEL 85 +#define TK_WAL_FSYNC_PERIOD 86 +#define TK_WAL_RETENTION_PERIOD 87 +#define TK_WAL_RETENTION_SIZE 88 +#define TK_WAL_ROLL_PERIOD 89 +#define TK_WAL_SEGMENT_SIZE 90 +#define TK_STT_TRIGGER 91 +#define TK_TABLE_PREFIX 92 +#define TK_TABLE_SUFFIX 93 +#define TK_NK_COLON 94 +#define TK_MAX_SPEED 95 +#define TK_START 96 +#define TK_TIMESTAMP 97 +#define TK_END 98 +#define TK_TABLE 99 +#define TK_NK_LP 100 +#define TK_NK_RP 101 +#define TK_STABLE 102 +#define TK_ADD 103 +#define TK_COLUMN 104 +#define TK_MODIFY 105 +#define TK_RENAME 106 +#define TK_TAG 107 +#define TK_SET 108 +#define TK_NK_EQ 109 +#define TK_USING 110 +#define TK_TAGS 111 +#define TK_BOOL 112 +#define TK_TINYINT 113 +#define TK_SMALLINT 114 +#define TK_INT 115 +#define TK_INTEGER 116 +#define TK_BIGINT 117 +#define TK_FLOAT 118 +#define TK_DOUBLE 119 +#define TK_BINARY 120 +#define TK_NCHAR 121 +#define TK_UNSIGNED 122 +#define TK_JSON 123 +#define TK_VARCHAR 124 +#define TK_MEDIUMBLOB 125 +#define TK_BLOB 126 +#define TK_VARBINARY 127 +#define TK_DECIMAL 128 +#define TK_COMMENT 129 +#define TK_MAX_DELAY 130 +#define TK_WATERMARK 131 +#define TK_ROLLUP 132 +#define TK_TTL 133 +#define TK_SMA 134 +#define TK_DELETE_MARK 135 +#define TK_FIRST 136 +#define TK_LAST 137 +#define TK_SHOW 138 +#define TK_PRIVILEGES 139 +#define TK_DATABASES 140 +#define TK_TABLES 141 +#define TK_STABLES 142 +#define TK_MNODES 143 +#define TK_QNODES 144 +#define TK_FUNCTIONS 145 +#define TK_INDEXES 146 +#define TK_ACCOUNTS 147 +#define TK_APPS 148 +#define TK_CONNECTIONS 149 +#define TK_LICENCES 150 +#define TK_GRANTS 151 +#define TK_QUERIES 152 +#define TK_SCORES 153 +#define TK_TOPICS 154 +#define TK_VARIABLES 155 +#define TK_CLUSTER 156 +#define TK_BNODES 157 +#define TK_SNODES 158 +#define TK_TRANSACTIONS 159 +#define TK_DISTRIBUTED 160 +#define TK_CONSUMERS 161 +#define TK_SUBSCRIPTIONS 162 +#define TK_VNODES 163 +#define TK_ALIVE 164 +#define TK_LIKE 165 +#define TK_TBNAME 166 +#define TK_QTAGS 167 +#define TK_AS 168 +#define TK_INDEX 169 +#define TK_FUNCTION 170 +#define TK_INTERVAL 171 +#define TK_COUNT 172 +#define TK_LAST_ROW 173 +#define TK_TOPIC 174 +#define TK_META 175 +#define TK_CONSUMER 176 +#define TK_GROUP 177 +#define TK_DESC 178 +#define TK_DESCRIBE 179 +#define TK_RESET 180 +#define TK_QUERY 181 +#define TK_CACHE 182 +#define TK_EXPLAIN 183 +#define TK_ANALYZE 184 +#define TK_VERBOSE 185 +#define TK_NK_BOOL 186 +#define TK_RATIO 187 +#define TK_NK_FLOAT 188 +#define TK_OUTPUTTYPE 189 +#define TK_AGGREGATE 190 +#define TK_BUFSIZE 191 +#define TK_LANGUAGE 192 +#define TK_REPLACE 193 +#define TK_STREAM 194 +#define TK_INTO 195 +#define TK_TRIGGER 196 +#define TK_AT_ONCE 197 +#define TK_WINDOW_CLOSE 198 +#define TK_IGNORE 199 +#define TK_EXPIRED 200 +#define TK_FILL_HISTORY 201 +#define TK_UPDATE 202 +#define TK_SUBTABLE 203 +#define TK_KILL 204 +#define TK_CONNECTION 205 +#define TK_TRANSACTION 206 +#define TK_BALANCE 207 +#define TK_VGROUP 208 +#define TK_LEADER 209 +#define TK_MERGE 210 +#define TK_REDISTRIBUTE 211 +#define TK_SPLIT 212 +#define TK_DELETE 213 +#define TK_INSERT 214 +#define TK_NULL 215 +#define TK_NK_QUESTION 216 +#define TK_NK_ARROW 217 +#define TK_ROWTS 218 +#define TK_QSTART 219 +#define TK_QEND 220 +#define TK_QDURATION 221 +#define TK_WSTART 222 +#define TK_WEND 223 +#define TK_WDURATION 224 +#define TK_IROWTS 225 +#define TK_ISFILLED 226 +#define TK_CAST 227 +#define TK_NOW 228 +#define TK_TODAY 229 +#define TK_TIMEZONE 230 +#define TK_CLIENT_VERSION 231 +#define TK_SERVER_VERSION 232 +#define TK_SERVER_STATUS 233 +#define TK_CURRENT_USER 234 +#define TK_CASE 235 +#define TK_WHEN 236 +#define TK_THEN 237 +#define TK_ELSE 238 +#define TK_BETWEEN 239 +#define TK_IS 240 +#define TK_NK_LT 241 +#define TK_NK_GT 242 +#define TK_NK_LE 243 +#define TK_NK_GE 244 +#define TK_NK_NE 245 +#define TK_MATCH 246 +#define TK_NMATCH 247 +#define TK_CONTAINS 248 +#define TK_IN 249 +#define TK_JOIN 250 +#define TK_INNER 251 +#define TK_SELECT 252 +#define TK_DISTINCT 253 +#define TK_WHERE 254 +#define TK_PARTITION 255 +#define TK_BY 256 +#define TK_SESSION 257 +#define TK_STATE_WINDOW 258 +#define TK_EVENT_WINDOW 259 +#define TK_SLIDING 260 +#define TK_FILL 261 +#define TK_VALUE 262 +#define TK_VALUE_F 263 +#define TK_NONE 264 +#define TK_PREV 265 +#define TK_NULL_F 266 +#define TK_LINEAR 267 +#define TK_NEXT 268 +#define TK_HAVING 269 +#define TK_RANGE 270 +#define TK_EVERY 271 +#define TK_ORDER 272 +#define TK_SLIMIT 273 +#define TK_SOFFSET 274 +#define TK_LIMIT 275 +#define TK_OFFSET 276 +#define TK_ASC 277 +#define TK_NULLS 278 +#define TK_ABORT 279 +#define TK_AFTER 280 +#define TK_ATTACH 281 +#define TK_BEFORE 282 +#define TK_BEGIN 283 +#define TK_BITAND 284 +#define TK_BITNOT 285 +#define TK_BITOR 286 +#define TK_BLOCKS 287 +#define TK_CHANGE 288 +#define TK_COMMA 289 +#define TK_CONCAT 290 +#define TK_CONFLICT 291 +#define TK_COPY 292 +#define TK_DEFERRED 293 +#define TK_DELIMITERS 294 +#define TK_DETACH 295 +#define TK_DIVIDE 296 +#define TK_DOT 297 +#define TK_EACH 298 +#define TK_FAIL 299 +#define TK_FILE 300 +#define TK_FOR 301 +#define TK_GLOB 302 +#define TK_ID 303 +#define TK_IMMEDIATE 304 +#define TK_IMPORT 305 +#define TK_INITIALLY 306 +#define TK_INSTEAD 307 +#define TK_ISNULL 308 +#define TK_KEY 309 +#define TK_MODULES 310 +#define TK_NK_BITNOT 311 +#define TK_NK_SEMI 312 +#define TK_NOTNULL 313 +#define TK_OF 314 +#define TK_PLUS 315 +#define TK_PRIVILEGE 316 +#define TK_RAISE 317 +#define TK_RESTRICT 318 +#define TK_ROW 319 +#define TK_SEMI 320 +#define TK_STAR 321 +#define TK_STATEMENT 322 +#define TK_STRICT 323 +#define TK_STRING 324 +#define TK_TIMES 325 +#define TK_VALUES 326 +#define TK_VARIABLE 327 +#define TK_VIEW 328 +#define TK_WAL 329 + #define TK_NK_SPACE 600 #define TK_NK_COMMENT 601 diff --git a/include/util/tdef.h b/include/util/tdef.h index 2f86395dad..680620a094 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -368,11 +368,11 @@ typedef enum ELogicConditionType { #define TSDB_MIN_STT_TRIGGER 1 #define TSDB_MAX_STT_TRIGGER 16 #define TSDB_DEFAULT_SST_TRIGGER 1 -#define TSDB_MIN_HASH_PREFIX 0 -#define TSDB_MAX_HASH_PREFIX 128 +#define TSDB_MIN_HASH_PREFIX (2 - TSDB_TABLE_NAME_LEN) +#define TSDB_MAX_HASH_PREFIX (TSDB_TABLE_NAME_LEN - 2) #define TSDB_DEFAULT_HASH_PREFIX 0 -#define TSDB_MIN_HASH_SUFFIX 0 -#define TSDB_MAX_HASH_SUFFIX 128 +#define TSDB_MIN_HASH_SUFFIX (2 - TSDB_TABLE_NAME_LEN) +#define TSDB_MAX_HASH_SUFFIX (TSDB_TABLE_NAME_LEN - 2) #define TSDB_DEFAULT_HASH_SUFFIX 0 #define TSDB_DB_MIN_WAL_RETENTION_PERIOD -1 diff --git a/include/util/tutil.h b/include/util/tutil.h index e0801e5295..e96c7a07d9 100644 --- a/include/util/tutil.h +++ b/include/util/tutil.h @@ -81,14 +81,22 @@ static FORCE_INLINE void taosEncryptPass_c(uint8_t *inBuf, size_t len, char *tar static FORCE_INLINE int32_t taosGetTbHashVal(const char *tbname, int32_t tblen, int32_t method, int32_t prefix, int32_t suffix) { - if (prefix == 0 && suffix == 0) { + if ((prefix == 0 && suffix == 0) || (tblen <= (prefix + suffix)) || (tblen <= -1 * (prefix + suffix)) || prefix * suffix < 0) { return MurmurHash3_32(tbname, tblen); + } else if (prefix > 0 || suffix > 0) { + return MurmurHash3_32(tbname + prefix, tblen - prefix - suffix); } else { - if (tblen <= (prefix + suffix)) { - return MurmurHash3_32(tbname, tblen); - } else { - return MurmurHash3_32(tbname + prefix, tblen - prefix - suffix); + char tbName[TSDB_TABLE_FNAME_LEN]; + int32_t offset = 0; + if (prefix < 0) { + offset = -1 * prefix; + strncpy(tbName, tbname, offset); } + if (suffix < 0) { + strncpy(tbName + offset, tbname + tblen + suffix, -1 * suffix); + offset += -1 *suffix; + } + return MurmurHash3_32(tbName, offset); } } diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index e0b3e2bf74..23b2b9d7c6 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -373,6 +373,8 @@ static int32_t mndCheckDbCfg(SMnode *pMnode, SDbCfg *pCfg) { if (pCfg->sstTrigger < TSDB_MIN_STT_TRIGGER || pCfg->sstTrigger > TSDB_MAX_STT_TRIGGER) return -1; if (pCfg->hashPrefix < TSDB_MIN_HASH_PREFIX || pCfg->hashPrefix > TSDB_MAX_HASH_PREFIX) return -1; if (pCfg->hashSuffix < TSDB_MIN_HASH_SUFFIX || pCfg->hashSuffix > TSDB_MAX_HASH_SUFFIX) return -1; + if ((pCfg->hashSuffix * pCfg->hashPrefix) < 0) return -1; + if ((pCfg->hashPrefix + pCfg->hashSuffix) >= (TSDB_TABLE_NAME_LEN - 1)) return -1; if (pCfg->tsdbPageSize < TSDB_MIN_TSDB_PAGESIZE || pCfg->tsdbPageSize > TSDB_MAX_TSDB_PAGESIZE) return -1; if (taosArrayGetSize(pCfg->pRetensions) != pCfg->numOfRetensions) return -1; @@ -409,8 +411,6 @@ static void mndSetDefaultDbCfg(SDbCfg *pCfg) { if (pCfg->walRollPeriod < 0) pCfg->walRollPeriod = TSDB_REPS_DEF_DB_WAL_ROLL_PERIOD; if (pCfg->walSegmentSize < 0) pCfg->walSegmentSize = TSDB_DEFAULT_DB_WAL_SEGMENT_SIZE; if (pCfg->sstTrigger <= 0) pCfg->sstTrigger = TSDB_DEFAULT_SST_TRIGGER; - if (pCfg->hashPrefix < 0) pCfg->hashPrefix = TSDB_DEFAULT_HASH_PREFIX; - if (pCfg->hashSuffix < 0) pCfg->hashSuffix = TSDB_DEFAULT_HASH_SUFFIX; if (pCfg->tsdbPageSize <= 0) pCfg->tsdbPageSize = TSDB_DEFAULT_TSDB_PAGESIZE; } @@ -553,6 +553,10 @@ static int32_t mndCreateDb(SMnode *pMnode, SRpcMsg *pReq, SCreateDbReq *pCreate, int32_t dbLen = strlen(dbObj.name) + 1; mInfo("db:%s, hashPrefix adjust from %d to %d", dbObj.name, dbObj.cfg.hashPrefix, dbObj.cfg.hashPrefix + dbLen); dbObj.cfg.hashPrefix += dbLen; + } else if (dbObj.cfg.hashPrefix < 0) { + int32_t dbLen = strlen(dbObj.name) + 1; + mInfo("db:%s, hashPrefix adjust from %d to %d", dbObj.name, dbObj.cfg.hashPrefix, dbObj.cfg.hashPrefix - dbLen); + dbObj.cfg.hashPrefix -= dbLen; } SVgObj *pVgroups = NULL; @@ -1788,6 +1792,8 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, int16_t hashPrefix = pDb->cfg.hashPrefix; if (hashPrefix > 0) { hashPrefix = pDb->cfg.hashPrefix - strlen(pDb->name) - 1; + } else if (hashPrefix < 0) { + hashPrefix = pDb->cfg.hashPrefix + strlen(pDb->name) + 1; } colDataSetVal(pColInfo, rows, (const char *)&hashPrefix, false); diff --git a/source/libs/command/src/command.c b/source/libs/command/src/command.c index 58c43829cf..6efdd8d8eb 100644 --- a/source/libs/command/src/command.c +++ b/source/libs/command/src/command.c @@ -278,7 +278,12 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbName, ch char* retentions = buildRetension(pCfg->pRetensions); int32_t dbFNameLen = strlen(dbFName); - int32_t hashPrefix = (pCfg->hashPrefix > (dbFNameLen + 1)) ? (pCfg->hashPrefix - dbFNameLen - 1) : 0; + int32_t hashPrefix = 0; + if (pCfg->hashPrefix > 0) { + hashPrefix = pCfg->hashPrefix - dbFNameLen - 1; + } else if (pCfg->hashPrefix < 0) { + hashPrefix = pCfg->hashPrefix + dbFNameLen + 1; + } len += sprintf( buf2 + VARSTR_HEADER_SIZE, diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y old mode 100644 new mode 100755 index f99976e0df..5918b488b4 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -221,8 +221,8 @@ db_options(A) ::= db_options(B) WAL_RETENTION_SIZE NK_MINUS(D) NK_INTEGER(C). db_options(A) ::= db_options(B) WAL_ROLL_PERIOD NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_WAL_ROLL_PERIOD, &C); } db_options(A) ::= db_options(B) WAL_SEGMENT_SIZE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_WAL_SEGMENT_SIZE, &C); } db_options(A) ::= db_options(B) STT_TRIGGER NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_STT_TRIGGER, &C); } -db_options(A) ::= db_options(B) TABLE_PREFIX NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TABLE_PREFIX, &C); } -db_options(A) ::= db_options(B) TABLE_SUFFIX NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TABLE_SUFFIX, &C); } +db_options(A) ::= db_options(B) TABLE_PREFIX signed(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TABLE_PREFIX, C); } +db_options(A) ::= db_options(B) TABLE_SUFFIX signed(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TABLE_SUFFIX, C); } alter_db_options(A) ::= alter_db_option(B). { A = createAlterDatabaseOptions(pCxt); A = setAlterDatabaseOption(pCxt, A, &B); } alter_db_options(A) ::= alter_db_options(B) alter_db_option(C). { A = setAlterDatabaseOption(pCxt, B, &C); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index 2afe34c1f7..5a47ed731d 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -1024,12 +1024,28 @@ static SNode* setDatabaseOptionImpl(SAstCreateContext* pCxt, SNode* pOptions, ED case DB_OPTION_STT_TRIGGER: pDbOptions->sstTrigger = taosStr2Int32(((SToken*)pVal)->z, NULL, 10); break; - case DB_OPTION_TABLE_PREFIX: - pDbOptions->tablePrefix = taosStr2Int32(((SToken*)pVal)->z, NULL, 10); + case DB_OPTION_TABLE_PREFIX: { + SValueNode *pNode = (SValueNode *)pVal; + if (TSDB_DATA_TYPE_BIGINT == pNode->node.resType.type || TSDB_DATA_TYPE_UBIGINT == pNode->node.resType.type) { + pDbOptions->tablePrefix = taosStr2Int32(pNode->literal, NULL, 10); + } else { + snprintf(pCxt->pQueryCxt->pMsg, pCxt->pQueryCxt->msgLen, "invalid table_prefix data type"); + pCxt->errCode = TSDB_CODE_PAR_SYNTAX_ERROR; + } + nodesDestroyNode((SNode*)pNode); break; - case DB_OPTION_TABLE_SUFFIX: - pDbOptions->tableSuffix = taosStr2Int32(((SToken*)pVal)->z, NULL, 10); + } + case DB_OPTION_TABLE_SUFFIX:{ + SValueNode *pNode = (SValueNode *)pVal; + if (TSDB_DATA_TYPE_BIGINT == pNode->node.resType.type || TSDB_DATA_TYPE_UBIGINT == pNode->node.resType.type) { + pDbOptions->tableSuffix = taosStr2Int32(pNode->literal, NULL, 10); + } else { + snprintf(pCxt->pQueryCxt->pMsg, pCxt->pQueryCxt->msgLen, "invalid table_suffix data type"); + pCxt->errCode = TSDB_CODE_PAR_SYNTAX_ERROR; + } + nodesDestroyNode((SNode*)pNode); break; + } default: break; } diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index b44c36dde1..21ae3c74a2 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -4177,6 +4177,34 @@ static int32_t checkDbRetentionsOption(STranslateContext* pCxt, SNodeList* pRete return TSDB_CODE_SUCCESS; } + +static int32_t checkDbTbPrefixSuffixOptions(STranslateContext* pCxt, int32_t tbPrefix, int32_t tbSuffix) { + if (tbPrefix < TSDB_MIN_HASH_PREFIX || tbPrefix > TSDB_MAX_HASH_PREFIX) { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_DB_OPTION, + "Invalid option table_prefix: %d valid range: [%d, %d]", tbPrefix, + TSDB_MIN_HASH_PREFIX, TSDB_MAX_HASH_PREFIX); + } + + if (tbSuffix < TSDB_MIN_HASH_SUFFIX || tbSuffix > TSDB_MAX_HASH_SUFFIX) { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_DB_OPTION, + "Invalid option table_suffix: %d valid range: [%d, %d]", tbSuffix, + TSDB_MIN_HASH_SUFFIX, TSDB_MAX_HASH_SUFFIX); + } + + if ((tbPrefix * tbSuffix) < 0) { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_DB_OPTION, + "Invalid option table_prefix & table_suffix: mixed usage not allowed"); + } + + if ((tbPrefix + tbSuffix) >= (TSDB_TABLE_NAME_LEN - 1)) { + return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_DB_OPTION, + "Invalid option table_prefix & table_suffix: exceed max table name length"); + } + + return TSDB_CODE_SUCCESS; +} + + static int32_t checkOptionsDependency(STranslateContext* pCxt, const char* pDbName, SDatabaseOptions* pOptions) { int32_t daysPerFile = pOptions->daysPerFile; int64_t daysToKeep0 = pOptions->keep[0]; @@ -4284,10 +4312,7 @@ static int32_t checkDatabaseOptions(STranslateContext* pCxt, const char* pDbName code = checkDbRangeOption(pCxt, "sstTrigger", pOptions->sstTrigger, TSDB_MIN_STT_TRIGGER, TSDB_MAX_STT_TRIGGER); } if (TSDB_CODE_SUCCESS == code) { - code = checkDbRangeOption(pCxt, "tablePrefix", pOptions->tablePrefix, TSDB_MIN_HASH_PREFIX, TSDB_MAX_HASH_PREFIX); - } - if (TSDB_CODE_SUCCESS == code) { - code = checkDbRangeOption(pCxt, "tableSuffix", pOptions->tableSuffix, TSDB_MIN_HASH_SUFFIX, TSDB_MAX_HASH_SUFFIX); + code = checkDbTbPrefixSuffixOptions(pCxt, pOptions->tablePrefix, pOptions->tableSuffix); } if (TSDB_CODE_SUCCESS == code) { code = checkOptionsDependency(pCxt, pDbName, pOptions); diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 9ad5bcf644..2e473455e4 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -142,6 +142,7 @@ typedef union { #define YYFALLBACK 1 #define YYNSTATE 762 #define YYNRULE 583 +#define YYNRULE_WITH_ACTION 583 #define YYNTOKEN 330 #define YY_MAX_SHIFT 761 #define YY_MIN_SHIFTREDUCE 1136 @@ -217,711 +218,744 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (2905) +#define YY_ACTTAB_COUNT (2904) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 2116, 1881, 2010, 499, 432, 1877, 500, 1758, 431, 2102, - /* 10 */ 670, 2051, 46, 44, 1646, 1722, 2102, 2008, 640, 2098, - /* 20 */ 393, 504, 1495, 1520, 39, 38, 2098, 501, 45, 43, - /* 30 */ 42, 41, 40, 1576, 1791, 1493, 2134, 2010, 1520, 132, - /* 40 */ 131, 130, 129, 128, 127, 126, 125, 124, 2084, 384, - /* 50 */ 669, 591, 2007, 640, 2275, 2094, 2100, 374, 244, 1571, - /* 60 */ 28, 1944, 2094, 2100, 375, 19, 663, 652, 371, 2281, - /* 70 */ 184, 638, 1501, 663, 2276, 617, 1942, 628, 140, 1869, - /* 80 */ 507, 2115, 107, 500, 1758, 2151, 36, 296, 169, 2117, - /* 90 */ 673, 2119, 2120, 668, 168, 663, 1734, 758, 141, 9, - /* 100 */ 15, 735, 734, 733, 732, 403, 1884, 731, 730, 144, + /* 0 */ 2116, 2010, 1881, 396, 434, 168, 636, 1734, 433, 1989, + /* 10 */ 672, 162, 46, 44, 1646, 1723, 2008, 642, 374, 1894, + /* 20 */ 393, 506, 1495, 440, 39, 38, 1942, 503, 45, 43, + /* 30 */ 42, 41, 40, 1576, 1791, 1493, 123, 2134, 1520, 122, + /* 40 */ 121, 120, 119, 118, 117, 116, 115, 114, 2279, 2084, + /* 50 */ 593, 671, 593, 2275, 194, 2275, 39, 38, 167, 1571, + /* 60 */ 45, 43, 42, 41, 40, 19, 1833, 340, 2281, 186, + /* 70 */ 2281, 186, 1501, 2276, 619, 2276, 619, 45, 43, 42, + /* 80 */ 41, 40, 2115, 501, 654, 2151, 502, 1758, 169, 2117, + /* 90 */ 675, 2119, 2120, 670, 182, 665, 1520, 758, 36, 298, + /* 100 */ 15, 735, 734, 733, 732, 405, 1931, 731, 730, 144, /* 110 */ 725, 724, 723, 722, 721, 720, 719, 157, 715, 714, - /* 120 */ 713, 402, 401, 710, 709, 708, 707, 706, 592, 2241, - /* 130 */ 398, 2219, 1320, 1937, 1939, 123, 1578, 1579, 122, 121, - /* 140 */ 120, 119, 118, 117, 116, 115, 114, 1311, 695, 694, - /* 150 */ 693, 1315, 692, 1317, 1318, 691, 688, 2216, 1326, 685, - /* 160 */ 1328, 1329, 682, 679, 177, 652, 1551, 1561, 2280, 1409, - /* 170 */ 1410, 2275, 1577, 1580, 1944, 653, 1892, 630, 182, 2212, - /* 180 */ 2213, 356, 138, 2217, 358, 1993, 1496, 2279, 1494, 1942, - /* 190 */ 1720, 2276, 2278, 133, 287, 288, 516, 39, 38, 286, - /* 200 */ 537, 45, 43, 42, 41, 40, 278, 62, 703, 155, - /* 210 */ 154, 700, 699, 698, 152, 1499, 1500, 1794, 1550, 1553, - /* 220 */ 1554, 1555, 1556, 1557, 1558, 1559, 1560, 665, 661, 1569, - /* 230 */ 1570, 1572, 1573, 1574, 1575, 2, 46, 44, 425, 1169, - /* 240 */ 1522, 341, 62, 1518, 393, 49, 1495, 62, 611, 93, - /* 250 */ 469, 2116, 616, 483, 350, 2275, 482, 1576, 177, 1493, - /* 260 */ 406, 670, 427, 423, 405, 45, 43, 42, 41, 40, - /* 270 */ 615, 184, 452, 50, 484, 2276, 617, 454, 1171, 1994, - /* 280 */ 1174, 1175, 180, 1571, 555, 554, 553, 2134, 1723, 19, - /* 290 */ 106, 545, 137, 549, 1931, 1520, 1501, 548, 1605, 2084, - /* 300 */ 103, 669, 547, 552, 366, 365, 1521, 591, 546, 123, - /* 310 */ 2275, 1639, 122, 121, 120, 119, 118, 117, 116, 115, - /* 320 */ 114, 758, 359, 101, 15, 2281, 184, 430, 2280, 429, - /* 330 */ 2276, 617, 2115, 1191, 442, 1190, 2151, 653, 1892, 110, - /* 340 */ 2117, 673, 2119, 2120, 668, 1522, 663, 1885, 226, 143, - /* 350 */ 438, 150, 2175, 2204, 1606, 133, 428, 387, 2200, 187, - /* 360 */ 1578, 1579, 542, 480, 1519, 1192, 474, 473, 472, 471, - /* 370 */ 468, 467, 466, 465, 464, 460, 459, 458, 457, 340, - /* 380 */ 449, 448, 447, 209, 444, 443, 357, 502, 277, 1765, - /* 390 */ 1551, 1561, 2280, 338, 187, 2275, 1577, 1580, 1650, 187, - /* 400 */ 555, 554, 553, 705, 1520, 1938, 1939, 545, 137, 549, - /* 410 */ 1496, 2279, 1494, 548, 606, 2276, 2277, 1868, 547, 552, - /* 420 */ 366, 365, 1354, 1355, 546, 187, 1708, 1264, 35, 391, + /* 120 */ 713, 404, 403, 710, 709, 708, 175, 174, 594, 2241, + /* 130 */ 509, 654, 1320, 502, 1758, 123, 1578, 1579, 122, 121, + /* 140 */ 120, 119, 118, 117, 116, 115, 114, 1311, 697, 696, + /* 150 */ 695, 1315, 694, 1317, 1318, 693, 690, 179, 1326, 687, + /* 160 */ 1328, 1329, 684, 681, 49, 640, 1551, 1561, 654, 2219, + /* 170 */ 655, 1892, 1577, 1580, 1720, 39, 38, 360, 1993, 45, + /* 180 */ 43, 42, 41, 40, 1409, 1410, 1496, 1523, 1494, 133, + /* 190 */ 655, 1892, 387, 62, 1715, 2216, 539, 39, 38, 280, + /* 200 */ 165, 45, 43, 42, 41, 40, 39, 38, 1894, 191, + /* 210 */ 45, 43, 42, 41, 40, 1499, 1500, 1868, 1550, 1553, + /* 220 */ 1554, 1555, 1556, 1557, 1558, 1559, 1560, 667, 663, 1569, + /* 230 */ 1570, 1572, 1573, 1574, 1575, 2, 46, 44, 1722, 179, + /* 240 */ 62, 343, 93, 1518, 393, 408, 1495, 62, 49, 407, + /* 250 */ 471, 2116, 2280, 485, 352, 2275, 484, 1576, 1989, 1493, + /* 260 */ 1994, 672, 132, 131, 130, 129, 128, 127, 126, 125, + /* 270 */ 124, 2279, 454, 1522, 486, 2276, 2278, 456, 432, 396, + /* 280 */ 431, 707, 2280, 1571, 1275, 2275, 211, 165, 2134, 19, + /* 290 */ 504, 593, 1765, 1714, 2275, 1894, 1501, 1274, 1605, 1685, + /* 300 */ 2084, 2279, 671, 196, 2010, 2276, 2277, 430, 618, 2281, + /* 310 */ 186, 2275, 518, 2116, 2276, 619, 386, 621, 66, 2007, + /* 320 */ 642, 758, 361, 672, 15, 1767, 617, 186, 1264, 655, + /* 330 */ 1892, 2276, 619, 2115, 444, 257, 2151, 655, 1892, 110, + /* 340 */ 2117, 675, 2119, 2120, 670, 189, 665, 1521, 133, 143, + /* 350 */ 2134, 150, 2175, 2204, 1606, 544, 55, 389, 2200, 487, + /* 360 */ 1578, 1579, 2084, 482, 671, 1266, 476, 475, 474, 473, + /* 370 */ 470, 469, 468, 467, 466, 462, 461, 460, 459, 342, + /* 380 */ 451, 450, 449, 613, 446, 445, 359, 1650, 1520, 1521, + /* 390 */ 1551, 1561, 189, 1520, 545, 2115, 1577, 1580, 2151, 189, + /* 400 */ 189, 110, 2117, 675, 2119, 2120, 670, 707, 665, 1191, + /* 410 */ 1496, 1190, 1494, 2295, 62, 2204, 1262, 630, 140, 389, + /* 420 */ 2200, 279, 50, 608, 641, 630, 140, 1745, 35, 391, /* 430 */ 1600, 1601, 1602, 1603, 1604, 1608, 1609, 1610, 1611, 1499, - /* 440 */ 1500, 1552, 1550, 1553, 1554, 1555, 1556, 1557, 1558, 1559, - /* 450 */ 1560, 665, 661, 1569, 1570, 1572, 1573, 1574, 1575, 2, - /* 460 */ 12, 46, 44, 227, 1266, 1495, 167, 1521, 211, 393, - /* 470 */ 2116, 1495, 502, 1833, 1765, 1674, 578, 652, 1493, 172, - /* 480 */ 631, 705, 1576, 476, 1493, 533, 529, 525, 521, 224, - /* 490 */ 2219, 39, 38, 277, 1745, 45, 43, 42, 41, 40, - /* 500 */ 612, 607, 600, 1523, 1523, 66, 2134, 1883, 1571, 551, - /* 510 */ 550, 1501, 1520, 610, 19, 1501, 2215, 2098, 2084, 639, - /* 520 */ 669, 1501, 603, 602, 1672, 1673, 1675, 1676, 1677, 88, - /* 530 */ 39, 38, 222, 12, 45, 43, 42, 41, 40, 2134, - /* 540 */ 758, 1944, 2084, 200, 199, 543, 758, 1744, 381, 15, - /* 550 */ 1552, 2115, 1607, 2094, 2100, 2151, 1942, 49, 110, 2117, - /* 560 */ 673, 2119, 2120, 668, 663, 663, 475, 1262, 166, 514, - /* 570 */ 181, 2003, 2204, 316, 39, 38, 387, 2200, 45, 43, - /* 580 */ 42, 41, 40, 1426, 1427, 1578, 1579, 314, 73, 186, - /* 590 */ 1743, 72, 62, 609, 560, 2084, 1191, 2230, 1190, 221, - /* 600 */ 215, 62, 87, 639, 220, 12, 512, 10, 2219, 570, - /* 610 */ 207, 495, 493, 490, 696, 1551, 1561, 396, 360, 1425, - /* 620 */ 1428, 1577, 1580, 240, 213, 162, 33, 1887, 1192, 1496, - /* 630 */ 717, 1494, 372, 1894, 2214, 1496, 1612, 1494, 2084, 563, - /* 640 */ 1942, 2067, 653, 1892, 557, 653, 1892, 1944, 1742, 239, - /* 650 */ 62, 255, 193, 637, 386, 2003, 2102, 541, 1499, 1500, - /* 660 */ 189, 540, 1942, 55, 1499, 1500, 2098, 1550, 1553, 1554, - /* 670 */ 1555, 1556, 1557, 1558, 1559, 1560, 665, 661, 1569, 1570, + /* 440 */ 1500, 1192, 1550, 1553, 1554, 1555, 1556, 1557, 1558, 1559, + /* 450 */ 1560, 667, 663, 1569, 1570, 1572, 1573, 1574, 1575, 2, + /* 460 */ 12, 46, 44, 1354, 1355, 1495, 402, 401, 62, 393, + /* 470 */ 1279, 1495, 557, 556, 555, 516, 2084, 2003, 1493, 547, + /* 480 */ 137, 551, 1576, 1278, 1493, 550, 2280, 2116, 32, 1502, + /* 490 */ 549, 554, 368, 367, 39, 38, 548, 672, 45, 43, + /* 500 */ 42, 41, 40, 1522, 1523, 1426, 1427, 2116, 1571, 614, + /* 510 */ 609, 602, 1674, 699, 19, 1501, 1935, 669, 185, 2212, + /* 520 */ 2213, 1501, 138, 2217, 2134, 632, 184, 2212, 2213, 398, + /* 530 */ 138, 2217, 1937, 1939, 2051, 1191, 2084, 1190, 671, 1552, + /* 540 */ 758, 1425, 1428, 1519, 2134, 489, 758, 39, 38, 15, + /* 550 */ 228, 45, 43, 42, 41, 40, 2084, 153, 671, 605, + /* 560 */ 604, 1672, 1673, 1675, 1676, 1677, 189, 1192, 166, 2115, + /* 570 */ 1744, 580, 2151, 318, 189, 170, 2117, 675, 2119, 2120, + /* 580 */ 670, 246, 665, 28, 1708, 1578, 1579, 316, 73, 2115, + /* 590 */ 12, 72, 2151, 2094, 562, 334, 2117, 675, 2119, 2120, + /* 600 */ 670, 668, 665, 656, 2169, 655, 1892, 2102, 107, 572, + /* 610 */ 209, 497, 495, 492, 54, 1551, 1561, 2098, 612, 2084, + /* 620 */ 189, 1577, 1580, 242, 438, 141, 620, 2296, 213, 1496, + /* 630 */ 478, 1494, 504, 1884, 1765, 1496, 1794, 1494, 165, 565, + /* 640 */ 1944, 1944, 1505, 641, 559, 2134, 1895, 358, 373, 241, + /* 650 */ 62, 279, 195, 2100, 376, 1942, 1942, 1501, 1499, 1500, + /* 660 */ 1169, 289, 290, 665, 1499, 1500, 288, 1550, 1553, 1554, + /* 670 */ 1555, 1556, 1557, 1558, 1559, 1560, 667, 663, 1569, 1570, /* 680 */ 1572, 1573, 1574, 1575, 2, 46, 44, 1581, 109, 70, - /* 690 */ 1944, 2116, 69, 393, 1879, 1495, 2084, 397, 653, 1892, - /* 700 */ 1715, 631, 2094, 2100, 388, 1942, 1576, 1741, 1493, 187, - /* 710 */ 718, 32, 1854, 663, 628, 140, 436, 39, 38, 653, - /* 720 */ 1892, 45, 43, 42, 41, 40, 1834, 2134, 81, 80, - /* 730 */ 435, 87, 1571, 191, 164, 729, 727, 437, 639, 2084, - /* 740 */ 1875, 669, 39, 38, 187, 1501, 45, 43, 42, 41, - /* 750 */ 40, 653, 1892, 187, 339, 2084, 1888, 421, 1974, 1989, - /* 760 */ 419, 415, 411, 408, 428, 1177, 1740, 653, 1892, 446, - /* 770 */ 758, 1519, 2115, 47, 653, 1892, 2151, 2116, 1739, 110, - /* 780 */ 2117, 673, 2119, 2120, 668, 461, 663, 670, 648, 1767, - /* 790 */ 2003, 181, 462, 2204, 34, 1643, 1738, 387, 2200, 1714, - /* 800 */ 39, 38, 187, 192, 45, 43, 42, 41, 40, 1578, - /* 810 */ 1579, 653, 1892, 2134, 2084, 275, 2212, 627, 2231, 134, - /* 820 */ 626, 569, 2275, 628, 140, 2084, 2084, 669, 1896, 515, - /* 830 */ 1523, 653, 1892, 196, 567, 1685, 565, 615, 184, 1551, - /* 840 */ 1561, 1989, 2276, 617, 2084, 1577, 1580, 39, 38, 1889, - /* 850 */ 420, 45, 43, 42, 41, 40, 1867, 142, 2115, 1496, - /* 860 */ 2175, 1494, 2151, 653, 1892, 110, 2117, 673, 2119, 2120, - /* 870 */ 668, 1944, 663, 84, 242, 249, 83, 2295, 241, 2204, - /* 880 */ 363, 245, 165, 387, 2200, 194, 1943, 634, 1499, 1500, - /* 890 */ 1895, 1550, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, - /* 900 */ 665, 661, 1569, 1570, 1572, 1573, 1574, 1575, 2, 46, - /* 910 */ 44, 2116, 655, 456, 2176, 653, 1892, 393, 1737, 1495, - /* 920 */ 1736, 670, 455, 2238, 183, 2212, 2213, 253, 138, 2217, - /* 930 */ 1576, 2116, 1493, 587, 591, 1174, 1175, 2275, 90, 345, - /* 940 */ 1662, 667, 370, 657, 571, 2176, 364, 2134, 362, 361, - /* 950 */ 1733, 539, 2281, 184, 1586, 1735, 1571, 2276, 617, 2084, - /* 960 */ 1520, 669, 653, 1892, 653, 1892, 2084, 2134, 2084, 1501, - /* 970 */ 91, 1275, 541, 42, 41, 40, 540, 2279, 254, 2084, - /* 980 */ 632, 669, 636, 2103, 1274, 703, 155, 154, 700, 699, - /* 990 */ 698, 152, 2115, 2098, 758, 2077, 2151, 47, 2084, 110, - /* 1000 */ 2117, 673, 2119, 2120, 668, 2116, 663, 2078, 14, 13, - /* 1010 */ 1732, 2295, 2115, 2204, 1731, 670, 2151, 387, 2200, 332, - /* 1020 */ 2117, 673, 2119, 2120, 668, 666, 663, 654, 2169, 2094, - /* 1030 */ 2100, 39, 38, 1578, 1579, 45, 43, 42, 41, 40, - /* 1040 */ 663, 2134, 591, 385, 1642, 2275, 485, 1989, 620, 653, - /* 1050 */ 1892, 165, 660, 2084, 591, 669, 664, 2275, 2084, 1894, - /* 1060 */ 2281, 184, 2084, 1551, 1561, 2276, 617, 291, 697, 1577, - /* 1070 */ 1580, 1935, 2281, 184, 2224, 1639, 396, 2276, 617, 1717, - /* 1080 */ 1718, 653, 1892, 1496, 165, 1494, 2115, 653, 1892, 1279, - /* 1090 */ 2151, 198, 1894, 170, 2117, 673, 2119, 2120, 668, 650, - /* 1100 */ 663, 576, 1278, 628, 140, 651, 1552, 52, 1619, 3, - /* 1110 */ 243, 701, 1499, 1500, 1935, 1550, 1553, 1554, 1555, 1556, - /* 1120 */ 1557, 1558, 1559, 1560, 665, 661, 1569, 1570, 1572, 1573, - /* 1130 */ 1574, 1575, 2, 46, 44, 653, 1892, 653, 1892, 1730, - /* 1140 */ 1729, 393, 399, 1495, 618, 2296, 1728, 2116, 591, 2070, - /* 1150 */ 165, 2275, 1727, 297, 1576, 400, 1493, 670, 1894, 2251, - /* 1160 */ 153, 623, 439, 1726, 487, 1725, 2281, 184, 1870, 252, - /* 1170 */ 310, 2276, 617, 1921, 2116, 440, 702, 1468, 1469, 1935, - /* 1180 */ 1571, 74, 232, 2134, 670, 230, 598, 2084, 2084, 146, - /* 1190 */ 573, 135, 572, 1501, 2084, 2084, 616, 669, 413, 2275, - /* 1200 */ 2084, 590, 1597, 544, 185, 2212, 2213, 1781, 138, 2217, - /* 1210 */ 2134, 2084, 148, 2084, 615, 184, 2244, 54, 758, 2276, - /* 1220 */ 617, 15, 2084, 234, 669, 1260, 233, 272, 2115, 556, - /* 1230 */ 82, 1504, 2151, 153, 2116, 110, 2117, 673, 2119, 2120, - /* 1240 */ 668, 1503, 663, 604, 670, 236, 619, 2295, 235, 2204, - /* 1250 */ 1774, 1772, 225, 387, 2200, 2115, 153, 1578, 1579, 2151, - /* 1260 */ 64, 711, 110, 2117, 673, 2119, 2120, 668, 238, 663, - /* 1270 */ 2134, 237, 558, 561, 2295, 64, 2204, 259, 621, 266, - /* 1280 */ 387, 2200, 2084, 1240, 669, 2105, 2135, 1551, 1561, 1998, - /* 1290 */ 1463, 1221, 404, 1577, 1580, 1759, 703, 155, 154, 700, - /* 1300 */ 699, 698, 152, 14, 13, 153, 1764, 1496, 48, 1494, - /* 1310 */ 1932, 284, 2234, 1466, 71, 2115, 151, 1671, 153, 2151, - /* 1320 */ 629, 53, 169, 2117, 673, 2119, 2120, 668, 1222, 663, - /* 1330 */ 48, 1768, 1670, 64, 261, 48, 1499, 1500, 2107, 1550, - /* 1340 */ 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 665, 661, - /* 1350 */ 1569, 1570, 1572, 1573, 1574, 1575, 2, 271, 274, 390, - /* 1360 */ 389, 677, 635, 2242, 151, 1423, 153, 2116, 289, 1509, - /* 1370 */ 136, 645, 151, 293, 712, 1305, 1, 670, 5, 2269, - /* 1380 */ 1576, 753, 1502, 407, 1507, 412, 354, 309, 1446, 441, - /* 1390 */ 1613, 304, 1562, 624, 1506, 197, 1238, 2116, 1523, 1999, - /* 1400 */ 445, 478, 450, 2134, 1518, 463, 1571, 670, 1991, 2223, - /* 1410 */ 470, 477, 479, 488, 489, 2084, 202, 669, 1332, 1501, - /* 1420 */ 486, 1336, 201, 1343, 491, 492, 204, 1341, 494, 156, - /* 1430 */ 496, 1524, 497, 2134, 4, 498, 505, 506, 1526, 508, - /* 1440 */ 212, 1521, 509, 214, 659, 2084, 1525, 669, 2115, 510, - /* 1450 */ 1527, 511, 2151, 217, 513, 110, 2117, 673, 2119, 2120, - /* 1460 */ 668, 219, 663, 85, 86, 2116, 1194, 2295, 517, 2204, - /* 1470 */ 223, 536, 534, 387, 2200, 670, 535, 538, 2115, 344, - /* 1480 */ 2060, 1882, 2151, 2057, 229, 110, 2117, 673, 2119, 2120, - /* 1490 */ 668, 1878, 663, 112, 577, 575, 231, 2295, 89, 2204, - /* 1500 */ 158, 2134, 159, 387, 2200, 149, 1880, 1876, 160, 2056, - /* 1510 */ 246, 161, 582, 2084, 580, 669, 305, 581, 585, 250, - /* 1520 */ 1453, 588, 8, 605, 2250, 248, 643, 595, 2249, 586, - /* 1530 */ 257, 601, 614, 1510, 2235, 1505, 2245, 376, 608, 2226, - /* 1540 */ 265, 173, 596, 594, 260, 268, 2115, 267, 593, 622, - /* 1550 */ 2151, 2298, 625, 110, 2117, 673, 2119, 2120, 668, 269, - /* 1560 */ 663, 377, 1513, 1515, 2274, 2179, 139, 2204, 270, 1639, - /* 1570 */ 1522, 387, 2200, 2116, 2220, 661, 1569, 1570, 1572, 1573, - /* 1580 */ 1574, 1575, 279, 670, 633, 380, 1528, 96, 2004, 306, - /* 1590 */ 641, 642, 2018, 2116, 2017, 2016, 307, 646, 273, 383, - /* 1600 */ 98, 647, 308, 670, 61, 100, 1893, 2185, 102, 2134, - /* 1610 */ 1936, 311, 754, 1855, 2076, 755, 675, 757, 51, 346, - /* 1620 */ 2075, 2084, 347, 669, 2074, 315, 300, 335, 320, 2134, - /* 1630 */ 313, 334, 78, 2071, 409, 1486, 410, 1487, 324, 190, - /* 1640 */ 414, 2084, 416, 669, 2069, 417, 418, 2068, 355, 2066, - /* 1650 */ 422, 2065, 424, 2064, 2115, 79, 426, 1449, 2151, 1448, - /* 1660 */ 2030, 110, 2117, 673, 2119, 2120, 668, 2029, 663, 2028, - /* 1670 */ 433, 434, 2027, 2177, 2115, 2204, 1400, 2116, 2151, 387, - /* 1680 */ 2200, 110, 2117, 673, 2119, 2120, 668, 670, 663, 2026, - /* 1690 */ 1982, 1981, 1979, 656, 145, 2204, 1978, 1977, 1980, 387, - /* 1700 */ 2200, 2116, 1976, 1975, 1973, 1972, 1971, 195, 451, 1970, - /* 1710 */ 453, 670, 1984, 2134, 1969, 1968, 1967, 1966, 1965, 1964, - /* 1720 */ 1963, 1962, 1961, 1960, 1959, 2084, 1958, 669, 1957, 1956, - /* 1730 */ 1955, 1954, 1953, 1952, 1983, 147, 1951, 2134, 1950, 1949, - /* 1740 */ 1948, 1947, 481, 1946, 1945, 1797, 203, 1402, 342, 2084, - /* 1750 */ 1796, 669, 1795, 205, 206, 343, 1793, 1276, 2115, 1280, - /* 1760 */ 1754, 1176, 2151, 218, 2024, 111, 2117, 673, 2119, 2120, - /* 1770 */ 668, 178, 663, 1753, 2047, 2037, 2025, 1272, 2116, 2204, - /* 1780 */ 2002, 1871, 2115, 2203, 2200, 76, 2151, 77, 670, 111, - /* 1790 */ 2117, 673, 2119, 2120, 668, 208, 663, 216, 2104, 210, - /* 1800 */ 1792, 2116, 179, 2204, 503, 1790, 518, 658, 2200, 520, - /* 1810 */ 519, 670, 1788, 522, 2134, 1214, 523, 1786, 524, 526, - /* 1820 */ 1784, 527, 528, 530, 2116, 532, 2084, 1771, 669, 1770, - /* 1830 */ 1750, 531, 1873, 1348, 670, 1347, 1872, 2134, 1263, 1261, - /* 1840 */ 726, 1259, 1258, 1257, 1256, 1255, 728, 2116, 1250, 2084, - /* 1850 */ 1252, 669, 1782, 1251, 1249, 367, 1775, 670, 1773, 671, - /* 1860 */ 2134, 228, 368, 2151, 369, 559, 111, 2117, 673, 2119, - /* 1870 */ 2120, 668, 2084, 663, 669, 63, 562, 1749, 564, 1748, - /* 1880 */ 2204, 566, 2115, 2134, 349, 2200, 2151, 1747, 568, 111, - /* 1890 */ 2117, 673, 2119, 2120, 668, 2084, 663, 669, 113, 1473, - /* 1900 */ 1475, 27, 1472, 2204, 2046, 2115, 1459, 1455, 2201, 2151, - /* 1910 */ 2116, 67, 326, 2117, 673, 2119, 2120, 668, 1457, 663, - /* 1920 */ 670, 2036, 1477, 583, 2023, 2021, 2280, 20, 2115, 1687, - /* 1930 */ 56, 17, 2151, 6, 29, 170, 2117, 673, 2119, 2120, - /* 1940 */ 668, 7, 663, 589, 256, 584, 2134, 597, 258, 599, - /* 1950 */ 59, 382, 60, 373, 163, 613, 1669, 171, 2084, 251, - /* 1960 */ 669, 262, 30, 263, 1661, 264, 21, 65, 92, 2105, - /* 1970 */ 31, 1707, 1708, 22, 1702, 2116, 1701, 378, 1706, 1705, - /* 1980 */ 379, 1636, 1635, 2022, 276, 667, 2020, 2297, 2019, 2001, - /* 1990 */ 58, 2115, 94, 95, 174, 2151, 2116, 282, 333, 2117, - /* 2000 */ 673, 2119, 2120, 668, 283, 663, 670, 23, 644, 2116, - /* 2010 */ 1667, 2134, 285, 290, 68, 2000, 97, 292, 295, 670, - /* 2020 */ 103, 13, 24, 2084, 1511, 669, 1588, 99, 1587, 11, - /* 2030 */ 1543, 1598, 2134, 2154, 175, 1566, 1564, 392, 662, 188, - /* 2040 */ 57, 1563, 672, 674, 2084, 2134, 669, 18, 37, 16, - /* 2050 */ 394, 25, 676, 1535, 1333, 26, 2115, 2084, 395, 669, - /* 2060 */ 2151, 579, 678, 332, 2117, 673, 2119, 2120, 668, 1330, - /* 2070 */ 663, 680, 2170, 681, 683, 1327, 684, 2115, 686, 761, - /* 2080 */ 1321, 2151, 687, 689, 333, 2117, 673, 2119, 2120, 668, - /* 2090 */ 2115, 663, 1319, 303, 2151, 690, 2116, 333, 2117, 673, - /* 2100 */ 2119, 2120, 668, 1325, 663, 104, 670, 1324, 298, 176, - /* 2110 */ 105, 1342, 1323, 75, 1338, 751, 747, 743, 739, 301, - /* 2120 */ 2116, 1322, 1212, 704, 1246, 1245, 1244, 1270, 1243, 1242, - /* 2130 */ 670, 1241, 2134, 1239, 1237, 1236, 1235, 1233, 716, 299, - /* 2140 */ 1232, 1231, 1230, 1229, 2084, 1228, 669, 1227, 1265, 1267, - /* 2150 */ 1224, 1223, 1218, 1220, 1219, 1789, 2134, 1217, 736, 108, - /* 2160 */ 737, 1787, 294, 738, 740, 742, 1785, 744, 2084, 1783, - /* 2170 */ 669, 748, 1769, 746, 741, 752, 745, 574, 750, 1166, - /* 2180 */ 749, 2151, 1746, 2116, 328, 2117, 673, 2119, 2120, 668, - /* 2190 */ 302, 663, 756, 670, 649, 1497, 312, 759, 760, 1721, - /* 2200 */ 1721, 2115, 1721, 1721, 1721, 2151, 1721, 2116, 317, 2117, - /* 2210 */ 673, 2119, 2120, 668, 1721, 663, 1721, 670, 1721, 2134, - /* 2220 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 281, - /* 2230 */ 1721, 2084, 1721, 669, 280, 1721, 1721, 1721, 1721, 1721, - /* 2240 */ 1721, 1721, 1721, 2134, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2250 */ 1721, 1721, 1721, 2116, 247, 2084, 1721, 669, 1721, 1721, - /* 2260 */ 1721, 1721, 1721, 670, 2115, 1721, 1721, 1721, 2151, 2116, - /* 2270 */ 1721, 318, 2117, 673, 2119, 2120, 668, 1721, 663, 670, - /* 2280 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2115, 2134, - /* 2290 */ 1721, 1721, 2151, 1721, 1721, 319, 2117, 673, 2119, 2120, - /* 2300 */ 668, 2084, 663, 669, 1721, 2134, 1721, 1721, 1721, 1721, - /* 2310 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2084, 1721, 669, - /* 2320 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2116, - /* 2330 */ 1721, 1721, 1721, 1721, 2115, 1721, 1721, 1721, 2151, 670, - /* 2340 */ 1721, 325, 2117, 673, 2119, 2120, 668, 1721, 663, 1721, - /* 2350 */ 2115, 1721, 1721, 2116, 2151, 1721, 1721, 329, 2117, 673, - /* 2360 */ 2119, 2120, 668, 670, 663, 2134, 1721, 1721, 1721, 1721, - /* 2370 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2084, 1721, 669, - /* 2380 */ 2116, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2134, - /* 2390 */ 670, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2116, - /* 2400 */ 1721, 2084, 1721, 669, 1721, 1721, 1721, 1721, 1721, 670, - /* 2410 */ 2115, 1721, 1721, 1721, 2151, 1721, 2134, 321, 2117, 673, - /* 2420 */ 2119, 2120, 668, 1721, 663, 1721, 1721, 1721, 2084, 1721, - /* 2430 */ 669, 1721, 1721, 1721, 2115, 2134, 1721, 1721, 2151, 1721, - /* 2440 */ 1721, 330, 2117, 673, 2119, 2120, 668, 2084, 663, 669, - /* 2450 */ 2116, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2460 */ 670, 2115, 1721, 1721, 1721, 2151, 2116, 1721, 322, 2117, - /* 2470 */ 673, 2119, 2120, 668, 1721, 663, 670, 1721, 1721, 1721, - /* 2480 */ 2115, 1721, 1721, 1721, 2151, 1721, 2134, 331, 2117, 673, - /* 2490 */ 2119, 2120, 668, 1721, 663, 1721, 2116, 1721, 2084, 1721, - /* 2500 */ 669, 1721, 2134, 1721, 1721, 1721, 670, 1721, 1721, 1721, - /* 2510 */ 1721, 1721, 1721, 1721, 2084, 1721, 669, 2116, 1721, 1721, - /* 2520 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 670, 1721, 1721, - /* 2530 */ 1721, 2115, 2134, 1721, 1721, 2151, 1721, 1721, 323, 2117, - /* 2540 */ 673, 2119, 2120, 668, 2084, 663, 669, 2115, 1721, 1721, - /* 2550 */ 1721, 2151, 1721, 2134, 336, 2117, 673, 2119, 2120, 668, - /* 2560 */ 1721, 663, 1721, 2116, 1721, 2084, 1721, 669, 1721, 1721, - /* 2570 */ 1721, 1721, 1721, 670, 1721, 1721, 1721, 2115, 1721, 1721, - /* 2580 */ 1721, 2151, 1721, 1721, 337, 2117, 673, 2119, 2120, 668, - /* 2590 */ 1721, 663, 1721, 1721, 1721, 1721, 1721, 1721, 2115, 2134, - /* 2600 */ 1721, 1721, 2151, 1721, 1721, 2128, 2117, 673, 2119, 2120, - /* 2610 */ 668, 2084, 663, 669, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2620 */ 1721, 1721, 1721, 2116, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2630 */ 1721, 1721, 1721, 670, 1721, 1721, 2116, 1721, 1721, 1721, - /* 2640 */ 1721, 1721, 1721, 1721, 2115, 1721, 670, 1721, 2151, 1721, - /* 2650 */ 1721, 2127, 2117, 673, 2119, 2120, 668, 1721, 663, 2134, - /* 2660 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2670 */ 1721, 2084, 2134, 669, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2680 */ 1721, 1721, 1721, 1721, 2084, 1721, 669, 2116, 1721, 1721, - /* 2690 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 670, 1721, 1721, - /* 2700 */ 1721, 1721, 1721, 1721, 2115, 1721, 1721, 1721, 2151, 1721, - /* 2710 */ 1721, 2126, 2117, 673, 2119, 2120, 668, 2115, 663, 1721, - /* 2720 */ 1721, 2151, 1721, 2134, 351, 2117, 673, 2119, 2120, 668, - /* 2730 */ 1721, 663, 1721, 2116, 1721, 2084, 1721, 669, 1721, 1721, - /* 2740 */ 1721, 1721, 1721, 670, 1721, 1721, 1721, 1721, 2116, 1721, - /* 2750 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 670, 1721, - /* 2760 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2115, 2134, - /* 2770 */ 1721, 1721, 2151, 1721, 1721, 352, 2117, 673, 2119, 2120, - /* 2780 */ 668, 2084, 663, 669, 2134, 1721, 1721, 1721, 1721, 1721, - /* 2790 */ 1721, 1721, 1721, 1721, 2116, 1721, 2084, 1721, 669, 1721, - /* 2800 */ 1721, 1721, 1721, 1721, 670, 1721, 1721, 1721, 1721, 2116, - /* 2810 */ 1721, 1721, 1721, 1721, 2115, 1721, 1721, 1721, 2151, 670, - /* 2820 */ 1721, 348, 2117, 673, 2119, 2120, 668, 1721, 663, 2115, - /* 2830 */ 2134, 1721, 1721, 2151, 1721, 1721, 353, 2117, 673, 2119, - /* 2840 */ 2120, 668, 2084, 663, 669, 2134, 1721, 1721, 1721, 1721, - /* 2850 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2084, 1721, 669, + /* 690 */ 202, 201, 69, 393, 639, 1495, 2003, 2116, 611, 1171, + /* 700 */ 1974, 1174, 1175, 557, 556, 555, 1576, 633, 1493, 365, + /* 710 */ 547, 137, 551, 477, 641, 698, 550, 618, 655, 1892, + /* 720 */ 2275, 549, 554, 368, 367, 630, 140, 548, 81, 80, + /* 730 */ 437, 1643, 1571, 193, 2134, 617, 186, 439, 1938, 1939, + /* 740 */ 2276, 619, 717, 244, 1944, 1501, 2084, 243, 671, 655, + /* 750 */ 1892, 383, 14, 13, 341, 655, 1892, 423, 1877, 1942, + /* 760 */ 421, 417, 413, 410, 430, 650, 1743, 2003, 448, 1944, + /* 770 */ 758, 106, 2077, 47, 463, 366, 388, 364, 363, 2115, + /* 780 */ 541, 103, 2151, 2116, 1942, 110, 2117, 675, 2119, 2120, + /* 790 */ 670, 1944, 665, 672, 1869, 655, 1892, 183, 397, 2204, + /* 800 */ 101, 543, 189, 389, 2200, 542, 1942, 90, 347, 1578, + /* 810 */ 1579, 372, 87, 573, 464, 2084, 188, 2078, 593, 1735, + /* 820 */ 2134, 2275, 553, 552, 2230, 1885, 277, 2212, 629, 362, + /* 830 */ 134, 628, 2084, 2275, 671, 1742, 2281, 186, 1887, 1551, + /* 840 */ 1561, 2276, 619, 630, 140, 1577, 1580, 245, 617, 186, + /* 850 */ 655, 1892, 1619, 2276, 619, 458, 1586, 2219, 12, 1496, + /* 860 */ 10, 1494, 1520, 593, 457, 2115, 2275, 1741, 2151, 517, + /* 870 */ 1879, 111, 2117, 675, 2119, 2120, 670, 657, 665, 2176, + /* 880 */ 622, 2281, 186, 2215, 2084, 2204, 2276, 619, 1499, 1500, + /* 890 */ 2201, 1550, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, + /* 900 */ 667, 663, 1569, 1570, 1572, 1573, 1574, 1575, 2, 46, + /* 910 */ 44, 659, 1523, 2176, 1468, 1469, 2084, 393, 427, 1495, + /* 920 */ 52, 2116, 3, 705, 155, 154, 702, 701, 700, 152, + /* 930 */ 1576, 633, 1493, 39, 38, 655, 1892, 45, 43, 42, + /* 940 */ 41, 40, 429, 425, 187, 2212, 2213, 2116, 138, 2217, + /* 950 */ 198, 1875, 655, 1892, 1889, 578, 1571, 672, 2134, 2238, + /* 960 */ 705, 155, 154, 702, 701, 700, 152, 399, 1520, 1501, + /* 970 */ 2084, 247, 671, 655, 1892, 165, 42, 41, 40, 2219, + /* 980 */ 1642, 39, 38, 1894, 2134, 45, 43, 42, 41, 40, + /* 990 */ 84, 543, 589, 83, 758, 542, 2084, 47, 671, 655, + /* 1000 */ 1892, 593, 1740, 2115, 2275, 2214, 2151, 2116, 1552, 110, + /* 1010 */ 2117, 675, 2119, 2120, 670, 2067, 665, 672, 634, 2281, + /* 1020 */ 186, 183, 9, 2204, 2276, 619, 1739, 389, 2200, 2115, + /* 1030 */ 1867, 87, 2151, 1578, 1579, 110, 2117, 675, 2119, 2120, + /* 1040 */ 670, 2094, 665, 254, 2134, 1738, 571, 2295, 2231, 2204, + /* 1050 */ 146, 2084, 135, 389, 2200, 1883, 2084, 1888, 671, 569, + /* 1060 */ 256, 567, 1989, 1551, 1561, 2098, 34, 655, 1892, 1577, + /* 1070 */ 1580, 1607, 39, 38, 1662, 2084, 45, 43, 42, 41, + /* 1080 */ 40, 729, 727, 1496, 1896, 1494, 638, 655, 1892, 2115, + /* 1090 */ 655, 1892, 2151, 164, 2084, 169, 2117, 675, 2119, 2120, + /* 1100 */ 670, 2100, 665, 1174, 1175, 312, 293, 200, 1921, 652, + /* 1110 */ 623, 665, 1499, 1500, 1552, 1550, 1553, 1554, 1555, 1556, + /* 1120 */ 1557, 1558, 1559, 1560, 667, 663, 1569, 1570, 1572, 1573, + /* 1130 */ 1574, 1575, 2, 46, 44, 1737, 2242, 2116, 655, 1892, + /* 1140 */ 1736, 393, 1733, 1495, 2094, 33, 1732, 672, 1731, 2251, + /* 1150 */ 655, 1892, 655, 1892, 1576, 1612, 1493, 653, 2102, 705, + /* 1160 */ 155, 154, 702, 701, 700, 152, 1730, 142, 2098, 299, + /* 1170 */ 2175, 400, 2224, 1639, 2134, 1944, 703, 1177, 704, 1935, + /* 1180 */ 1571, 1935, 1729, 1519, 2084, 2094, 2084, 1728, 671, 2084, + /* 1190 */ 1943, 2084, 2094, 1501, 1870, 2084, 625, 2084, 1727, 2102, + /* 1200 */ 1726, 1725, 2070, 251, 2100, 377, 2103, 718, 234, 2098, + /* 1210 */ 1854, 232, 74, 592, 665, 2084, 2098, 236, 758, 2115, + /* 1220 */ 235, 15, 2151, 2116, 422, 110, 2117, 675, 2119, 2120, + /* 1230 */ 670, 2084, 665, 672, 1639, 600, 2084, 2295, 148, 2204, + /* 1240 */ 153, 441, 546, 389, 2200, 2100, 390, 2084, 1781, 2084, + /* 1250 */ 2084, 415, 2100, 238, 442, 665, 237, 1578, 1579, 1774, + /* 1260 */ 2134, 82, 665, 240, 1260, 153, 239, 1772, 711, 575, + /* 1270 */ 558, 574, 2084, 662, 671, 64, 255, 64, 261, 1717, + /* 1280 */ 1718, 560, 14, 13, 666, 2105, 1834, 1551, 1561, 563, + /* 1290 */ 1240, 2244, 274, 1577, 1580, 227, 268, 1463, 606, 1832, + /* 1300 */ 1504, 1503, 712, 1831, 153, 2115, 48, 1496, 2151, 1494, + /* 1310 */ 2135, 110, 2117, 675, 2119, 2120, 670, 286, 665, 91, + /* 1320 */ 71, 151, 1466, 2295, 1238, 2204, 406, 64, 48, 389, + /* 1330 */ 2200, 1998, 1671, 53, 1670, 263, 1499, 1500, 2107, 1550, + /* 1340 */ 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 667, 663, + /* 1350 */ 1569, 1570, 1572, 1573, 1574, 1575, 2, 2116, 402, 401, + /* 1360 */ 1221, 637, 153, 1423, 48, 679, 1768, 672, 1509, 2269, + /* 1370 */ 151, 1764, 153, 1759, 291, 1932, 2234, 647, 295, 1576, + /* 1380 */ 136, 1502, 631, 2116, 1613, 1562, 276, 151, 273, 1, + /* 1390 */ 5, 409, 356, 672, 2134, 2223, 414, 1222, 1446, 306, + /* 1400 */ 199, 443, 1523, 1999, 480, 1571, 2084, 447, 671, 452, + /* 1410 */ 1518, 490, 465, 1991, 479, 472, 753, 491, 1501, 1305, + /* 1420 */ 2134, 311, 1332, 1597, 481, 488, 203, 1336, 626, 1343, + /* 1430 */ 2116, 204, 2084, 493, 671, 494, 206, 1341, 496, 2115, + /* 1440 */ 672, 498, 2151, 661, 156, 110, 2117, 675, 2119, 2120, + /* 1450 */ 670, 2116, 665, 1507, 1506, 1524, 4, 2295, 499, 2204, + /* 1460 */ 507, 672, 1526, 389, 2200, 2115, 500, 2134, 2151, 508, + /* 1470 */ 510, 110, 2117, 675, 2119, 2120, 670, 1521, 665, 2084, + /* 1480 */ 1525, 671, 214, 2295, 511, 2204, 512, 216, 2134, 389, + /* 1490 */ 2200, 1527, 513, 1194, 219, 515, 221, 85, 86, 519, + /* 1500 */ 2084, 536, 671, 225, 538, 537, 112, 346, 540, 1882, + /* 1510 */ 231, 1878, 2115, 2060, 577, 2151, 2057, 2056, 170, 2117, + /* 1520 */ 675, 2119, 2120, 670, 579, 665, 233, 89, 149, 307, + /* 1530 */ 158, 159, 1510, 2115, 1505, 248, 2151, 1880, 1876, 110, + /* 1540 */ 2117, 675, 2119, 2120, 670, 160, 665, 161, 583, 252, + /* 1550 */ 582, 2179, 1453, 2204, 584, 2116, 597, 389, 2200, 607, + /* 1560 */ 587, 1513, 1515, 250, 2250, 672, 590, 645, 259, 588, + /* 1570 */ 2297, 2235, 2245, 603, 663, 1569, 1570, 1572, 1573, 1574, + /* 1580 */ 1575, 262, 2249, 8, 616, 378, 610, 2226, 598, 596, + /* 1590 */ 595, 267, 2134, 379, 139, 272, 1639, 2298, 627, 1522, + /* 1600 */ 624, 2220, 382, 635, 2084, 269, 671, 1528, 2004, 308, + /* 1610 */ 643, 281, 96, 309, 644, 648, 98, 2018, 2017, 2016, + /* 1620 */ 649, 2116, 173, 385, 270, 1893, 271, 100, 61, 102, + /* 1630 */ 2185, 672, 1936, 313, 1855, 310, 754, 2115, 302, 755, + /* 1640 */ 2151, 757, 348, 110, 2117, 675, 2119, 2120, 670, 2116, + /* 1650 */ 665, 2274, 677, 275, 337, 2177, 51, 2204, 2134, 672, + /* 1660 */ 322, 389, 2200, 336, 326, 317, 2076, 2075, 349, 2074, + /* 1670 */ 2084, 315, 671, 78, 2071, 411, 412, 1486, 1487, 192, + /* 1680 */ 416, 2116, 2069, 418, 419, 420, 2134, 2068, 357, 2066, + /* 1690 */ 424, 672, 426, 2064, 428, 79, 1449, 1448, 2084, 2065, + /* 1700 */ 671, 2030, 2029, 2115, 2028, 435, 2151, 436, 2027, 110, + /* 1710 */ 2117, 675, 2119, 2120, 670, 2026, 665, 1982, 2134, 1400, + /* 1720 */ 1981, 658, 1979, 2204, 1978, 145, 1977, 389, 2200, 1980, + /* 1730 */ 2084, 2115, 671, 1976, 2151, 1975, 1973, 111, 2117, 675, + /* 1740 */ 2119, 2120, 670, 1972, 665, 1971, 197, 453, 1970, 455, + /* 1750 */ 1984, 2204, 2116, 1969, 1968, 2203, 2200, 483, 147, 1954, + /* 1760 */ 1953, 1952, 672, 2115, 1967, 1966, 2151, 1965, 1964, 111, + /* 1770 */ 2117, 675, 2119, 2120, 670, 1963, 665, 1962, 1961, 1960, + /* 1780 */ 2116, 1959, 1958, 2204, 1957, 1956, 1955, 660, 2200, 2134, + /* 1790 */ 672, 1983, 1951, 1950, 1402, 1949, 1948, 1947, 1946, 2116, + /* 1800 */ 1945, 2084, 1276, 671, 344, 1280, 345, 1797, 205, 669, + /* 1810 */ 1796, 1272, 1795, 1793, 207, 2116, 1754, 2134, 180, 1176, + /* 1820 */ 2104, 208, 1753, 2047, 2037, 672, 76, 2025, 77, 2084, + /* 1830 */ 210, 671, 2024, 218, 673, 220, 2134, 2151, 2002, 1871, + /* 1840 */ 111, 2117, 675, 2119, 2120, 670, 181, 665, 2084, 505, + /* 1850 */ 671, 212, 2134, 1792, 2204, 1790, 1214, 384, 351, 2200, + /* 1860 */ 520, 1788, 2115, 521, 2084, 2151, 671, 522, 328, 2117, + /* 1870 */ 675, 2119, 2120, 670, 526, 665, 2116, 524, 525, 1786, + /* 1880 */ 528, 2115, 529, 530, 2151, 1784, 672, 334, 2117, 675, + /* 1890 */ 2119, 2120, 670, 532, 665, 533, 2170, 2115, 581, 2116, + /* 1900 */ 2151, 534, 1771, 335, 2117, 675, 2119, 2120, 670, 672, + /* 1910 */ 665, 615, 1770, 2134, 1750, 1873, 761, 63, 392, 1348, + /* 1920 */ 1347, 1872, 230, 1263, 1261, 2084, 1259, 671, 1258, 1257, + /* 1930 */ 305, 1256, 1250, 1782, 1255, 369, 2134, 561, 1252, 726, + /* 1940 */ 1251, 394, 1249, 1775, 728, 370, 178, 1773, 2084, 371, + /* 1950 */ 671, 564, 751, 747, 743, 739, 303, 566, 2115, 1749, + /* 1960 */ 1748, 2151, 1747, 568, 335, 2117, 675, 2119, 2120, 670, + /* 1970 */ 570, 665, 113, 1473, 1475, 1472, 1477, 27, 2046, 1455, + /* 1980 */ 67, 2115, 2036, 1457, 2151, 56, 585, 335, 2117, 675, + /* 1990 */ 2119, 2120, 670, 2116, 665, 163, 108, 2023, 586, 296, + /* 2000 */ 2021, 253, 1459, 672, 375, 2280, 29, 20, 17, 591, + /* 2010 */ 1687, 258, 59, 6, 7, 599, 601, 60, 265, 260, + /* 2020 */ 1669, 31, 266, 2105, 171, 2116, 264, 21, 65, 30, + /* 2030 */ 2134, 651, 1661, 1707, 92, 672, 1708, 22, 1702, 278, + /* 2040 */ 1701, 380, 2084, 2116, 671, 1706, 1705, 381, 176, 2022, + /* 2050 */ 1636, 1635, 58, 672, 2020, 2019, 2001, 18, 94, 95, + /* 2060 */ 284, 646, 2134, 2000, 103, 97, 283, 23, 57, 297, + /* 2070 */ 285, 282, 1667, 294, 2084, 576, 671, 24, 2151, 287, + /* 2080 */ 2134, 330, 2117, 675, 2119, 2120, 670, 292, 665, 68, + /* 2090 */ 2116, 249, 2084, 11, 671, 99, 1588, 1587, 13, 1511, + /* 2100 */ 672, 1543, 1598, 678, 177, 190, 395, 2115, 1566, 2154, + /* 2110 */ 2151, 682, 1325, 319, 2117, 675, 2119, 2120, 670, 664, + /* 2120 */ 665, 685, 1564, 37, 16, 2115, 676, 2134, 2151, 1563, + /* 2130 */ 25, 320, 2117, 675, 2119, 2120, 670, 2116, 665, 2084, + /* 2140 */ 1535, 671, 674, 26, 688, 1333, 680, 672, 1330, 1327, + /* 2150 */ 683, 686, 691, 1321, 1319, 300, 1324, 1323, 1322, 2116, + /* 2160 */ 689, 692, 104, 1342, 105, 75, 1338, 1212, 706, 672, + /* 2170 */ 1244, 1243, 2115, 301, 2134, 2151, 1242, 1241, 321, 2117, + /* 2180 */ 675, 2119, 2120, 670, 2116, 665, 2084, 1239, 671, 1237, + /* 2190 */ 1236, 1235, 1270, 716, 672, 1233, 2134, 1232, 1231, 1230, + /* 2200 */ 1229, 1228, 1227, 1267, 1265, 1224, 2116, 1223, 2084, 1220, + /* 2210 */ 671, 1219, 1218, 1217, 1789, 736, 672, 737, 738, 2115, + /* 2220 */ 1787, 2134, 2151, 740, 741, 327, 2117, 675, 2119, 2120, + /* 2230 */ 670, 742, 665, 2084, 1785, 671, 744, 746, 745, 1783, + /* 2240 */ 748, 2115, 749, 2134, 2151, 750, 1769, 331, 2117, 675, + /* 2250 */ 2119, 2120, 670, 752, 665, 2084, 1166, 671, 304, 756, + /* 2260 */ 1721, 1721, 1497, 314, 759, 760, 2115, 1746, 1721, 2151, + /* 2270 */ 2116, 1721, 323, 2117, 675, 2119, 2120, 670, 1721, 665, + /* 2280 */ 672, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2115, 1721, + /* 2290 */ 2116, 2151, 1721, 1721, 332, 2117, 675, 2119, 2120, 670, + /* 2300 */ 672, 665, 1721, 1721, 1721, 2116, 1721, 2134, 1721, 1721, + /* 2310 */ 1721, 1721, 1721, 1721, 1721, 672, 1721, 1721, 1721, 2084, + /* 2320 */ 1721, 671, 1721, 1721, 1721, 1721, 1721, 2134, 1721, 1721, + /* 2330 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2116, 1721, 2084, + /* 2340 */ 1721, 671, 2134, 1721, 1721, 1721, 1721, 672, 1721, 1721, + /* 2350 */ 1721, 1721, 2115, 1721, 2084, 2151, 671, 1721, 324, 2117, + /* 2360 */ 675, 2119, 2120, 670, 1721, 665, 1721, 1721, 1721, 1721, + /* 2370 */ 1721, 1721, 2115, 1721, 2134, 2151, 1721, 1721, 333, 2117, + /* 2380 */ 675, 2119, 2120, 670, 1721, 665, 2084, 2115, 671, 1721, + /* 2390 */ 2151, 1721, 1721, 325, 2117, 675, 2119, 2120, 670, 1721, + /* 2400 */ 665, 1721, 1721, 1721, 1721, 2116, 1721, 1721, 1721, 1721, + /* 2410 */ 1721, 1721, 1721, 1721, 1721, 672, 1721, 1721, 1721, 2115, + /* 2420 */ 1721, 1721, 2151, 1721, 2116, 338, 2117, 675, 2119, 2120, + /* 2430 */ 670, 1721, 665, 1721, 672, 1721, 1721, 1721, 1721, 1721, + /* 2440 */ 1721, 1721, 2134, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2450 */ 1721, 1721, 2116, 1721, 2084, 1721, 671, 1721, 1721, 1721, + /* 2460 */ 1721, 2134, 672, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2470 */ 1721, 2116, 1721, 2084, 1721, 671, 1721, 1721, 1721, 1721, + /* 2480 */ 1721, 672, 1721, 1721, 1721, 1721, 1721, 2115, 1721, 2134, + /* 2490 */ 2151, 1721, 1721, 339, 2117, 675, 2119, 2120, 670, 1721, + /* 2500 */ 665, 2084, 1721, 671, 1721, 1721, 2115, 1721, 2134, 2151, + /* 2510 */ 1721, 1721, 2128, 2117, 675, 2119, 2120, 670, 2116, 665, + /* 2520 */ 2084, 1721, 671, 1721, 1721, 1721, 1721, 1721, 672, 1721, + /* 2530 */ 1721, 1721, 1721, 1721, 2115, 1721, 1721, 2151, 1721, 1721, + /* 2540 */ 2127, 2117, 675, 2119, 2120, 670, 1721, 665, 1721, 1721, + /* 2550 */ 1721, 1721, 1721, 2115, 1721, 2134, 2151, 1721, 1721, 2126, + /* 2560 */ 2117, 675, 2119, 2120, 670, 1721, 665, 2084, 1721, 671, + /* 2570 */ 1721, 1721, 1721, 1721, 1721, 2116, 1721, 1721, 1721, 1721, + /* 2580 */ 1721, 1721, 1721, 1721, 1721, 672, 1721, 1721, 1721, 1721, + /* 2590 */ 1721, 2116, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2600 */ 2115, 672, 1721, 2151, 1721, 1721, 353, 2117, 675, 2119, + /* 2610 */ 2120, 670, 2134, 665, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2620 */ 1721, 1721, 1721, 1721, 2084, 1721, 671, 1721, 2134, 1721, + /* 2630 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2640 */ 2084, 2116, 671, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2650 */ 1721, 672, 1721, 1721, 1721, 1721, 1721, 2115, 1721, 1721, + /* 2660 */ 2151, 2116, 1721, 354, 2117, 675, 2119, 2120, 670, 1721, + /* 2670 */ 665, 672, 1721, 2115, 1721, 1721, 2151, 1721, 2134, 350, + /* 2680 */ 2117, 675, 2119, 2120, 670, 1721, 665, 1721, 1721, 1721, + /* 2690 */ 2084, 1721, 671, 1721, 1721, 1721, 1721, 1721, 2134, 1721, + /* 2700 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 2116, 1721, + /* 2710 */ 2084, 1721, 671, 1721, 1721, 1721, 1721, 1721, 672, 1721, + /* 2720 */ 1721, 1721, 1721, 2115, 1721, 1721, 2151, 1721, 1721, 355, + /* 2730 */ 2117, 675, 2119, 2120, 670, 1721, 665, 1721, 1721, 1721, + /* 2740 */ 1721, 1721, 229, 673, 1721, 2134, 2151, 1721, 1721, 330, + /* 2750 */ 2117, 675, 2119, 2120, 670, 1721, 665, 2084, 172, 671, + /* 2760 */ 1721, 1721, 1721, 1721, 535, 531, 527, 523, 226, 1721, + /* 2770 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2780 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2790 */ 2115, 1721, 1721, 2151, 1721, 1721, 329, 2117, 675, 2119, + /* 2800 */ 2120, 670, 1721, 665, 1721, 1721, 1721, 1721, 88, 1721, + /* 2810 */ 1721, 224, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2820 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2830 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2840 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2850 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, /* 2860 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - /* 2870 */ 1721, 1721, 1721, 1721, 1721, 671, 1721, 1721, 1721, 2151, - /* 2880 */ 1721, 1721, 328, 2117, 673, 2119, 2120, 668, 1721, 663, - /* 2890 */ 2115, 1721, 1721, 1721, 2151, 1721, 1721, 327, 2117, 673, - /* 2900 */ 2119, 2120, 668, 1721, 663, + /* 2870 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 223, 217, + /* 2880 */ 1721, 1721, 1721, 222, 1721, 514, 1721, 1721, 1721, 1721, + /* 2890 */ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + /* 2900 */ 1721, 1721, 1721, 215, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 333, 370, 383, 337, 400, 370, 340, 341, 404, 371, - /* 10 */ 343, 365, 12, 13, 14, 0, 371, 398, 399, 381, - /* 20 */ 20, 14, 22, 20, 8, 9, 381, 20, 12, 13, - /* 30 */ 14, 15, 16, 33, 0, 35, 369, 383, 20, 24, - /* 40 */ 25, 26, 27, 28, 29, 30, 31, 32, 381, 395, - /* 50 */ 383, 447, 398, 399, 450, 417, 418, 419, 412, 59, - /* 60 */ 44, 369, 417, 418, 419, 65, 428, 20, 376, 465, - /* 70 */ 466, 20, 72, 428, 470, 471, 384, 342, 343, 0, - /* 80 */ 337, 414, 348, 340, 341, 418, 436, 437, 421, 422, - /* 90 */ 423, 424, 425, 426, 332, 428, 334, 97, 364, 39, - /* 100 */ 100, 67, 68, 69, 70, 71, 372, 73, 74, 75, + /* 0 */ 333, 384, 371, 362, 401, 332, 401, 334, 405, 343, + /* 10 */ 343, 370, 12, 13, 14, 0, 399, 400, 377, 378, + /* 20 */ 20, 14, 22, 342, 8, 9, 385, 20, 12, 13, + /* 30 */ 14, 15, 16, 33, 0, 35, 21, 370, 20, 24, + /* 40 */ 25, 26, 27, 28, 29, 30, 31, 32, 3, 382, + /* 50 */ 447, 384, 447, 450, 388, 450, 8, 9, 351, 59, + /* 60 */ 12, 13, 14, 15, 16, 65, 359, 386, 465, 466, + /* 70 */ 465, 466, 72, 470, 471, 470, 471, 12, 13, 14, + /* 80 */ 15, 16, 415, 337, 20, 418, 340, 341, 421, 422, + /* 90 */ 423, 424, 425, 426, 369, 428, 20, 97, 436, 437, + /* 100 */ 100, 67, 68, 69, 70, 71, 381, 73, 74, 75, /* 110 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, /* 120 */ 86, 87, 88, 89, 90, 91, 92, 93, 461, 462, - /* 130 */ 379, 420, 97, 382, 383, 21, 136, 137, 24, 25, + /* 130 */ 337, 20, 97, 340, 341, 21, 136, 137, 24, 25, /* 140 */ 26, 27, 28, 29, 30, 31, 32, 112, 113, 114, - /* 150 */ 115, 116, 117, 118, 119, 120, 121, 446, 123, 124, - /* 160 */ 125, 126, 127, 128, 369, 20, 166, 167, 447, 166, - /* 170 */ 167, 450, 172, 173, 369, 342, 343, 442, 443, 444, - /* 180 */ 445, 376, 447, 448, 389, 390, 186, 466, 188, 384, - /* 190 */ 330, 470, 471, 360, 130, 131, 64, 8, 9, 135, - /* 200 */ 367, 12, 13, 14, 15, 16, 59, 100, 129, 130, - /* 210 */ 131, 132, 133, 134, 135, 215, 216, 0, 218, 219, + /* 150 */ 115, 116, 117, 118, 119, 120, 121, 370, 123, 124, + /* 160 */ 125, 126, 127, 128, 100, 20, 166, 167, 20, 420, + /* 170 */ 342, 343, 172, 173, 330, 8, 9, 390, 391, 12, + /* 180 */ 13, 14, 15, 16, 166, 167, 186, 20, 188, 361, + /* 190 */ 342, 343, 362, 100, 178, 446, 368, 8, 9, 59, + /* 200 */ 370, 12, 13, 14, 15, 16, 8, 9, 378, 361, + /* 210 */ 12, 13, 14, 15, 16, 215, 216, 0, 218, 219, /* 220 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - /* 230 */ 230, 231, 232, 233, 234, 235, 12, 13, 181, 4, - /* 240 */ 20, 18, 100, 20, 20, 100, 22, 100, 20, 102, - /* 250 */ 27, 333, 447, 30, 65, 450, 33, 33, 369, 35, - /* 260 */ 400, 343, 205, 206, 404, 12, 13, 14, 15, 16, - /* 270 */ 465, 466, 49, 100, 51, 470, 471, 54, 43, 390, - /* 280 */ 45, 46, 368, 59, 67, 68, 69, 369, 0, 65, - /* 290 */ 100, 74, 75, 76, 380, 20, 72, 80, 109, 381, - /* 300 */ 110, 383, 85, 86, 87, 88, 20, 447, 91, 21, - /* 310 */ 450, 251, 24, 25, 26, 27, 28, 29, 30, 31, - /* 320 */ 32, 97, 99, 348, 100, 465, 466, 185, 3, 187, - /* 330 */ 470, 471, 414, 20, 111, 22, 418, 342, 343, 421, - /* 340 */ 422, 423, 424, 425, 426, 20, 428, 372, 35, 431, - /* 350 */ 342, 433, 434, 435, 165, 360, 214, 439, 440, 252, - /* 360 */ 136, 137, 367, 140, 20, 52, 143, 144, 145, 146, + /* 230 */ 230, 231, 232, 233, 234, 235, 12, 13, 0, 370, + /* 240 */ 100, 18, 102, 20, 20, 401, 22, 100, 100, 405, + /* 250 */ 27, 333, 447, 30, 65, 450, 33, 33, 343, 35, + /* 260 */ 391, 343, 24, 25, 26, 27, 28, 29, 30, 31, + /* 270 */ 32, 466, 49, 20, 51, 470, 471, 54, 185, 362, + /* 280 */ 187, 64, 447, 59, 22, 450, 338, 370, 370, 65, + /* 290 */ 342, 447, 344, 277, 450, 378, 72, 35, 109, 101, + /* 300 */ 382, 466, 384, 388, 384, 470, 471, 214, 447, 465, + /* 310 */ 466, 450, 64, 333, 470, 471, 396, 272, 4, 399, + /* 320 */ 400, 97, 99, 343, 100, 345, 465, 466, 35, 342, + /* 330 */ 343, 470, 471, 415, 111, 168, 418, 342, 343, 421, + /* 340 */ 422, 423, 424, 425, 426, 252, 428, 20, 361, 431, + /* 350 */ 370, 433, 434, 435, 165, 368, 361, 439, 440, 97, + /* 360 */ 136, 137, 382, 140, 384, 72, 143, 144, 145, 146, /* 370 */ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - /* 380 */ 157, 158, 159, 338, 161, 162, 163, 342, 168, 344, - /* 390 */ 166, 167, 447, 385, 252, 450, 172, 173, 14, 252, - /* 400 */ 67, 68, 69, 64, 20, 382, 383, 74, 75, 76, - /* 410 */ 186, 466, 188, 80, 171, 470, 471, 0, 85, 86, - /* 420 */ 87, 88, 136, 137, 91, 252, 101, 35, 239, 240, + /* 380 */ 157, 158, 159, 20, 161, 162, 163, 14, 20, 20, + /* 390 */ 166, 167, 252, 20, 13, 415, 172, 173, 418, 252, + /* 400 */ 252, 421, 422, 423, 424, 425, 426, 64, 428, 20, + /* 410 */ 186, 22, 188, 433, 100, 435, 35, 342, 343, 439, + /* 420 */ 440, 168, 100, 171, 342, 342, 343, 333, 239, 240, /* 430 */ 241, 242, 243, 244, 245, 246, 247, 248, 249, 215, - /* 440 */ 216, 166, 218, 219, 220, 221, 222, 223, 224, 225, + /* 440 */ 216, 52, 218, 219, 220, 221, 222, 223, 224, 225, /* 450 */ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - /* 460 */ 236, 12, 13, 33, 72, 22, 351, 20, 338, 20, - /* 470 */ 333, 22, 342, 358, 344, 215, 111, 20, 35, 49, - /* 480 */ 343, 64, 33, 81, 35, 55, 56, 57, 58, 59, - /* 490 */ 420, 8, 9, 168, 333, 12, 13, 14, 15, 16, - /* 500 */ 257, 258, 259, 20, 20, 4, 369, 371, 59, 355, - /* 510 */ 356, 72, 20, 343, 65, 72, 446, 381, 381, 342, - /* 520 */ 383, 72, 262, 263, 264, 265, 266, 267, 268, 99, - /* 530 */ 8, 9, 102, 236, 12, 13, 14, 15, 16, 369, - /* 540 */ 97, 369, 381, 141, 142, 13, 97, 333, 376, 100, - /* 550 */ 166, 414, 165, 417, 418, 418, 384, 100, 421, 422, - /* 560 */ 423, 424, 425, 426, 428, 428, 164, 35, 18, 392, - /* 570 */ 433, 394, 435, 23, 8, 9, 439, 440, 12, 13, - /* 580 */ 14, 15, 16, 136, 137, 136, 137, 37, 38, 452, - /* 590 */ 333, 41, 100, 423, 4, 381, 20, 460, 22, 169, - /* 600 */ 170, 100, 350, 342, 174, 236, 176, 238, 420, 19, - /* 610 */ 60, 61, 62, 63, 111, 166, 167, 361, 366, 172, - /* 620 */ 173, 172, 173, 33, 194, 369, 239, 375, 52, 186, - /* 630 */ 72, 188, 376, 377, 446, 186, 249, 188, 381, 49, - /* 640 */ 384, 0, 342, 343, 54, 342, 343, 369, 333, 59, - /* 650 */ 100, 168, 168, 392, 376, 394, 371, 129, 215, 216, - /* 660 */ 360, 133, 384, 360, 215, 216, 381, 218, 219, 220, + /* 460 */ 236, 12, 13, 136, 137, 22, 12, 13, 100, 20, + /* 470 */ 22, 22, 67, 68, 69, 393, 382, 395, 35, 74, + /* 480 */ 75, 76, 33, 35, 35, 80, 3, 333, 2, 35, + /* 490 */ 85, 86, 87, 88, 8, 9, 91, 343, 12, 13, + /* 500 */ 14, 15, 16, 20, 20, 136, 137, 333, 59, 257, + /* 510 */ 258, 259, 215, 379, 65, 72, 382, 343, 443, 444, + /* 520 */ 445, 72, 447, 448, 370, 442, 443, 444, 445, 380, + /* 530 */ 447, 448, 383, 384, 366, 20, 382, 22, 384, 166, + /* 540 */ 97, 172, 173, 20, 370, 97, 97, 8, 9, 100, + /* 550 */ 35, 12, 13, 14, 15, 16, 382, 44, 384, 262, + /* 560 */ 263, 264, 265, 266, 267, 268, 252, 52, 18, 415, + /* 570 */ 333, 111, 418, 23, 252, 421, 422, 423, 424, 425, + /* 580 */ 426, 413, 428, 44, 101, 136, 137, 37, 38, 415, + /* 590 */ 236, 41, 418, 358, 4, 421, 422, 423, 424, 425, + /* 600 */ 426, 427, 428, 429, 430, 342, 343, 372, 348, 19, + /* 610 */ 60, 61, 62, 63, 101, 166, 167, 382, 343, 382, + /* 620 */ 252, 172, 173, 33, 361, 365, 472, 473, 338, 186, + /* 630 */ 81, 188, 342, 373, 344, 186, 0, 188, 370, 49, + /* 640 */ 370, 370, 188, 342, 54, 370, 378, 377, 377, 59, + /* 650 */ 100, 168, 168, 418, 419, 385, 385, 72, 215, 216, + /* 660 */ 4, 130, 131, 428, 215, 216, 135, 218, 219, 220, /* 670 */ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, /* 680 */ 231, 232, 233, 234, 235, 12, 13, 14, 138, 99, - /* 690 */ 369, 333, 102, 20, 370, 22, 381, 376, 342, 343, - /* 700 */ 178, 343, 417, 418, 419, 384, 33, 333, 35, 252, - /* 710 */ 357, 2, 359, 428, 342, 343, 360, 8, 9, 342, - /* 720 */ 343, 12, 13, 14, 15, 16, 358, 369, 178, 179, - /* 730 */ 180, 350, 59, 183, 168, 355, 356, 360, 342, 381, - /* 740 */ 370, 383, 8, 9, 252, 72, 12, 13, 14, 15, - /* 750 */ 16, 342, 343, 252, 204, 381, 375, 207, 0, 343, - /* 760 */ 210, 211, 212, 213, 214, 14, 333, 342, 343, 360, - /* 770 */ 97, 20, 414, 100, 342, 343, 418, 333, 333, 421, - /* 780 */ 422, 423, 424, 425, 426, 360, 428, 343, 392, 345, - /* 790 */ 394, 433, 360, 435, 2, 4, 333, 439, 440, 277, - /* 800 */ 8, 9, 252, 387, 12, 13, 14, 15, 16, 136, - /* 810 */ 137, 342, 343, 369, 381, 443, 444, 445, 460, 447, - /* 820 */ 448, 21, 450, 342, 343, 381, 381, 383, 370, 360, - /* 830 */ 20, 342, 343, 59, 34, 101, 36, 465, 466, 166, - /* 840 */ 167, 343, 470, 471, 381, 172, 173, 8, 9, 360, - /* 850 */ 209, 12, 13, 14, 15, 16, 0, 431, 414, 186, - /* 860 */ 434, 188, 418, 342, 343, 421, 422, 423, 424, 425, - /* 870 */ 426, 369, 428, 99, 131, 370, 102, 433, 135, 435, - /* 880 */ 37, 360, 369, 439, 440, 387, 384, 400, 215, 216, - /* 890 */ 377, 218, 219, 220, 221, 222, 223, 224, 225, 226, + /* 690 */ 141, 142, 102, 20, 393, 22, 395, 333, 423, 43, + /* 700 */ 0, 45, 46, 67, 68, 69, 33, 343, 35, 37, + /* 710 */ 74, 75, 76, 164, 342, 111, 80, 447, 342, 343, + /* 720 */ 450, 85, 86, 87, 88, 342, 343, 91, 178, 179, + /* 730 */ 180, 4, 59, 183, 370, 465, 466, 361, 383, 384, + /* 740 */ 470, 471, 72, 131, 370, 72, 382, 135, 384, 342, + /* 750 */ 343, 377, 1, 2, 204, 342, 343, 207, 371, 385, + /* 760 */ 210, 211, 212, 213, 214, 393, 333, 395, 361, 370, + /* 770 */ 97, 100, 401, 100, 361, 103, 377, 105, 106, 415, + /* 780 */ 108, 110, 418, 333, 385, 421, 422, 423, 424, 425, + /* 790 */ 426, 370, 428, 343, 0, 342, 343, 433, 377, 435, + /* 800 */ 348, 129, 252, 439, 440, 133, 385, 195, 196, 136, + /* 810 */ 137, 199, 350, 201, 361, 382, 452, 401, 447, 334, + /* 820 */ 370, 450, 355, 356, 460, 373, 443, 444, 445, 367, + /* 830 */ 447, 448, 382, 450, 384, 333, 465, 466, 376, 166, + /* 840 */ 167, 470, 471, 342, 343, 172, 173, 130, 465, 466, + /* 850 */ 342, 343, 101, 470, 471, 155, 14, 420, 236, 186, + /* 860 */ 238, 188, 20, 447, 164, 415, 450, 333, 418, 361, + /* 870 */ 371, 421, 422, 423, 424, 425, 426, 432, 428, 434, + /* 880 */ 44, 465, 466, 446, 382, 435, 470, 471, 215, 216, + /* 890 */ 440, 218, 219, 220, 221, 222, 223, 224, 225, 226, /* 900 */ 227, 228, 229, 230, 231, 232, 233, 234, 235, 12, - /* 910 */ 13, 333, 432, 155, 434, 342, 343, 20, 333, 22, - /* 920 */ 333, 343, 164, 345, 443, 444, 445, 59, 447, 448, - /* 930 */ 33, 333, 35, 360, 447, 45, 46, 450, 195, 196, - /* 940 */ 101, 343, 199, 432, 201, 434, 103, 369, 105, 106, - /* 950 */ 333, 108, 465, 466, 14, 334, 59, 470, 471, 381, - /* 960 */ 20, 383, 342, 343, 342, 343, 381, 369, 381, 72, - /* 970 */ 102, 22, 129, 14, 15, 16, 133, 3, 168, 381, - /* 980 */ 360, 383, 360, 371, 35, 129, 130, 131, 132, 133, - /* 990 */ 134, 135, 414, 381, 97, 400, 418, 100, 381, 421, - /* 1000 */ 422, 423, 424, 425, 426, 333, 428, 400, 1, 2, - /* 1010 */ 333, 433, 414, 435, 333, 343, 418, 439, 440, 421, - /* 1020 */ 422, 423, 424, 425, 426, 427, 428, 429, 430, 417, - /* 1030 */ 418, 8, 9, 136, 137, 12, 13, 14, 15, 16, - /* 1040 */ 428, 369, 447, 361, 253, 450, 97, 343, 44, 342, - /* 1050 */ 343, 369, 65, 381, 447, 383, 370, 450, 381, 377, - /* 1060 */ 465, 466, 381, 166, 167, 470, 471, 360, 378, 172, - /* 1070 */ 173, 381, 465, 466, 250, 251, 361, 470, 471, 136, - /* 1080 */ 137, 342, 343, 186, 369, 188, 414, 342, 343, 22, - /* 1090 */ 418, 387, 377, 421, 422, 423, 424, 425, 426, 360, - /* 1100 */ 428, 400, 35, 342, 343, 360, 166, 42, 101, 44, - /* 1110 */ 130, 378, 215, 216, 381, 218, 219, 220, 221, 222, + /* 910 */ 13, 432, 20, 434, 197, 198, 382, 20, 181, 22, + /* 920 */ 42, 333, 44, 129, 130, 131, 132, 133, 134, 135, + /* 930 */ 33, 343, 35, 8, 9, 342, 343, 12, 13, 14, + /* 940 */ 15, 16, 205, 206, 443, 444, 445, 333, 447, 448, + /* 950 */ 59, 371, 342, 343, 361, 401, 59, 343, 370, 345, + /* 960 */ 129, 130, 131, 132, 133, 134, 135, 362, 20, 72, + /* 970 */ 382, 361, 384, 342, 343, 370, 14, 15, 16, 420, + /* 980 */ 253, 8, 9, 378, 370, 12, 13, 14, 15, 16, + /* 990 */ 99, 129, 361, 102, 97, 133, 382, 100, 384, 342, + /* 1000 */ 343, 447, 333, 415, 450, 446, 418, 333, 166, 421, + /* 1010 */ 422, 423, 424, 425, 426, 0, 428, 343, 361, 465, + /* 1020 */ 466, 433, 39, 435, 470, 471, 333, 439, 440, 415, + /* 1030 */ 0, 350, 418, 136, 137, 421, 422, 423, 424, 425, + /* 1040 */ 426, 358, 428, 406, 370, 333, 21, 433, 460, 435, + /* 1050 */ 42, 382, 44, 439, 440, 372, 382, 376, 384, 34, + /* 1060 */ 168, 36, 343, 166, 167, 382, 2, 342, 343, 172, + /* 1070 */ 173, 165, 8, 9, 101, 382, 12, 13, 14, 15, + /* 1080 */ 16, 355, 356, 186, 371, 188, 361, 342, 343, 415, + /* 1090 */ 342, 343, 418, 168, 382, 421, 422, 423, 424, 425, + /* 1100 */ 426, 418, 428, 45, 46, 363, 361, 388, 366, 361, + /* 1110 */ 274, 428, 215, 216, 166, 218, 219, 220, 221, 222, /* 1120 */ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - /* 1130 */ 233, 234, 235, 12, 13, 342, 343, 342, 343, 333, - /* 1140 */ 333, 20, 361, 22, 472, 473, 333, 333, 447, 0, - /* 1150 */ 369, 450, 333, 360, 33, 360, 35, 343, 377, 345, - /* 1160 */ 44, 44, 22, 333, 97, 333, 465, 466, 0, 405, - /* 1170 */ 362, 470, 471, 365, 333, 35, 378, 197, 198, 381, - /* 1180 */ 59, 111, 104, 369, 343, 107, 345, 381, 381, 42, - /* 1190 */ 200, 44, 202, 72, 381, 381, 447, 383, 49, 450, - /* 1200 */ 381, 48, 215, 13, 443, 444, 445, 0, 447, 448, - /* 1210 */ 369, 381, 44, 381, 465, 466, 391, 101, 97, 470, - /* 1220 */ 471, 100, 381, 104, 383, 35, 107, 474, 414, 22, - /* 1230 */ 160, 35, 418, 44, 333, 421, 422, 423, 424, 425, - /* 1240 */ 426, 35, 428, 463, 343, 104, 272, 433, 107, 435, - /* 1250 */ 0, 0, 346, 439, 440, 414, 44, 136, 137, 418, - /* 1260 */ 44, 13, 421, 422, 423, 424, 425, 426, 104, 428, - /* 1270 */ 369, 107, 22, 22, 433, 44, 435, 44, 274, 457, - /* 1280 */ 439, 440, 381, 35, 383, 47, 369, 166, 167, 391, - /* 1290 */ 101, 35, 346, 172, 173, 341, 129, 130, 131, 132, - /* 1300 */ 133, 134, 135, 1, 2, 44, 343, 186, 44, 188, - /* 1310 */ 380, 44, 391, 101, 44, 414, 44, 101, 44, 418, - /* 1320 */ 449, 168, 421, 422, 423, 424, 425, 426, 72, 428, - /* 1330 */ 44, 0, 101, 44, 101, 44, 215, 216, 100, 218, + /* 1130 */ 233, 234, 235, 12, 13, 333, 462, 333, 342, 343, + /* 1140 */ 333, 20, 333, 22, 358, 239, 333, 343, 333, 345, + /* 1150 */ 342, 343, 342, 343, 33, 249, 35, 361, 372, 129, + /* 1160 */ 130, 131, 132, 133, 134, 135, 333, 431, 382, 361, + /* 1170 */ 434, 361, 250, 251, 370, 370, 379, 14, 379, 382, + /* 1180 */ 59, 382, 333, 20, 382, 358, 382, 333, 384, 382, + /* 1190 */ 385, 382, 358, 72, 0, 382, 44, 382, 333, 372, + /* 1200 */ 333, 333, 0, 371, 418, 419, 372, 357, 104, 382, + /* 1210 */ 360, 107, 111, 48, 428, 382, 382, 104, 97, 415, + /* 1220 */ 107, 100, 418, 333, 209, 421, 422, 423, 424, 425, + /* 1230 */ 426, 382, 428, 343, 251, 345, 382, 433, 44, 435, + /* 1240 */ 44, 22, 13, 439, 440, 418, 419, 382, 0, 382, + /* 1250 */ 382, 49, 418, 104, 35, 428, 107, 136, 137, 0, + /* 1260 */ 370, 160, 428, 104, 35, 44, 107, 0, 13, 200, + /* 1270 */ 22, 202, 382, 65, 384, 44, 59, 44, 44, 136, + /* 1280 */ 137, 22, 1, 2, 371, 47, 359, 166, 167, 22, + /* 1290 */ 35, 392, 474, 172, 173, 346, 457, 101, 463, 358, + /* 1300 */ 35, 35, 13, 358, 44, 415, 44, 186, 418, 188, + /* 1310 */ 370, 421, 422, 423, 424, 425, 426, 44, 428, 102, + /* 1320 */ 44, 44, 101, 433, 35, 435, 346, 44, 44, 439, + /* 1330 */ 440, 392, 101, 168, 101, 101, 215, 216, 100, 218, /* 1340 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - /* 1350 */ 229, 230, 231, 232, 233, 234, 235, 441, 467, 12, - /* 1360 */ 13, 44, 101, 462, 44, 101, 44, 333, 101, 22, - /* 1370 */ 44, 101, 44, 101, 13, 101, 451, 343, 254, 345, - /* 1380 */ 33, 50, 35, 416, 188, 49, 415, 101, 184, 388, - /* 1390 */ 101, 402, 101, 276, 188, 42, 35, 333, 20, 391, - /* 1400 */ 388, 165, 386, 369, 20, 342, 59, 343, 342, 345, - /* 1410 */ 388, 386, 386, 98, 354, 381, 342, 383, 101, 72, - /* 1420 */ 96, 101, 353, 101, 95, 352, 342, 101, 342, 101, - /* 1430 */ 342, 20, 335, 369, 48, 339, 335, 339, 20, 409, - /* 1440 */ 350, 20, 383, 350, 97, 381, 20, 383, 414, 344, - /* 1450 */ 20, 401, 418, 350, 344, 421, 422, 423, 424, 425, - /* 1460 */ 426, 350, 428, 350, 350, 333, 53, 433, 342, 435, - /* 1470 */ 350, 335, 347, 439, 440, 343, 347, 369, 414, 335, - /* 1480 */ 381, 369, 418, 381, 369, 421, 422, 423, 424, 425, - /* 1490 */ 426, 369, 428, 342, 413, 203, 369, 433, 100, 435, - /* 1500 */ 369, 369, 369, 439, 440, 411, 369, 369, 369, 381, - /* 1510 */ 348, 369, 408, 381, 191, 383, 409, 192, 383, 348, - /* 1520 */ 190, 342, 269, 261, 456, 407, 260, 381, 456, 406, - /* 1530 */ 396, 381, 177, 186, 391, 188, 391, 381, 381, 459, - /* 1540 */ 458, 456, 271, 270, 396, 454, 414, 455, 255, 273, - /* 1550 */ 418, 475, 275, 421, 422, 423, 424, 425, 426, 453, - /* 1560 */ 428, 278, 215, 216, 469, 433, 343, 435, 416, 251, - /* 1570 */ 20, 439, 440, 333, 420, 228, 229, 230, 231, 232, - /* 1580 */ 233, 234, 348, 343, 342, 344, 20, 348, 394, 396, - /* 1590 */ 381, 381, 381, 333, 381, 381, 396, 170, 468, 381, - /* 1600 */ 348, 393, 365, 343, 100, 348, 343, 438, 100, 369, - /* 1610 */ 381, 342, 36, 359, 0, 336, 373, 335, 403, 397, - /* 1620 */ 0, 381, 397, 383, 0, 331, 348, 410, 363, 369, - /* 1630 */ 349, 363, 42, 0, 35, 35, 208, 35, 363, 35, - /* 1640 */ 208, 381, 35, 383, 0, 35, 208, 0, 208, 0, - /* 1650 */ 35, 0, 22, 0, 414, 195, 35, 188, 418, 186, - /* 1660 */ 0, 421, 422, 423, 424, 425, 426, 0, 428, 0, - /* 1670 */ 182, 181, 0, 433, 414, 435, 47, 333, 418, 439, - /* 1680 */ 440, 421, 422, 423, 424, 425, 426, 343, 428, 0, - /* 1690 */ 0, 0, 0, 433, 42, 435, 0, 0, 0, 439, - /* 1700 */ 440, 333, 0, 0, 0, 0, 0, 155, 35, 0, - /* 1710 */ 155, 343, 0, 369, 0, 0, 0, 0, 0, 0, - /* 1720 */ 0, 0, 0, 0, 0, 381, 0, 383, 0, 0, - /* 1730 */ 0, 0, 0, 0, 0, 42, 0, 369, 0, 0, - /* 1740 */ 0, 0, 139, 0, 0, 0, 59, 22, 48, 381, - /* 1750 */ 0, 383, 0, 59, 59, 48, 0, 22, 414, 22, - /* 1760 */ 0, 14, 418, 177, 0, 421, 422, 423, 424, 425, - /* 1770 */ 426, 44, 428, 0, 0, 0, 0, 35, 333, 435, - /* 1780 */ 0, 0, 414, 439, 440, 39, 418, 39, 343, 421, - /* 1790 */ 422, 423, 424, 425, 426, 42, 428, 39, 47, 40, - /* 1800 */ 0, 333, 47, 435, 47, 0, 35, 439, 440, 39, - /* 1810 */ 49, 343, 0, 35, 369, 66, 49, 0, 39, 35, - /* 1820 */ 0, 49, 39, 35, 333, 39, 381, 0, 383, 0, - /* 1830 */ 0, 49, 0, 35, 343, 22, 0, 369, 35, 35, - /* 1840 */ 44, 35, 35, 35, 35, 35, 44, 333, 22, 381, - /* 1850 */ 35, 383, 0, 35, 35, 22, 0, 343, 0, 414, - /* 1860 */ 369, 107, 22, 418, 22, 51, 421, 422, 423, 424, - /* 1870 */ 425, 426, 381, 428, 383, 109, 35, 0, 35, 0, - /* 1880 */ 435, 35, 414, 369, 439, 440, 418, 0, 22, 421, - /* 1890 */ 422, 423, 424, 425, 426, 381, 428, 383, 20, 35, - /* 1900 */ 35, 100, 35, 435, 0, 414, 193, 35, 440, 418, - /* 1910 */ 333, 100, 421, 422, 423, 424, 425, 426, 22, 428, - /* 1920 */ 343, 0, 101, 22, 0, 0, 3, 44, 414, 101, - /* 1930 */ 168, 256, 418, 48, 100, 421, 422, 423, 424, 425, - /* 1940 */ 426, 48, 428, 175, 100, 168, 369, 98, 101, 96, - /* 1950 */ 44, 374, 44, 168, 189, 464, 101, 100, 381, 170, - /* 1960 */ 383, 100, 100, 44, 101, 47, 256, 3, 100, 47, - /* 1970 */ 44, 101, 101, 44, 35, 333, 35, 35, 35, 35, - /* 1980 */ 35, 101, 101, 0, 47, 343, 0, 473, 0, 0, - /* 1990 */ 44, 414, 100, 39, 47, 418, 333, 47, 421, 422, - /* 2000 */ 423, 424, 425, 426, 101, 428, 343, 100, 171, 333, - /* 2010 */ 101, 369, 100, 100, 100, 0, 39, 169, 47, 343, - /* 2020 */ 110, 2, 44, 381, 22, 383, 98, 100, 98, 237, - /* 2030 */ 22, 215, 369, 100, 47, 101, 101, 374, 100, 47, - /* 2040 */ 250, 101, 217, 111, 381, 369, 383, 256, 100, 100, - /* 2050 */ 374, 100, 35, 101, 101, 100, 414, 381, 35, 383, - /* 2060 */ 418, 1, 100, 421, 422, 423, 424, 425, 426, 101, - /* 2070 */ 428, 35, 430, 100, 35, 101, 100, 414, 35, 19, - /* 2080 */ 101, 418, 100, 35, 421, 422, 423, 424, 425, 426, - /* 2090 */ 414, 428, 101, 33, 418, 100, 333, 421, 422, 423, - /* 2100 */ 424, 425, 426, 122, 428, 100, 343, 122, 44, 49, - /* 2110 */ 100, 35, 122, 100, 22, 55, 56, 57, 58, 59, - /* 2120 */ 333, 122, 66, 65, 35, 35, 35, 72, 35, 35, - /* 2130 */ 343, 35, 369, 35, 35, 35, 35, 35, 94, 44, - /* 2140 */ 35, 35, 22, 35, 381, 35, 383, 35, 35, 72, - /* 2150 */ 35, 35, 22, 35, 35, 0, 369, 35, 35, 99, - /* 2160 */ 49, 0, 102, 39, 35, 39, 0, 35, 381, 0, - /* 2170 */ 383, 35, 0, 39, 49, 35, 49, 414, 39, 35, - /* 2180 */ 49, 418, 0, 333, 421, 422, 423, 424, 425, 426, - /* 2190 */ 22, 428, 21, 343, 134, 22, 22, 21, 20, 476, - /* 2200 */ 476, 414, 476, 476, 476, 418, 476, 333, 421, 422, - /* 2210 */ 423, 424, 425, 426, 476, 428, 476, 343, 476, 369, - /* 2220 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 169, - /* 2230 */ 476, 381, 476, 383, 174, 476, 476, 476, 476, 476, - /* 2240 */ 476, 476, 476, 369, 476, 476, 476, 476, 476, 476, - /* 2250 */ 476, 476, 476, 333, 194, 381, 476, 383, 476, 476, - /* 2260 */ 476, 476, 476, 343, 414, 476, 476, 476, 418, 333, - /* 2270 */ 476, 421, 422, 423, 424, 425, 426, 476, 428, 343, - /* 2280 */ 476, 476, 476, 476, 476, 476, 476, 476, 414, 369, - /* 2290 */ 476, 476, 418, 476, 476, 421, 422, 423, 424, 425, - /* 2300 */ 426, 381, 428, 383, 476, 369, 476, 476, 476, 476, - /* 2310 */ 476, 476, 476, 476, 476, 476, 476, 381, 476, 383, - /* 2320 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 333, - /* 2330 */ 476, 476, 476, 476, 414, 476, 476, 476, 418, 343, - /* 2340 */ 476, 421, 422, 423, 424, 425, 426, 476, 428, 476, - /* 2350 */ 414, 476, 476, 333, 418, 476, 476, 421, 422, 423, - /* 2360 */ 424, 425, 426, 343, 428, 369, 476, 476, 476, 476, - /* 2370 */ 476, 476, 476, 476, 476, 476, 476, 381, 476, 383, - /* 2380 */ 333, 476, 476, 476, 476, 476, 476, 476, 476, 369, - /* 2390 */ 343, 476, 476, 476, 476, 476, 476, 476, 476, 333, - /* 2400 */ 476, 381, 476, 383, 476, 476, 476, 476, 476, 343, - /* 2410 */ 414, 476, 476, 476, 418, 476, 369, 421, 422, 423, - /* 2420 */ 424, 425, 426, 476, 428, 476, 476, 476, 381, 476, - /* 2430 */ 383, 476, 476, 476, 414, 369, 476, 476, 418, 476, - /* 2440 */ 476, 421, 422, 423, 424, 425, 426, 381, 428, 383, - /* 2450 */ 333, 476, 476, 476, 476, 476, 476, 476, 476, 476, - /* 2460 */ 343, 414, 476, 476, 476, 418, 333, 476, 421, 422, - /* 2470 */ 423, 424, 425, 426, 476, 428, 343, 476, 476, 476, - /* 2480 */ 414, 476, 476, 476, 418, 476, 369, 421, 422, 423, - /* 2490 */ 424, 425, 426, 476, 428, 476, 333, 476, 381, 476, - /* 2500 */ 383, 476, 369, 476, 476, 476, 343, 476, 476, 476, - /* 2510 */ 476, 476, 476, 476, 381, 476, 383, 333, 476, 476, - /* 2520 */ 476, 476, 476, 476, 476, 476, 476, 343, 476, 476, - /* 2530 */ 476, 414, 369, 476, 476, 418, 476, 476, 421, 422, - /* 2540 */ 423, 424, 425, 426, 381, 428, 383, 414, 476, 476, - /* 2550 */ 476, 418, 476, 369, 421, 422, 423, 424, 425, 426, - /* 2560 */ 476, 428, 476, 333, 476, 381, 476, 383, 476, 476, - /* 2570 */ 476, 476, 476, 343, 476, 476, 476, 414, 476, 476, - /* 2580 */ 476, 418, 476, 476, 421, 422, 423, 424, 425, 426, - /* 2590 */ 476, 428, 476, 476, 476, 476, 476, 476, 414, 369, - /* 2600 */ 476, 476, 418, 476, 476, 421, 422, 423, 424, 425, - /* 2610 */ 426, 381, 428, 383, 476, 476, 476, 476, 476, 476, - /* 2620 */ 476, 476, 476, 333, 476, 476, 476, 476, 476, 476, - /* 2630 */ 476, 476, 476, 343, 476, 476, 333, 476, 476, 476, - /* 2640 */ 476, 476, 476, 476, 414, 476, 343, 476, 418, 476, - /* 2650 */ 476, 421, 422, 423, 424, 425, 426, 476, 428, 369, - /* 2660 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - /* 2670 */ 476, 381, 369, 383, 476, 476, 476, 476, 476, 476, - /* 2680 */ 476, 476, 476, 476, 381, 476, 383, 333, 476, 476, - /* 2690 */ 476, 476, 476, 476, 476, 476, 476, 343, 476, 476, - /* 2700 */ 476, 476, 476, 476, 414, 476, 476, 476, 418, 476, - /* 2710 */ 476, 421, 422, 423, 424, 425, 426, 414, 428, 476, - /* 2720 */ 476, 418, 476, 369, 421, 422, 423, 424, 425, 426, - /* 2730 */ 476, 428, 476, 333, 476, 381, 476, 383, 476, 476, - /* 2740 */ 476, 476, 476, 343, 476, 476, 476, 476, 333, 476, - /* 2750 */ 476, 476, 476, 476, 476, 476, 476, 476, 343, 476, - /* 2760 */ 476, 476, 476, 476, 476, 476, 476, 476, 414, 369, - /* 2770 */ 476, 476, 418, 476, 476, 421, 422, 423, 424, 425, - /* 2780 */ 426, 381, 428, 383, 369, 476, 476, 476, 476, 476, - /* 2790 */ 476, 476, 476, 476, 333, 476, 381, 476, 383, 476, - /* 2800 */ 476, 476, 476, 476, 343, 476, 476, 476, 476, 333, - /* 2810 */ 476, 476, 476, 476, 414, 476, 476, 476, 418, 343, - /* 2820 */ 476, 421, 422, 423, 424, 425, 426, 476, 428, 414, - /* 2830 */ 369, 476, 476, 418, 476, 476, 421, 422, 423, 424, - /* 2840 */ 425, 426, 381, 428, 383, 369, 476, 476, 476, 476, - /* 2850 */ 476, 476, 476, 476, 476, 476, 476, 381, 476, 383, + /* 1350 */ 229, 230, 231, 232, 233, 234, 235, 333, 12, 13, + /* 1360 */ 35, 101, 44, 101, 44, 44, 0, 343, 22, 345, + /* 1370 */ 44, 343, 44, 341, 101, 381, 392, 101, 101, 33, + /* 1380 */ 44, 35, 449, 333, 101, 101, 467, 44, 441, 451, + /* 1390 */ 254, 417, 416, 343, 370, 345, 49, 72, 184, 403, + /* 1400 */ 42, 389, 20, 392, 165, 59, 382, 389, 384, 387, + /* 1410 */ 20, 98, 342, 342, 387, 389, 50, 354, 72, 101, + /* 1420 */ 370, 101, 101, 215, 387, 96, 353, 101, 276, 101, + /* 1430 */ 333, 342, 382, 95, 384, 352, 342, 101, 342, 415, + /* 1440 */ 343, 342, 418, 97, 101, 421, 422, 423, 424, 425, + /* 1450 */ 426, 333, 428, 188, 188, 20, 48, 433, 335, 435, + /* 1460 */ 335, 343, 20, 439, 440, 415, 339, 370, 418, 339, + /* 1470 */ 410, 421, 422, 423, 424, 425, 426, 20, 428, 382, + /* 1480 */ 20, 384, 350, 433, 384, 435, 344, 350, 370, 439, + /* 1490 */ 440, 20, 402, 53, 350, 344, 350, 350, 350, 342, + /* 1500 */ 382, 347, 384, 350, 335, 347, 342, 335, 370, 370, + /* 1510 */ 370, 370, 415, 382, 203, 418, 382, 382, 421, 422, + /* 1520 */ 423, 424, 425, 426, 414, 428, 370, 100, 412, 410, + /* 1530 */ 370, 370, 186, 415, 188, 348, 418, 370, 370, 421, + /* 1540 */ 422, 423, 424, 425, 426, 370, 428, 370, 192, 348, + /* 1550 */ 191, 433, 190, 435, 409, 333, 382, 439, 440, 261, + /* 1560 */ 384, 215, 216, 408, 456, 343, 342, 260, 397, 407, + /* 1570 */ 473, 392, 392, 382, 228, 229, 230, 231, 232, 233, + /* 1580 */ 234, 397, 456, 269, 177, 382, 382, 459, 271, 270, + /* 1590 */ 255, 458, 370, 278, 343, 417, 251, 475, 275, 20, + /* 1600 */ 273, 420, 344, 342, 382, 455, 384, 20, 395, 397, + /* 1610 */ 382, 348, 348, 397, 382, 170, 348, 382, 382, 382, + /* 1620 */ 394, 333, 456, 382, 454, 343, 453, 348, 100, 100, + /* 1630 */ 438, 343, 382, 342, 360, 366, 36, 415, 348, 336, + /* 1640 */ 418, 335, 398, 421, 422, 423, 424, 425, 426, 333, + /* 1650 */ 428, 469, 374, 468, 411, 433, 404, 435, 370, 343, + /* 1660 */ 364, 439, 440, 364, 364, 331, 0, 0, 398, 0, + /* 1670 */ 382, 349, 384, 42, 0, 35, 208, 35, 35, 35, + /* 1680 */ 208, 333, 0, 35, 35, 208, 370, 0, 208, 0, + /* 1690 */ 35, 343, 22, 0, 35, 195, 188, 186, 382, 0, + /* 1700 */ 384, 0, 0, 415, 0, 182, 418, 181, 0, 421, + /* 1710 */ 422, 423, 424, 425, 426, 0, 428, 0, 370, 47, + /* 1720 */ 0, 433, 0, 435, 0, 42, 0, 439, 440, 0, + /* 1730 */ 382, 415, 384, 0, 418, 0, 0, 421, 422, 423, + /* 1740 */ 424, 425, 426, 0, 428, 0, 155, 35, 0, 155, + /* 1750 */ 0, 435, 333, 0, 0, 439, 440, 139, 42, 0, + /* 1760 */ 0, 0, 343, 415, 0, 0, 418, 0, 0, 421, + /* 1770 */ 422, 423, 424, 425, 426, 0, 428, 0, 0, 0, + /* 1780 */ 333, 0, 0, 435, 0, 0, 0, 439, 440, 370, + /* 1790 */ 343, 0, 0, 0, 22, 0, 0, 0, 0, 333, + /* 1800 */ 0, 382, 22, 384, 48, 22, 48, 0, 59, 343, + /* 1810 */ 0, 35, 0, 0, 59, 333, 0, 370, 44, 14, + /* 1820 */ 47, 59, 0, 0, 0, 343, 39, 0, 39, 382, + /* 1830 */ 42, 384, 0, 39, 415, 177, 370, 418, 0, 0, + /* 1840 */ 421, 422, 423, 424, 425, 426, 47, 428, 382, 47, + /* 1850 */ 384, 40, 370, 0, 435, 0, 66, 375, 439, 440, + /* 1860 */ 35, 0, 415, 49, 382, 418, 384, 39, 421, 422, + /* 1870 */ 423, 424, 425, 426, 39, 428, 333, 35, 49, 0, + /* 1880 */ 35, 415, 49, 39, 418, 0, 343, 421, 422, 423, + /* 1890 */ 424, 425, 426, 35, 428, 49, 430, 415, 1, 333, + /* 1900 */ 418, 39, 0, 421, 422, 423, 424, 425, 426, 343, + /* 1910 */ 428, 464, 0, 370, 0, 0, 19, 109, 375, 35, + /* 1920 */ 22, 0, 107, 35, 35, 382, 35, 384, 35, 35, + /* 1930 */ 33, 35, 22, 0, 35, 22, 370, 51, 35, 44, + /* 1940 */ 35, 375, 35, 0, 44, 22, 49, 0, 382, 22, + /* 1950 */ 384, 35, 55, 56, 57, 58, 59, 35, 415, 0, + /* 1960 */ 0, 418, 0, 35, 421, 422, 423, 424, 425, 426, + /* 1970 */ 22, 428, 20, 35, 35, 35, 101, 100, 0, 35, + /* 1980 */ 100, 415, 0, 22, 418, 168, 22, 421, 422, 423, + /* 1990 */ 424, 425, 426, 333, 428, 189, 99, 0, 168, 102, + /* 2000 */ 0, 170, 193, 343, 168, 3, 100, 44, 256, 175, + /* 2010 */ 101, 100, 44, 48, 48, 98, 96, 44, 44, 101, + /* 2020 */ 101, 44, 47, 47, 100, 333, 100, 256, 3, 100, + /* 2030 */ 370, 134, 101, 101, 100, 343, 101, 44, 35, 47, + /* 2040 */ 35, 35, 382, 333, 384, 35, 35, 35, 47, 0, + /* 2050 */ 101, 101, 44, 343, 0, 0, 0, 256, 100, 39, + /* 2060 */ 47, 171, 370, 0, 110, 39, 169, 100, 250, 47, + /* 2070 */ 101, 174, 101, 169, 382, 415, 384, 44, 418, 100, + /* 2080 */ 370, 421, 422, 423, 424, 425, 426, 100, 428, 100, + /* 2090 */ 333, 194, 382, 237, 384, 100, 98, 98, 2, 22, + /* 2100 */ 343, 22, 215, 35, 47, 47, 35, 415, 101, 100, + /* 2110 */ 418, 35, 122, 421, 422, 423, 424, 425, 426, 100, + /* 2120 */ 428, 35, 101, 100, 100, 415, 111, 370, 418, 101, + /* 2130 */ 100, 421, 422, 423, 424, 425, 426, 333, 428, 382, + /* 2140 */ 101, 384, 217, 100, 35, 101, 100, 343, 101, 101, + /* 2150 */ 100, 100, 35, 101, 101, 44, 122, 122, 122, 333, + /* 2160 */ 100, 100, 100, 35, 100, 100, 22, 66, 65, 343, + /* 2170 */ 35, 35, 415, 44, 370, 418, 35, 35, 421, 422, + /* 2180 */ 423, 424, 425, 426, 333, 428, 382, 35, 384, 35, + /* 2190 */ 35, 35, 72, 94, 343, 35, 370, 35, 35, 22, + /* 2200 */ 35, 35, 35, 72, 35, 35, 333, 35, 382, 35, + /* 2210 */ 384, 35, 22, 35, 0, 35, 343, 49, 39, 415, + /* 2220 */ 0, 370, 418, 35, 49, 421, 422, 423, 424, 425, + /* 2230 */ 426, 39, 428, 382, 0, 384, 35, 39, 49, 0, + /* 2240 */ 35, 415, 49, 370, 418, 39, 0, 421, 422, 423, + /* 2250 */ 424, 425, 426, 35, 428, 382, 35, 384, 22, 21, + /* 2260 */ 476, 476, 22, 22, 21, 20, 415, 0, 476, 418, + /* 2270 */ 333, 476, 421, 422, 423, 424, 425, 426, 476, 428, + /* 2280 */ 343, 476, 476, 476, 476, 476, 476, 476, 415, 476, + /* 2290 */ 333, 418, 476, 476, 421, 422, 423, 424, 425, 426, + /* 2300 */ 343, 428, 476, 476, 476, 333, 476, 370, 476, 476, + /* 2310 */ 476, 476, 476, 476, 476, 343, 476, 476, 476, 382, + /* 2320 */ 476, 384, 476, 476, 476, 476, 476, 370, 476, 476, + /* 2330 */ 476, 476, 476, 476, 476, 476, 476, 333, 476, 382, + /* 2340 */ 476, 384, 370, 476, 476, 476, 476, 343, 476, 476, + /* 2350 */ 476, 476, 415, 476, 382, 418, 384, 476, 421, 422, + /* 2360 */ 423, 424, 425, 426, 476, 428, 476, 476, 476, 476, + /* 2370 */ 476, 476, 415, 476, 370, 418, 476, 476, 421, 422, + /* 2380 */ 423, 424, 425, 426, 476, 428, 382, 415, 384, 476, + /* 2390 */ 418, 476, 476, 421, 422, 423, 424, 425, 426, 476, + /* 2400 */ 428, 476, 476, 476, 476, 333, 476, 476, 476, 476, + /* 2410 */ 476, 476, 476, 476, 476, 343, 476, 476, 476, 415, + /* 2420 */ 476, 476, 418, 476, 333, 421, 422, 423, 424, 425, + /* 2430 */ 426, 476, 428, 476, 343, 476, 476, 476, 476, 476, + /* 2440 */ 476, 476, 370, 476, 476, 476, 476, 476, 476, 476, + /* 2450 */ 476, 476, 333, 476, 382, 476, 384, 476, 476, 476, + /* 2460 */ 476, 370, 343, 476, 476, 476, 476, 476, 476, 476, + /* 2470 */ 476, 333, 476, 382, 476, 384, 476, 476, 476, 476, + /* 2480 */ 476, 343, 476, 476, 476, 476, 476, 415, 476, 370, + /* 2490 */ 418, 476, 476, 421, 422, 423, 424, 425, 426, 476, + /* 2500 */ 428, 382, 476, 384, 476, 476, 415, 476, 370, 418, + /* 2510 */ 476, 476, 421, 422, 423, 424, 425, 426, 333, 428, + /* 2520 */ 382, 476, 384, 476, 476, 476, 476, 476, 343, 476, + /* 2530 */ 476, 476, 476, 476, 415, 476, 476, 418, 476, 476, + /* 2540 */ 421, 422, 423, 424, 425, 426, 476, 428, 476, 476, + /* 2550 */ 476, 476, 476, 415, 476, 370, 418, 476, 476, 421, + /* 2560 */ 422, 423, 424, 425, 426, 476, 428, 382, 476, 384, + /* 2570 */ 476, 476, 476, 476, 476, 333, 476, 476, 476, 476, + /* 2580 */ 476, 476, 476, 476, 476, 343, 476, 476, 476, 476, + /* 2590 */ 476, 333, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2600 */ 415, 343, 476, 418, 476, 476, 421, 422, 423, 424, + /* 2610 */ 425, 426, 370, 428, 476, 476, 476, 476, 476, 476, + /* 2620 */ 476, 476, 476, 476, 382, 476, 384, 476, 370, 476, + /* 2630 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2640 */ 382, 333, 384, 476, 476, 476, 476, 476, 476, 476, + /* 2650 */ 476, 343, 476, 476, 476, 476, 476, 415, 476, 476, + /* 2660 */ 418, 333, 476, 421, 422, 423, 424, 425, 426, 476, + /* 2670 */ 428, 343, 476, 415, 476, 476, 418, 476, 370, 421, + /* 2680 */ 422, 423, 424, 425, 426, 476, 428, 476, 476, 476, + /* 2690 */ 382, 476, 384, 476, 476, 476, 476, 476, 370, 476, + /* 2700 */ 476, 476, 476, 476, 476, 476, 476, 476, 333, 476, + /* 2710 */ 382, 476, 384, 476, 476, 476, 476, 476, 343, 476, + /* 2720 */ 476, 476, 476, 415, 476, 476, 418, 476, 476, 421, + /* 2730 */ 422, 423, 424, 425, 426, 476, 428, 476, 476, 476, + /* 2740 */ 476, 476, 33, 415, 476, 370, 418, 476, 476, 421, + /* 2750 */ 422, 423, 424, 425, 426, 476, 428, 382, 49, 384, + /* 2760 */ 476, 476, 476, 476, 55, 56, 57, 58, 59, 476, + /* 2770 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2780 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2790 */ 415, 476, 476, 418, 476, 476, 421, 422, 423, 424, + /* 2800 */ 425, 426, 476, 428, 476, 476, 476, 476, 99, 476, + /* 2810 */ 476, 102, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2820 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2830 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2840 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2850 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, /* 2860 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, - /* 2870 */ 476, 476, 476, 476, 476, 414, 476, 476, 476, 418, - /* 2880 */ 476, 476, 421, 422, 423, 424, 425, 426, 476, 428, - /* 2890 */ 414, 476, 476, 476, 418, 476, 476, 421, 422, 423, - /* 2900 */ 424, 425, 426, 476, 428, + /* 2870 */ 476, 476, 476, 476, 476, 476, 476, 476, 169, 170, + /* 2880 */ 476, 476, 476, 174, 476, 176, 476, 476, 476, 476, + /* 2890 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2900 */ 476, 476, 476, 194, 476, 476, 476, 476, 476, 476, + /* 2910 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2920 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2930 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2940 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2950 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2960 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2970 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2980 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 2990 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3000 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3010 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3020 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3030 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3040 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3050 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3060 */ 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, + /* 3070 */ 476, 476, 476, 330, 330, 330, 330, 330, 330, 330, + /* 3080 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3090 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3100 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3110 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3120 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3130 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3140 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3150 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3160 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3170 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3180 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3190 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3200 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3210 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3220 */ 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + /* 3230 */ 330, 330, 330, 330, }; #define YY_SHIFT_COUNT (761) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (2182) +#define YY_SHIFT_MAX (2709) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 550, 0, 224, 0, 449, 449, 449, 449, 449, 449, /* 10 */ 449, 449, 449, 449, 449, 449, 673, 897, 897, 1121, /* 20 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, /* 30 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, - /* 40 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 457, - /* 50 */ 492, 142, 145, 147, 107, 173, 107, 145, 145, 1347, - /* 60 */ 1347, 1347, 107, 1347, 1347, 501, 107, 18, 447, 47, - /* 70 */ 47, 447, 235, 235, 3, 286, 7, 7, 47, 47, - /* 80 */ 47, 47, 47, 47, 47, 51, 47, 47, 132, 18, - /* 90 */ 47, 47, 228, 47, 18, 47, 51, 47, 51, 18, - /* 100 */ 47, 47, 18, 47, 18, 18, 18, 47, 339, 223, - /* 110 */ 189, 189, 333, 114, 443, 443, 443, 443, 443, 443, + /* 40 */ 897, 897, 897, 897, 897, 897, 897, 897, 897, 148, + /* 50 */ 368, 93, 64, 140, 147, 322, 147, 64, 64, 1346, + /* 60 */ 1346, 1346, 147, 1346, 1346, 314, 147, 76, 369, 111, + /* 70 */ 111, 369, 656, 656, 18, 327, 7, 7, 111, 111, + /* 80 */ 111, 111, 111, 111, 111, 145, 111, 111, 248, 76, + /* 90 */ 111, 111, 363, 111, 76, 111, 145, 111, 145, 76, + /* 100 */ 111, 111, 76, 111, 76, 76, 76, 111, 343, 223, + /* 110 */ 189, 189, 405, 114, 443, 443, 443, 443, 443, 443, /* 120 */ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, - /* 130 */ 443, 443, 443, 843, 325, 3, 286, 392, 220, 220, - /* 140 */ 220, 417, 369, 369, 392, 344, 344, 344, 132, 365, - /* 150 */ 297, 18, 439, 18, 439, 439, 503, 558, 35, 35, - /* 160 */ 35, 35, 35, 35, 35, 35, 2060, 217, 288, 483, - /* 170 */ 522, 260, 313, 243, 384, 940, 576, 484, 890, 751, - /* 180 */ 528, 810, 824, 60, 974, 824, 1065, 791, 275, 1124, - /* 190 */ 1336, 1204, 1353, 1378, 1353, 1236, 1384, 1384, 1353, 1236, - /* 200 */ 1236, 1315, 1324, 1384, 1329, 1384, 1384, 1384, 1411, 1386, - /* 210 */ 1411, 1386, 1418, 132, 1421, 132, 1426, 1430, 132, 1426, - /* 220 */ 132, 132, 132, 1384, 132, 1413, 1413, 1411, 18, 18, - /* 230 */ 18, 18, 18, 18, 18, 18, 18, 18, 18, 1384, - /* 240 */ 1411, 439, 439, 439, 1292, 1398, 1418, 339, 1325, 1323, - /* 250 */ 1421, 339, 1330, 1384, 1378, 1378, 439, 1262, 1266, 439, - /* 260 */ 1262, 1266, 439, 439, 18, 1253, 1355, 1262, 1271, 1273, - /* 270 */ 1293, 1124, 1283, 1277, 1276, 1318, 344, 1550, 1384, 1426, - /* 280 */ 339, 339, 1566, 1266, 439, 439, 439, 439, 439, 1266, - /* 290 */ 439, 1427, 339, 503, 339, 344, 1504, 1508, 439, 558, - /* 300 */ 1384, 339, 1576, 1411, 2905, 2905, 2905, 2905, 2905, 2905, - /* 310 */ 2905, 2905, 2905, 34, 430, 15, 590, 734, 16, 839, - /* 320 */ 79, 709, 792, 566, 856, 1023, 1023, 1023, 1023, 1023, - /* 330 */ 1023, 1023, 1023, 1023, 1167, 743, 253, 253, 402, 57, - /* 340 */ 758, 774, 949, 1067, 800, 980, 64, 64, 959, 1007, - /* 350 */ 387, 959, 959, 959, 1149, 641, 1116, 1140, 1147, 1070, - /* 360 */ 1168, 1078, 1119, 1141, 1164, 532, 1190, 1207, 1250, 1251, - /* 370 */ 990, 1189, 1212, 868, 1216, 1231, 1233, 943, 1004, 1117, - /* 380 */ 1153, 1261, 1264, 1267, 1270, 1272, 1274, 1302, 1289, 1196, - /* 390 */ 1206, 987, 1291, 1238, 1286, 1317, 1320, 1322, 1326, 1328, - /* 400 */ 190, 1248, 1361, 1256, 1331, 1614, 1620, 1624, 1590, 1633, - /* 410 */ 1599, 1428, 1600, 1602, 1604, 1432, 1644, 1607, 1610, 1438, - /* 420 */ 1647, 1440, 1649, 1615, 1651, 1630, 1653, 1621, 1460, 1469, - /* 430 */ 1473, 1660, 1667, 1669, 1488, 1490, 1672, 1689, 1629, 1690, - /* 440 */ 1691, 1692, 1652, 1696, 1697, 1698, 1702, 1703, 1704, 1705, - /* 450 */ 1706, 1552, 1673, 1709, 1555, 1712, 1714, 1715, 1716, 1717, - /* 460 */ 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1726, 1728, 1729, - /* 470 */ 1730, 1693, 1731, 1732, 1733, 1734, 1736, 1738, 1725, 1739, - /* 480 */ 1740, 1741, 1603, 1743, 1744, 1735, 1700, 1737, 1707, 1745, - /* 490 */ 1687, 1742, 1750, 1694, 1752, 1695, 1756, 1760, 1753, 1746, - /* 500 */ 1727, 1751, 1755, 1747, 1757, 1773, 1759, 1748, 1774, 1775, - /* 510 */ 1776, 1758, 1586, 1764, 1780, 1781, 1749, 1800, 1805, 1771, - /* 520 */ 1761, 1770, 1812, 1778, 1767, 1779, 1817, 1784, 1772, 1783, - /* 530 */ 1820, 1788, 1782, 1786, 1827, 1829, 1830, 1832, 1766, 1754, - /* 540 */ 1798, 1813, 1836, 1803, 1804, 1806, 1807, 1808, 1809, 1810, - /* 550 */ 1796, 1802, 1815, 1818, 1826, 1819, 1852, 1833, 1856, 1840, - /* 560 */ 1814, 1858, 1842, 1841, 1877, 1843, 1879, 1846, 1887, 1866, - /* 570 */ 1878, 1864, 1865, 1867, 1821, 1801, 1904, 1762, 1811, 1713, - /* 580 */ 1872, 1896, 1921, 1765, 1901, 1777, 1789, 1924, 1925, 1785, - /* 590 */ 1768, 1923, 1883, 1675, 1834, 1828, 1844, 1885, 1849, 1893, - /* 600 */ 1853, 1847, 1906, 1908, 1855, 1857, 1861, 1862, 1863, 1919, - /* 610 */ 1918, 1922, 1868, 1926, 1710, 1870, 1871, 1964, 1929, 1791, - /* 620 */ 1939, 1941, 1942, 1943, 1944, 1945, 1880, 1881, 1937, 1790, - /* 630 */ 1946, 1947, 1983, 1986, 1988, 1989, 1892, 1954, 1751, 1950, - /* 640 */ 1907, 1903, 1909, 1912, 1913, 1837, 1914, 2015, 1977, 1848, - /* 650 */ 1927, 1910, 1751, 1971, 1978, 1928, 1792, 1930, 2019, 2002, - /* 660 */ 1816, 1933, 1934, 1938, 1935, 1948, 1940, 1987, 1949, 1951, - /* 670 */ 1992, 1952, 2008, 1825, 1955, 1932, 1953, 2017, 2023, 1962, - /* 680 */ 1968, 2036, 1973, 1974, 2039, 1976, 1979, 2043, 1982, 1991, - /* 690 */ 2048, 1995, 1981, 1985, 1990, 1999, 2005, 2064, 2010, 2076, - /* 700 */ 2013, 2064, 2064, 2092, 2056, 2058, 2089, 2090, 2091, 2093, - /* 710 */ 2094, 2096, 2098, 2099, 2100, 2101, 2055, 2044, 2095, 2102, - /* 720 */ 2105, 2106, 2120, 2108, 2110, 2112, 2077, 1796, 2113, 1802, - /* 730 */ 2115, 2116, 2118, 2119, 2130, 2122, 2155, 2123, 2111, 2124, - /* 740 */ 2161, 2129, 2125, 2126, 2166, 2132, 2127, 2134, 2169, 2136, - /* 750 */ 2131, 2139, 2172, 2140, 2144, 2182, 2168, 2171, 2173, 2174, - /* 760 */ 2176, 2178, + /* 130 */ 443, 443, 443, 672, 483, 18, 327, 293, 253, 253, + /* 140 */ 253, 217, 622, 622, 293, 523, 523, 523, 248, 460, + /* 150 */ 354, 76, 585, 76, 585, 585, 604, 670, 35, 35, + /* 160 */ 35, 35, 35, 35, 35, 35, 1897, 636, 15, 167, + /* 170 */ 16, 297, 515, 252, 454, 454, 373, 842, 389, 484, + /* 180 */ 1058, 1163, 862, 892, 922, 983, 45, 922, 878, 727, + /* 190 */ 948, 1136, 1347, 1214, 1358, 1382, 1358, 1239, 1390, 1390, + /* 200 */ 1358, 1239, 1239, 1313, 1329, 1390, 1338, 1390, 1390, 1390, + /* 210 */ 1435, 1408, 1435, 1408, 1442, 248, 1457, 248, 1460, 1471, + /* 220 */ 248, 1460, 248, 248, 248, 1390, 248, 1440, 1440, 1435, + /* 230 */ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + /* 240 */ 76, 1390, 1435, 585, 585, 585, 1311, 1427, 1442, 343, + /* 250 */ 1356, 1359, 1457, 343, 1362, 1390, 1382, 1382, 585, 1298, + /* 260 */ 1307, 585, 1298, 1307, 585, 585, 76, 1314, 1407, 1298, + /* 270 */ 1317, 1319, 1335, 1136, 1315, 1323, 1327, 1345, 523, 1579, + /* 280 */ 1390, 1460, 343, 343, 1587, 1307, 585, 585, 585, 585, + /* 290 */ 585, 1307, 585, 1445, 343, 604, 343, 523, 1528, 1529, + /* 300 */ 585, 670, 1390, 343, 1600, 1435, 2904, 2904, 2904, 2904, + /* 310 */ 2904, 2904, 2904, 2904, 2904, 34, 2709, 238, 590, 198, + /* 320 */ 539, 973, 794, 486, 1064, 925, 1030, 48, 48, 48, + /* 330 */ 48, 48, 48, 48, 48, 48, 831, 612, 65, 65, + /* 340 */ 549, 737, 700, 891, 262, 448, 1025, 717, 531, 531, + /* 350 */ 962, 751, 906, 962, 962, 962, 1202, 1015, 513, 1219, + /* 360 */ 1008, 1101, 1194, 1104, 1113, 1149, 1159, 381, 1229, 1248, + /* 370 */ 1259, 1267, 1069, 1196, 1221, 1217, 1231, 1233, 1234, 1143, + /* 380 */ 836, 1152, 1165, 1260, 1262, 1273, 1276, 1277, 1318, 1281, + /* 390 */ 1283, 1208, 1284, 1238, 1320, 1321, 1326, 1328, 1336, 1343, + /* 400 */ 671, 1265, 1266, 1255, 1289, 1325, 1366, 1666, 1667, 1669, + /* 410 */ 1631, 1674, 1640, 1468, 1642, 1643, 1644, 1472, 1682, 1648, + /* 420 */ 1649, 1477, 1687, 1480, 1689, 1655, 1699, 1670, 1693, 1659, + /* 430 */ 1500, 1508, 1511, 1701, 1702, 1704, 1523, 1526, 1708, 1715, + /* 440 */ 1672, 1717, 1720, 1722, 1683, 1724, 1726, 1729, 1733, 1735, + /* 450 */ 1736, 1743, 1745, 1591, 1712, 1748, 1594, 1750, 1753, 1754, + /* 460 */ 1764, 1765, 1767, 1768, 1775, 1777, 1778, 1779, 1781, 1782, + /* 470 */ 1784, 1785, 1786, 1716, 1759, 1760, 1761, 1791, 1792, 1793, + /* 480 */ 1772, 1795, 1796, 1797, 1618, 1798, 1800, 1780, 1756, 1783, + /* 490 */ 1758, 1807, 1749, 1776, 1810, 1755, 1812, 1762, 1813, 1816, + /* 500 */ 1788, 1787, 1774, 1773, 1799, 1805, 1802, 1822, 1811, 1789, + /* 510 */ 1823, 1824, 1827, 1794, 1658, 1832, 1838, 1839, 1790, 1853, + /* 520 */ 1855, 1825, 1814, 1828, 1861, 1842, 1829, 1835, 1879, 1845, + /* 530 */ 1833, 1844, 1885, 1858, 1846, 1862, 1902, 1912, 1914, 1915, + /* 540 */ 1808, 1815, 1884, 1898, 1921, 1888, 1889, 1891, 1893, 1894, + /* 550 */ 1896, 1899, 1895, 1900, 1903, 1905, 1910, 1907, 1933, 1913, + /* 560 */ 1943, 1923, 1886, 1947, 1927, 1916, 1959, 1922, 1960, 1928, + /* 570 */ 1962, 1948, 1952, 1938, 1939, 1940, 1875, 1877, 1978, 1817, + /* 580 */ 1880, 1809, 1944, 1961, 1982, 1806, 1964, 1830, 1831, 1997, + /* 590 */ 2000, 1836, 1834, 2002, 1963, 1752, 1906, 1909, 1911, 1965, + /* 600 */ 1917, 1966, 1920, 1918, 1968, 1973, 1919, 1924, 1926, 1929, + /* 610 */ 1931, 1974, 1975, 1976, 1934, 1977, 1771, 1932, 1935, 2025, + /* 620 */ 1993, 1801, 2003, 2005, 2006, 2010, 2011, 2012, 1949, 1950, + /* 630 */ 1992, 1818, 2008, 2001, 2049, 2054, 2055, 2056, 1958, 2020, + /* 640 */ 1773, 2013, 1967, 1969, 1971, 1979, 1987, 1890, 1989, 2063, + /* 650 */ 2026, 1904, 1995, 1954, 1773, 2022, 2033, 1998, 1856, 1999, + /* 660 */ 2096, 2077, 1887, 2009, 2007, 2019, 2021, 2023, 2028, 2057, + /* 670 */ 2024, 2030, 2058, 2039, 2079, 1925, 2043, 2015, 2044, 2068, + /* 680 */ 2071, 2046, 2047, 2076, 2050, 2048, 2086, 2051, 2052, 2109, + /* 690 */ 2060, 2053, 2117, 2061, 1990, 2034, 2035, 2036, 2062, 2111, + /* 700 */ 2064, 2128, 2065, 2111, 2111, 2144, 2101, 2103, 2135, 2136, + /* 710 */ 2141, 2142, 2152, 2154, 2155, 2156, 2120, 2099, 2129, 2160, + /* 720 */ 2162, 2163, 2177, 2165, 2166, 2167, 2131, 1895, 2169, 1900, + /* 730 */ 2170, 2172, 2174, 2176, 2190, 2178, 2214, 2180, 2168, 2179, + /* 740 */ 2220, 2188, 2175, 2192, 2234, 2201, 2189, 2198, 2239, 2205, + /* 750 */ 2193, 2206, 2246, 2218, 2221, 2267, 2236, 2238, 2240, 2241, + /* 760 */ 2243, 2245, }; -#define YY_REDUCE_COUNT (312) -#define YY_REDUCE_MIN (-396) -#define YY_REDUCE_MAX (2476) +#define YY_REDUCE_COUNT (314) +#define YY_REDUCE_MIN (-397) +#define YY_REDUCE_MAX (2375) static const short yy_reduce_ofst[] = { - /* 0 */ -140, 137, -82, 358, 444, 578, 814, 841, 1034, 1064, - /* 10 */ 1132, 1240, 1260, 1344, 1368, 1445, 598, -333, 672, 1468, - /* 20 */ 901, 1491, 1514, 1577, 1642, 1663, 1676, 1763, 1787, 1850, - /* 30 */ 1874, 1920, 1936, 1996, 2020, 2047, 2066, 2117, 2133, 2163, - /* 40 */ 2184, 2230, 2290, 2303, 2354, 2400, 2415, 2461, 2476, 372, - /* 50 */ -195, -396, -265, 487, 595, 607, 701, 481, 761, -362, - /* 60 */ -355, 285, 749, 136, 612, -279, -55, 256, -346, -167, - /* 70 */ -5, -381, -334, -257, -205, -249, 45, 130, 300, 303, - /* 80 */ 356, 377, 409, 425, 432, 177, 469, 489, 252, -308, - /* 90 */ 521, 573, 170, 620, 172, 622, 261, 707, 396, 682, - /* 100 */ 739, 745, 278, 793, 715, 321, 781, 795, -266, 8, - /* 110 */ -350, -350, 115, -238, 161, 214, 257, 315, 374, 433, - /* 120 */ 445, 463, 585, 587, 617, 677, 681, 806, 807, 813, - /* 130 */ 819, 830, 832, -86, -289, -111, 23, 154, -289, 70, - /* 140 */ 188, -25, 480, 511, 380, 416, 498, 704, 381, -354, - /* 150 */ 426, 513, 690, 502, 733, 798, 808, 353, -369, -365, - /* 160 */ 324, 370, 458, 505, 686, 458, 764, 368, 621, 825, - /* 170 */ 753, 780, 906, 822, 917, 917, 946, 898, 954, 963, - /* 180 */ 930, 921, 871, 871, 891, 871, 916, 925, 917, 967, - /* 190 */ 971, 989, 1001, 1008, 1012, 1016, 1063, 1066, 1022, 1025, - /* 200 */ 1026, 1060, 1069, 1074, 1073, 1084, 1086, 1088, 1097, 1096, - /* 210 */ 1101, 1098, 1030, 1090, 1059, 1093, 1105, 1050, 1103, 1110, - /* 220 */ 1111, 1113, 1114, 1126, 1120, 1125, 1129, 1136, 1108, 1112, - /* 230 */ 1115, 1122, 1127, 1131, 1133, 1137, 1138, 1139, 1142, 1151, - /* 240 */ 1144, 1099, 1102, 1128, 1081, 1094, 1107, 1162, 1104, 1118, - /* 250 */ 1135, 1171, 1123, 1179, 1143, 1145, 1146, 1068, 1134, 1150, - /* 260 */ 1072, 1148, 1156, 1157, 917, 1080, 1082, 1085, 1092, 1091, - /* 270 */ 1106, 1152, 1076, 1095, 1130, 871, 1223, 1154, 1242, 1241, - /* 280 */ 1234, 1239, 1194, 1193, 1209, 1210, 1211, 1213, 1214, 1200, - /* 290 */ 1218, 1208, 1252, 1237, 1257, 1263, 1169, 1243, 1229, 1254, - /* 300 */ 1269, 1278, 1279, 1282, 1215, 1217, 1222, 1225, 1265, 1268, - /* 310 */ 1275, 1281, 1294, + /* 0 */ -156, 364, -82, 588, -20, 614, 804, 890, 1024, 1050, + /* 10 */ 1118, 1222, 1288, 1316, 1348, 1419, 174, -333, 154, 450, + /* 20 */ 674, 1447, 1097, 1482, 1466, 1543, 1566, 1660, 1692, 1710, + /* 30 */ 1757, 1804, 1826, 1851, 1873, 1937, 1957, 1972, 2004, 2072, + /* 40 */ 2091, 2119, 2138, 2185, 2242, 2258, 2308, 2328, 2375, 383, + /* 50 */ 270, -397, 83, -395, 371, 416, 554, 75, 501, 235, + /* 60 */ 786, 827, -139, 683, 834, -195, -165, -359, -80, -172, + /* 70 */ -13, -383, -254, -207, -213, 149, -52, 290, -152, -5, + /* 80 */ 263, 376, 407, 413, 453, 82, 508, 593, 462, 271, + /* 90 */ 610, 631, 275, 657, 374, 725, 301, 745, 372, -170, + /* 100 */ 748, 796, 399, 808, -83, 421, 605, 810, 260, -319, + /* 110 */ -338, -338, -293, -327, 94, 237, 433, 502, 534, 669, + /* 120 */ 693, 712, 802, 807, 809, 813, 815, 833, 849, 854, + /* 130 */ 865, 867, 868, -275, -251, -131, 355, 467, -251, 437, + /* 140 */ 559, 452, 445, 479, 726, -334, -85, 719, 681, 168, + /* 150 */ 736, 268, 134, 805, 797, 799, 742, 850, -369, 387, + /* 160 */ 499, 580, 713, 832, 913, 713, 637, 927, 485, 899, + /* 170 */ 818, 835, 949, 839, 941, 945, 940, 940, 980, 939, + /* 180 */ 1032, 1028, 994, 984, 933, 933, 919, 933, 947, 938, + /* 190 */ 940, 974, 976, 996, 1012, 1011, 1018, 1022, 1070, 1071, + /* 200 */ 1026, 1027, 1037, 1063, 1073, 1089, 1083, 1094, 1096, 1099, + /* 210 */ 1123, 1127, 1125, 1130, 1060, 1132, 1100, 1137, 1142, 1090, + /* 220 */ 1144, 1151, 1146, 1147, 1148, 1157, 1153, 1154, 1158, 1169, + /* 230 */ 1138, 1139, 1140, 1141, 1156, 1160, 1161, 1167, 1168, 1175, + /* 240 */ 1177, 1164, 1172, 1131, 1134, 1135, 1110, 1116, 1119, 1187, + /* 250 */ 1145, 1155, 1176, 1201, 1162, 1224, 1179, 1180, 1174, 1108, + /* 260 */ 1171, 1191, 1126, 1184, 1203, 1204, 940, 1128, 1133, 1166, + /* 270 */ 1150, 1170, 1173, 1178, 1122, 1182, 1185, 933, 1251, 1181, + /* 280 */ 1261, 1258, 1263, 1264, 1213, 1212, 1228, 1232, 1235, 1236, + /* 290 */ 1237, 1216, 1241, 1226, 1268, 1269, 1279, 1282, 1192, 1278, + /* 300 */ 1250, 1274, 1291, 1290, 1303, 1306, 1252, 1243, 1244, 1270, + /* 310 */ 1296, 1299, 1300, 1322, 1334, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, @@ -941,28 +975,28 @@ static const YYACTIONTYPE yy_default[] = { /* 140 */ 2218, 1799, 2178, 2178, 1719, 1719, 1719, 1719, 1801, 2050, /* 150 */ 1719, 1719, 1719, 1719, 1719, 1719, 1920, 1719, 1719, 1719, /* 160 */ 1719, 1719, 1944, 1719, 1719, 1719, 2044, 1719, 1719, 2243, - /* 170 */ 2299, 1719, 1719, 2246, 1719, 1719, 1719, 1997, 1719, 1719, - /* 180 */ 1874, 2233, 2210, 2224, 2283, 2211, 2208, 2227, 1719, 2237, - /* 190 */ 1719, 2031, 1990, 1719, 1990, 1987, 1719, 1719, 1990, 1987, - /* 200 */ 1987, 1863, 1859, 1719, 1857, 1719, 1719, 1719, 1719, 1766, - /* 210 */ 1719, 1766, 1719, 1801, 1719, 1801, 1719, 1719, 1801, 1719, - /* 220 */ 1801, 1801, 1801, 1719, 1801, 1779, 1779, 1719, 1719, 1719, + /* 170 */ 2299, 1719, 1719, 2246, 1719, 1719, 1719, 1719, 1719, 1997, + /* 180 */ 1719, 1719, 1874, 2233, 2210, 2224, 2283, 2211, 2208, 2227, + /* 190 */ 1719, 2237, 1719, 2031, 1990, 1719, 1990, 1987, 1719, 1719, + /* 200 */ 1990, 1987, 1987, 1863, 1859, 1719, 1857, 1719, 1719, 1719, + /* 210 */ 1719, 1766, 1719, 1766, 1719, 1801, 1719, 1801, 1719, 1719, + /* 220 */ 1801, 1719, 1801, 1801, 1801, 1719, 1801, 1779, 1779, 1719, /* 230 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 240 */ 1719, 1719, 1719, 1719, 2062, 2048, 1719, 1799, 2042, 2040, - /* 250 */ 1719, 1799, 2038, 1719, 1719, 1719, 1719, 2254, 2252, 1719, - /* 260 */ 2254, 2252, 1719, 1719, 1719, 2268, 2264, 2254, 2272, 2270, - /* 270 */ 2239, 2237, 2302, 2289, 2285, 2224, 1719, 1719, 1719, 1719, - /* 280 */ 1799, 1799, 1719, 2252, 1719, 1719, 1719, 1719, 1719, 2252, - /* 290 */ 1719, 1719, 1799, 1719, 1799, 1719, 1719, 1890, 1719, 1719, - /* 300 */ 1719, 1799, 1751, 1719, 2033, 2053, 2015, 2015, 1923, 1923, - /* 310 */ 1923, 1802, 1724, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 320 */ 1719, 1719, 1719, 1719, 1719, 2267, 2266, 2133, 1719, 2182, - /* 330 */ 2181, 2180, 2171, 2132, 1886, 1719, 2131, 2130, 1719, 1719, - /* 340 */ 1719, 1719, 1719, 1719, 1719, 1719, 2006, 2005, 2124, 1719, - /* 350 */ 1719, 2125, 2123, 2122, 1719, 1719, 1719, 1719, 1719, 1719, + /* 240 */ 1719, 1719, 1719, 1719, 1719, 1719, 2062, 2048, 1719, 1799, + /* 250 */ 2042, 2040, 1719, 1799, 2038, 1719, 1719, 1719, 1719, 2254, + /* 260 */ 2252, 1719, 2254, 2252, 1719, 1719, 1719, 2268, 2264, 2254, + /* 270 */ 2272, 2270, 2239, 2237, 2302, 2289, 2285, 2224, 1719, 1719, + /* 280 */ 1719, 1719, 1799, 1799, 1719, 2252, 1719, 1719, 1719, 1719, + /* 290 */ 1719, 2252, 1719, 1719, 1799, 1719, 1799, 1719, 1719, 1890, + /* 300 */ 1719, 1719, 1719, 1799, 1751, 1719, 2033, 2053, 2015, 2015, + /* 310 */ 1923, 1923, 1923, 1802, 1724, 1719, 1719, 1719, 1719, 1719, + /* 320 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2267, 2266, 2133, + /* 330 */ 1719, 2182, 2181, 2180, 2171, 2132, 1886, 1719, 2131, 2130, + /* 340 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2006, 2005, + /* 350 */ 2124, 1719, 1719, 2125, 2123, 2122, 1719, 1719, 1719, 1719, /* 360 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 370 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2286, 2290, - /* 380 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2207, 1719, 1719, + /* 370 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 380 */ 2286, 2290, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2207, /* 390 */ 1719, 1719, 1719, 2106, 1719, 1719, 1719, 1719, 1719, 1719, /* 400 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 410 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, @@ -974,27 +1008,27 @@ static const YYACTIONTYPE yy_default[] = { /* 470 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 480 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 490 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 500 */ 1756, 2111, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 500 */ 1719, 1719, 1756, 2111, 1719, 1719, 1719, 1719, 1719, 1719, /* 510 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 520 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 530 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, /* 540 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 550 */ 1840, 1839, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 550 */ 1719, 1719, 1840, 1839, 1719, 1719, 1719, 1719, 1719, 1719, /* 560 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 570 */ 1719, 1719, 1719, 1719, 2115, 1719, 1719, 1719, 1719, 1719, + /* 570 */ 1719, 1719, 1719, 1719, 1719, 1719, 2115, 1719, 1719, 1719, /* 580 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 590 */ 1719, 2282, 2240, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 590 */ 1719, 1719, 1719, 2282, 2240, 1719, 1719, 1719, 1719, 1719, /* 600 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 610 */ 1719, 2106, 1719, 2265, 1719, 1719, 2280, 1719, 2284, 1719, - /* 620 */ 1719, 1719, 1719, 1719, 1719, 1719, 2217, 2213, 1719, 1719, - /* 630 */ 2209, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2114, 1719, - /* 640 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 650 */ 1719, 1719, 2105, 1719, 2168, 1719, 1719, 1719, 2202, 1719, - /* 660 */ 1719, 2153, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 670 */ 1719, 2115, 1719, 2118, 1719, 1719, 1719, 1719, 1719, 1917, - /* 680 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - /* 690 */ 1719, 1719, 1902, 1900, 1899, 1898, 1719, 1930, 1719, 1719, - /* 700 */ 1719, 1926, 1925, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 610 */ 1719, 1719, 1719, 2106, 1719, 2265, 1719, 1719, 2280, 1719, + /* 620 */ 2284, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 2217, 2213, + /* 630 */ 1719, 1719, 2209, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 640 */ 2114, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 650 */ 1719, 1719, 1719, 1719, 2105, 1719, 2168, 1719, 1719, 1719, + /* 660 */ 2202, 1719, 1719, 2153, 1719, 1719, 1719, 1719, 1719, 1719, + /* 670 */ 1719, 1719, 1719, 2115, 1719, 2118, 1719, 1719, 1719, 1719, + /* 680 */ 1719, 1917, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, + /* 690 */ 1719, 1719, 1719, 1719, 1902, 1900, 1899, 1898, 1719, 1930, + /* 700 */ 1719, 1719, 1719, 1926, 1925, 1719, 1719, 1719, 1719, 1719, /* 710 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1820, 1719, /* 720 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1812, 1719, 1811, /* 730 */ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, @@ -1795,66 +1829,66 @@ static const char *const yyTokenName[] = { /* 355 */ "integer_list", /* 356 */ "variable_list", /* 357 */ "retention_list", - /* 358 */ "alter_db_option", - /* 359 */ "retention", - /* 360 */ "full_table_name", - /* 361 */ "column_def_list", - /* 362 */ "tags_def_opt", - /* 363 */ "table_options", - /* 364 */ "multi_create_clause", - /* 365 */ "tags_def", - /* 366 */ "multi_drop_clause", - /* 367 */ "alter_table_clause", - /* 368 */ "alter_table_options", - /* 369 */ "column_name", - /* 370 */ "type_name", - /* 371 */ "signed_literal", - /* 372 */ "create_subtable_clause", - /* 373 */ "specific_cols_opt", - /* 374 */ "expression_list", - /* 375 */ "drop_table_clause", - /* 376 */ "col_name_list", - /* 377 */ "column_def", - /* 378 */ "duration_list", - /* 379 */ "rollup_func_list", - /* 380 */ "alter_table_option", - /* 381 */ "duration_literal", - /* 382 */ "rollup_func_name", - /* 383 */ "function_name", - /* 384 */ "col_name", - /* 385 */ "db_name_cond_opt", - /* 386 */ "like_pattern_opt", - /* 387 */ "table_name_cond", - /* 388 */ "from_db_opt", - /* 389 */ "tag_list_opt", - /* 390 */ "tag_item", - /* 391 */ "column_alias", - /* 392 */ "full_index_name", - /* 393 */ "index_options", - /* 394 */ "index_name", - /* 395 */ "func_list", - /* 396 */ "sliding_opt", - /* 397 */ "sma_stream_opt", - /* 398 */ "func", - /* 399 */ "sma_func_name", - /* 400 */ "query_or_subquery", - /* 401 */ "cgroup_name", - /* 402 */ "analyze_opt", - /* 403 */ "explain_options", - /* 404 */ "insert_query", - /* 405 */ "or_replace_opt", - /* 406 */ "agg_func_opt", - /* 407 */ "bufsize_opt", - /* 408 */ "language_opt", - /* 409 */ "stream_name", - /* 410 */ "stream_options", - /* 411 */ "col_list_opt", - /* 412 */ "tag_def_or_ref_opt", - /* 413 */ "subtable_opt", - /* 414 */ "expression", - /* 415 */ "dnode_list", - /* 416 */ "where_clause_opt", - /* 417 */ "signed", + /* 358 */ "signed", + /* 359 */ "alter_db_option", + /* 360 */ "retention", + /* 361 */ "full_table_name", + /* 362 */ "column_def_list", + /* 363 */ "tags_def_opt", + /* 364 */ "table_options", + /* 365 */ "multi_create_clause", + /* 366 */ "tags_def", + /* 367 */ "multi_drop_clause", + /* 368 */ "alter_table_clause", + /* 369 */ "alter_table_options", + /* 370 */ "column_name", + /* 371 */ "type_name", + /* 372 */ "signed_literal", + /* 373 */ "create_subtable_clause", + /* 374 */ "specific_cols_opt", + /* 375 */ "expression_list", + /* 376 */ "drop_table_clause", + /* 377 */ "col_name_list", + /* 378 */ "column_def", + /* 379 */ "duration_list", + /* 380 */ "rollup_func_list", + /* 381 */ "alter_table_option", + /* 382 */ "duration_literal", + /* 383 */ "rollup_func_name", + /* 384 */ "function_name", + /* 385 */ "col_name", + /* 386 */ "db_name_cond_opt", + /* 387 */ "like_pattern_opt", + /* 388 */ "table_name_cond", + /* 389 */ "from_db_opt", + /* 390 */ "tag_list_opt", + /* 391 */ "tag_item", + /* 392 */ "column_alias", + /* 393 */ "full_index_name", + /* 394 */ "index_options", + /* 395 */ "index_name", + /* 396 */ "func_list", + /* 397 */ "sliding_opt", + /* 398 */ "sma_stream_opt", + /* 399 */ "func", + /* 400 */ "sma_func_name", + /* 401 */ "query_or_subquery", + /* 402 */ "cgroup_name", + /* 403 */ "analyze_opt", + /* 404 */ "explain_options", + /* 405 */ "insert_query", + /* 406 */ "or_replace_opt", + /* 407 */ "agg_func_opt", + /* 408 */ "bufsize_opt", + /* 409 */ "language_opt", + /* 410 */ "stream_name", + /* 411 */ "stream_options", + /* 412 */ "col_list_opt", + /* 413 */ "tag_def_or_ref_opt", + /* 414 */ "subtable_opt", + /* 415 */ "expression", + /* 416 */ "dnode_list", + /* 417 */ "where_clause_opt", /* 418 */ "literal_func", /* 419 */ "literal_list", /* 420 */ "table_alias", @@ -2029,8 +2063,8 @@ static const char *const yyRuleName[] = { /* 106 */ "db_options ::= db_options WAL_ROLL_PERIOD NK_INTEGER", /* 107 */ "db_options ::= db_options WAL_SEGMENT_SIZE NK_INTEGER", /* 108 */ "db_options ::= db_options STT_TRIGGER NK_INTEGER", - /* 109 */ "db_options ::= db_options TABLE_PREFIX NK_INTEGER", - /* 110 */ "db_options ::= db_options TABLE_SUFFIX NK_INTEGER", + /* 109 */ "db_options ::= db_options TABLE_PREFIX signed", + /* 110 */ "db_options ::= db_options TABLE_SUFFIX signed", /* 111 */ "alter_db_options ::= alter_db_option", /* 112 */ "alter_db_options ::= alter_db_options alter_db_option", /* 113 */ "alter_db_option ::= BUFFER NK_INTEGER", @@ -2637,36 +2671,36 @@ static void yy_destructor( case 351: /* alter_db_options */ case 353: /* start_opt */ case 354: /* end_opt */ - case 359: /* retention */ - case 360: /* full_table_name */ - case 363: /* table_options */ - case 367: /* alter_table_clause */ - case 368: /* alter_table_options */ - case 371: /* signed_literal */ - case 372: /* create_subtable_clause */ - case 375: /* drop_table_clause */ - case 377: /* column_def */ - case 381: /* duration_literal */ - case 382: /* rollup_func_name */ - case 384: /* col_name */ - case 385: /* db_name_cond_opt */ - case 386: /* like_pattern_opt */ - case 387: /* table_name_cond */ - case 388: /* from_db_opt */ - case 390: /* tag_item */ - case 392: /* full_index_name */ - case 393: /* index_options */ - case 396: /* sliding_opt */ - case 397: /* sma_stream_opt */ - case 398: /* func */ - case 400: /* query_or_subquery */ - case 403: /* explain_options */ - case 404: /* insert_query */ - case 410: /* stream_options */ - case 413: /* subtable_opt */ - case 414: /* expression */ - case 416: /* where_clause_opt */ - case 417: /* signed */ + case 358: /* signed */ + case 360: /* retention */ + case 361: /* full_table_name */ + case 364: /* table_options */ + case 368: /* alter_table_clause */ + case 369: /* alter_table_options */ + case 372: /* signed_literal */ + case 373: /* create_subtable_clause */ + case 376: /* drop_table_clause */ + case 378: /* column_def */ + case 382: /* duration_literal */ + case 383: /* rollup_func_name */ + case 385: /* col_name */ + case 386: /* db_name_cond_opt */ + case 387: /* like_pattern_opt */ + case 388: /* table_name_cond */ + case 389: /* from_db_opt */ + case 391: /* tag_item */ + case 393: /* full_index_name */ + case 394: /* index_options */ + case 397: /* sliding_opt */ + case 398: /* sma_stream_opt */ + case 399: /* func */ + case 401: /* query_or_subquery */ + case 404: /* explain_options */ + case 405: /* insert_query */ + case 411: /* stream_options */ + case 414: /* subtable_opt */ + case 415: /* expression */ + case 417: /* where_clause_opt */ case 418: /* literal_func */ case 421: /* expr_or_subquery */ case 422: /* pseudo_column */ @@ -2711,7 +2745,7 @@ static void yy_destructor( case 332: /* alter_account_options */ case 334: /* alter_account_option */ case 352: /* speed_opt */ - case 407: /* bufsize_opt */ + case 408: /* bufsize_opt */ { } @@ -2721,14 +2755,14 @@ static void yy_destructor( case 343: /* table_name */ case 344: /* topic_name */ case 346: /* dnode_endpoint */ - case 369: /* column_name */ - case 383: /* function_name */ - case 391: /* column_alias */ - case 394: /* index_name */ - case 399: /* sma_func_name */ - case 401: /* cgroup_name */ - case 408: /* language_opt */ - case 409: /* stream_name */ + case 370: /* column_name */ + case 384: /* function_name */ + case 392: /* column_alias */ + case 395: /* index_name */ + case 400: /* sma_func_name */ + case 402: /* cgroup_name */ + case 409: /* language_opt */ + case 410: /* stream_name */ case 420: /* table_alias */ case 426: /* star_func */ case 428: /* noarg_func */ @@ -2757,9 +2791,9 @@ static void yy_destructor( case 347: /* force_opt */ case 348: /* not_exists_opt */ case 350: /* exists_opt */ - case 402: /* analyze_opt */ - case 405: /* or_replace_opt */ - case 406: /* agg_func_opt */ + case 403: /* analyze_opt */ + case 406: /* or_replace_opt */ + case 407: /* agg_func_opt */ case 451: /* set_quantifier_opt */ { @@ -2768,21 +2802,21 @@ static void yy_destructor( case 355: /* integer_list */ case 356: /* variable_list */ case 357: /* retention_list */ - case 361: /* column_def_list */ - case 362: /* tags_def_opt */ - case 364: /* multi_create_clause */ - case 365: /* tags_def */ - case 366: /* multi_drop_clause */ - case 373: /* specific_cols_opt */ - case 374: /* expression_list */ - case 376: /* col_name_list */ - case 378: /* duration_list */ - case 379: /* rollup_func_list */ - case 389: /* tag_list_opt */ - case 395: /* func_list */ - case 411: /* col_list_opt */ - case 412: /* tag_def_or_ref_opt */ - case 415: /* dnode_list */ + case 362: /* column_def_list */ + case 363: /* tags_def_opt */ + case 365: /* multi_create_clause */ + case 366: /* tags_def */ + case 367: /* multi_drop_clause */ + case 374: /* specific_cols_opt */ + case 375: /* expression_list */ + case 377: /* col_name_list */ + case 379: /* duration_list */ + case 380: /* rollup_func_list */ + case 390: /* tag_list_opt */ + case 396: /* func_list */ + case 412: /* col_list_opt */ + case 413: /* tag_def_or_ref_opt */ + case 416: /* dnode_list */ case 419: /* literal_list */ case 427: /* star_func_para_list */ case 429: /* other_para_list */ @@ -2798,13 +2832,13 @@ static void yy_destructor( nodesDestroyList((yypminor->yy432)); } break; - case 358: /* alter_db_option */ - case 380: /* alter_table_option */ + case 359: /* alter_db_option */ + case 381: /* alter_table_option */ { } break; - case 370: /* type_name */ + case 371: /* type_name */ { } @@ -2958,15 +2992,18 @@ static YYACTIONTYPE yy_find_shift_action( do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); - /* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */ + assert( i<=YY_ACTTAB_COUNT ); + assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; - if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){ + assert( i<(int)YY_NLOOKAHEAD ); + if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", @@ -2981,16 +3018,8 @@ static YYACTIONTYPE yy_find_shift_action( #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; - if( -#if YY_SHIFT_MIN+YYWILDCARD<0 - j>=0 && -#endif -#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT - j0 - ){ + assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) ); + if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", @@ -3004,6 +3033,7 @@ static YYACTIONTYPE yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ + assert( i>=0 && iyytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfo[yyruleno].nrhs; + yysize = yyRuleInfoNRhs[yyruleno]; if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", yyTracePrompt, - yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; @@ -4183,12 +4800,12 @@ static YYACTIONTYPE yy_reduce( { yylhsminor.yy448 = setDatabaseOption(pCxt, yymsp[-2].minor.yy448, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy448 = yylhsminor.yy448; break; - case 109: /* db_options ::= db_options TABLE_PREFIX NK_INTEGER */ -{ yylhsminor.yy448 = setDatabaseOption(pCxt, yymsp[-2].minor.yy448, DB_OPTION_TABLE_PREFIX, &yymsp[0].minor.yy0); } + case 109: /* db_options ::= db_options TABLE_PREFIX signed */ +{ yylhsminor.yy448 = setDatabaseOption(pCxt, yymsp[-2].minor.yy448, DB_OPTION_TABLE_PREFIX, yymsp[0].minor.yy448); } yymsp[-2].minor.yy448 = yylhsminor.yy448; break; - case 110: /* db_options ::= db_options TABLE_SUFFIX NK_INTEGER */ -{ yylhsminor.yy448 = setDatabaseOption(pCxt, yymsp[-2].minor.yy448, DB_OPTION_TABLE_SUFFIX, &yymsp[0].minor.yy0); } + case 110: /* db_options ::= db_options TABLE_SUFFIX signed */ +{ yylhsminor.yy448 = setDatabaseOption(pCxt, yymsp[-2].minor.yy448, DB_OPTION_TABLE_SUFFIX, yymsp[0].minor.yy448); } yymsp[-2].minor.yy448 = yylhsminor.yy448; break; case 111: /* alter_db_options ::= alter_db_option */ @@ -5444,9 +6061,9 @@ static YYACTIONTYPE yy_reduce( break; /********** End reduce actions ************************************************/ }; - assert( yyruleno 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db1; + +sql drop database if exists db2; +sql create database db2 vgroups 5 TABLE_PREFIX -1 TABLE_SUFFIX -2; +sql use db2; +sql create table taaa11 (ts timestamp, f1 int); +sql create table tbbb11 (ts timestamp, f1 int); +sql create table tccc11 (ts timestamp, f1 int); +sql create table tddd11 (ts timestamp, f1 int); +sql create table taaa22 (ts timestamp, f1 int); +sql create table tbbb22 (ts timestamp, f1 int); +sql create table tccc22 (ts timestamp, f1 int); +sql create table tddd22 (ts timestamp, f1 int); +sql create table teee22 (ts timestamp, f1 int); +sql show create database db2; +sql select count(*) a from information_schema.ins_tables where db_name='db2' group by vgroup_id having(count(*) > 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db2; + +sql drop database if exists db3; +sql create database db3 vgroups 5 TABLE_PREFIX -1; +sql use db3; +sql create table taaa11 (ts timestamp, f1 int); +sql create table tbbb11 (ts timestamp, f1 int); +sql create table tccc11 (ts timestamp, f1 int); +sql create table tddd11 (ts timestamp, f1 int); +sql create table zaaa22 (ts timestamp, f1 int); +sql create table zbbb22 (ts timestamp, f1 int); +sql create table zccc22 (ts timestamp, f1 int); +sql create table zddd22 (ts timestamp, f1 int); +sql create table zeee22 (ts timestamp, f1 int); +sql show create database db3; +sql select count(*) a from information_schema.ins_tables where db_name='db3' group by vgroup_id having(count(*) > 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db3; + +sql drop database if exists db4; +sql create database db4 vgroups 5 TABLE_SUFFIX -2; +sql use db4; +sql create table taaa11 (ts timestamp, f1 int); +sql create table tbbb11 (ts timestamp, f1 int); +sql create table tccc11 (ts timestamp, f1 int); +sql create table tddd11 (ts timestamp, f1 int); +sql create table zaaa22 (ts timestamp, f1 int); +sql create table zbbb22 (ts timestamp, f1 int); +sql create table zccc22 (ts timestamp, f1 int); +sql create table zddd22 (ts timestamp, f1 int); +sql create table zeee22 (ts timestamp, f1 int); +sql show create database db4; +sql select count(*) a from information_schema.ins_tables where db_name='db4' group by vgroup_id having(count(*) > 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db4; + +sql drop database if exists db5; +sql create database db5 vgroups 5 TABLE_PREFIX 1; +sql use db5; +sql create table taaa11 (ts timestamp, f1 int); +sql create table baaa11 (ts timestamp, f1 int); +sql create table caaa11 (ts timestamp, f1 int); +sql create table daaa11 (ts timestamp, f1 int); +sql create table faaa11 (ts timestamp, f1 int); +sql create table gbbb11 (ts timestamp, f1 int); +sql create table hbbb11 (ts timestamp, f1 int); +sql create table ibbb11 (ts timestamp, f1 int); +sql create table jbbb11 (ts timestamp, f1 int); +sql show create database db5; +sql select count(*) a from information_schema.ins_tables where db_name='db5' group by vgroup_id having(count(*) > 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db5; + +sql drop database if exists db6; +sql create database db6 vgroups 5 TABLE_SUFFIX 2; +sql use db6; +sql create table taaa11 (ts timestamp, f1 int); +sql create table taaa12 (ts timestamp, f1 int); +sql create table taaa13 (ts timestamp, f1 int); +sql create table taaa14 (ts timestamp, f1 int); +sql create table tbbb23 (ts timestamp, f1 int); +sql create table tbbb24 (ts timestamp, f1 int); +sql create table tbbb31 (ts timestamp, f1 int); +sql create table tbbb32 (ts timestamp, f1 int); +sql create table tbbb33 (ts timestamp, f1 int); +sql show create database db6; +sql select count(*) a from information_schema.ins_tables where db_name='db6' group by vgroup_id having(count(*) > 0) order by a; +if $rows != 2 then + return -1 +endi +if $data00 != 4 then + return -1 +endi +if $data10 != 5 then + return -1 +endi +sql drop database if exists db6; + +sql drop database if exists db7; +sql create database db7 vgroups 5 TABLE_PREFIX -100 TABLE_SUFFIX -92; +sql use db7; +sql create table taaa11 (ts timestamp, f1 int); +sql create table taaa12 (ts timestamp, f1 int); +sql create table taaa13 (ts timestamp, f1 int); +sql create table tbbb21 (ts timestamp, f1 int); +sql create table tbbb22 (ts timestamp, f1 int); +sql create table tbbb23 (ts timestamp, f1 int); +sql create table tbbb24 (ts timestamp, f1 int); +sql create table tccc31 (ts timestamp, f1 int); +sql create table tccc32 (ts timestamp, f1 int); +sql create table tccc33 (ts timestamp, f1 int); +sql create table tddd24 (ts timestamp, f1 int); +sql create table tddd31 (ts timestamp, f1 int); +sql create table tddd32 (ts timestamp, f1 int); +sql create table tddd33 (ts timestamp, f1 int); +sql show create database db7; +sql select count(*) a from information_schema.ins_tables where db_name='db7' group by vgroup_id having(count(*) > 0) order by a; +sql drop database if exists db7; + +sql_error create database db8 vgroups 5 TABLE_PREFIX -1 TABLE_SUFFIX 2; +sql_error create database db8 vgroups 5 TABLE_PREFIX 191 TABLE_SUFFIX 192; +sql_error create database db8 vgroups 5 TABLE_PREFIX -192 TABLE_SUFFIX -191; +sql_error create database db8 vgroups 5 TABLE_PREFIX 100 TABLE_SUFFIX 92; + +system sh/exec.sh -n dnode1 -s stop -x SIGINT