From 1676bfe5cf94678a83646b73b019700fa4a0bf47 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 14 Jun 2022 15:43:56 +0800 Subject: [PATCH] fix: some problems of parser --- include/libs/parser/parser.h | 1 + include/util/taoserror.h | 1 + source/client/src/clientMain.c | 4 + source/libs/parser/inc/sql.y | 2 +- source/libs/parser/src/parAstCreater.c | 12 +- source/libs/parser/src/parTranslater.c | 159 ++- source/libs/parser/src/parUtil.c | 2 + source/libs/parser/src/parser.c | 2 + source/libs/parser/src/sql.c | 1209 +++++++++--------- source/libs/parser/test/mockCatalog.cpp | 30 +- source/libs/parser/test/parInitialATest.cpp | 18 +- source/libs/parser/test/parInitialCTest.cpp | 4 +- source/libs/parser/test/parInsertTest.cpp | 8 +- source/libs/parser/test/parSelectTest.cpp | 14 +- source/libs/parser/test/parTestUtil.cpp | 6 +- source/libs/planner/src/planSpliter.c | 3 + source/libs/planner/test/planGroupByTest.cpp | 2 + tests/script/jenkins/basic.txt | 24 +- 18 files changed, 804 insertions(+), 697 deletions(-) diff --git a/include/libs/parser/parser.h b/include/libs/parser/parser.h index 76a290364e..e45e5bd160 100644 --- a/include/libs/parser/parser.h +++ b/include/libs/parser/parser.h @@ -65,6 +65,7 @@ void qDestroyQuery(SQuery* pQueryNode); int32_t qExtractResultSchema(const SNode* pRoot, int32_t* numOfCols, SSchema** pSchema); int32_t qSetSTableIdForRsma(SNode* pStmt, int64_t uid); +void qCleanupKeywordsTable(); int32_t qBuildStmtOutput(SQuery* pQuery, SHashObj* pVgHash, SHashObj* pBlockHash); int32_t qResetStmtDataBlock(void* block, bool keepBuf); diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 03308e395f..1e515b3cbd 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -653,6 +653,7 @@ int32_t* taosGetErrno(); #define TSDB_CODE_PAR_INVALID_DELETE_WHERE TAOS_DEF_ERROR_CODE(0, 0x2655) #define TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG TAOS_DEF_ERROR_CODE(0, 0x2656) #define TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x2657) +#define TSDB_CODE_PAR_INVALID_WINDOW_PC TAOS_DEF_ERROR_CODE(0, 0x2658) //planner #define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700) diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c index 83b481658e..40a58b4dc5 100644 --- a/source/client/src/clientMain.c +++ b/source/client/src/clientMain.c @@ -25,6 +25,7 @@ #include "tref.h" #include "trpc.h" #include "version.h" +#include "functionMgt.h" #define TSC_VAR_NOT_RELEASE 1 #define TSC_VAR_RELEASED 0 @@ -61,6 +62,9 @@ void taos_cleanup(void) { cleanupTaskQueue(); + fmFuncMgtDestroy(); + qCleanupKeywordsTable(); + id = clientConnRefPool; clientConnRefPool = -1; taosCloseRef(id); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 83ad41aac0..8097695823 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -255,7 +255,7 @@ multi_create_clause(A) ::= multi_create_clause(B) create_subtable_clause(C). create_subtable_clause(A) ::= not_exists_opt(B) full_table_name(C) USING full_table_name(D) - specific_tags_opt(E) TAGS NK_LP literal_list(F) NK_RP table_options(G). { A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); } + specific_tags_opt(E) TAGS NK_LP expression_list(F) NK_RP table_options(G). { A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); } %type multi_drop_clause { SNodeList* } %destructor multi_drop_clause { nodesDestroyList($$); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index ca066c7056..daeea1ed68 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -230,9 +230,13 @@ SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) { SRawExprNode* pRawExpr = (SRawExprNode*)pNode; SNode* pExpr = pRawExpr->pNode; if (nodesIsExprNode(pExpr)) { - int32_t len = TMIN(sizeof(((SExprNode*)pExpr)->aliasName) - 1, pRawExpr->n); - strncpy(((SExprNode*)pExpr)->aliasName, pRawExpr->p, len); - ((SExprNode*)pExpr)->aliasName[len] = '\0'; + if (QUERY_NODE_COLUMN == nodeType(pExpr)) { + strcpy(((SExprNode*)pExpr)->aliasName, ((SColumnNode*)pExpr)->colName); + } else { + int32_t len = TMIN(sizeof(((SExprNode*)pExpr)->aliasName) - 1, pRawExpr->n); + strncpy(((SExprNode*)pExpr)->aliasName, pRawExpr->p, len); + ((SExprNode*)pExpr)->aliasName[len] = '\0'; + } } taosMemoryFreeClear(pNode); return pExpr; @@ -801,7 +805,7 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti ((SDatabaseOptions*)pOptions)->pRetentions = pVal; break; case DB_OPTION_SCHEMALESS: -// ((SDatabaseOptions*)pOptions)->schemaless = taosStr2Int8(((SToken*)pVal)->z, NULL, 10); + // ((SDatabaseOptions*)pOptions)->schemaless = taosStr2Int8(((SToken*)pVal)->z, NULL, 10); ((SDatabaseOptions*)pOptions)->schemaless = 1; break; default: diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index fcf2f57dec..365704f988 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -537,13 +537,15 @@ static int32_t findAndSetColumn(STranslateContext* pCxt, SColumnNode** pColRef, SNode* pNode; FOREACH(pNode, pProjectList) { SExprNode* pExpr = (SExprNode*)pNode; - if (0 == strcmp(pCol->colName, pExpr->aliasName) || - (isPrimaryKey((STempTableNode*)pTable, pNode) && isInternalPrimaryKey(pCol))) { + if (0 == strcmp(pCol->colName, pExpr->aliasName)) { if (*pFound) { return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_AMBIGUOUS_COLUMN, pCol->colName); } setColumnInfoByExpr(pTable, pExpr, pColRef); *pFound = true; + } else if (isPrimaryKey((STempTableNode*)pTable, pNode) && isInternalPrimaryKey(pCol)) { + setColumnInfoByExpr(pTable, pExpr, pColRef); + *pFound = true; } } } @@ -662,9 +664,24 @@ static int32_t parseTimeFromValueNode(STranslateContext* pCxt, SValueNode* pVal) } char* pEnd = NULL; pVal->datum.i = taosStr2Int64(pVal->literal, &pEnd, 10); - return (NULL != pEnd && '\0' == *pEnd) ? TSDB_CODE_SUCCESS : TSDB_CODE_FAILED; + return (NULL != pEnd && '\0' == *pEnd) ? TSDB_CODE_SUCCESS : TSDB_CODE_PAR_WRONG_VALUE_TYPE; } else { - return TSDB_CODE_FAILED; + return TSDB_CODE_PAR_WRONG_VALUE_TYPE; + } +} + +static int32_t parseBoolFromValueNode(STranslateContext* pCxt, SValueNode* pVal) { + if (IS_VAR_DATA_TYPE(pVal->node.resType.type) || TSDB_DATA_TYPE_BOOL == pVal->node.resType.type) { + pVal->datum.b = (0 == strcasecmp(pVal->literal, "true")); + return TSDB_CODE_SUCCESS; + } else if (IS_INTEGER_TYPE(pVal->node.resType.type)) { + pVal->datum.b = (0 != taosStr2Int64(pVal->literal, NULL, 10)); + return TSDB_CODE_SUCCESS; + } else if (IS_FLOAT_TYPE(pVal->node.resType.type)) { + pVal->datum.b = (0 != taosStr2Double(pVal->literal, NULL)); + return TSDB_CODE_SUCCESS; + } else { + return TSDB_CODE_PAR_WRONG_VALUE_TYPE; } } @@ -685,7 +702,9 @@ static EDealRes translateValueImpl(STranslateContext* pCxt, SValueNode* pVal, SD case TSDB_DATA_TYPE_NULL: break; case TSDB_DATA_TYPE_BOOL: - pVal->datum.b = (0 == strcasecmp(pVal->literal, "true")); + if (TSDB_CODE_SUCCESS != parseBoolFromValueNode(pCxt, pVal)) { + return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pVal->literal); + } *(bool*)&pVal->typeData = pVal->datum.b; break; case TSDB_DATA_TYPE_TINYINT: { @@ -1068,6 +1087,16 @@ static int32_t translateForbidFillFunc(STranslateContext* pCxt, SFunctionNode* p return TSDB_CODE_SUCCESS; } +static int32_t translateWindowPseudoColumnFunc(STranslateContext* pCxt, SFunctionNode* pFunc) { + if (!fmIsWindowPseudoColumnFunc(pFunc->funcId)) { + return TSDB_CODE_SUCCESS; + } + if (NULL == pCxt->pCurrSelectStmt->pWindow) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_WINDOW_PC); + } + return TSDB_CODE_SUCCESS; +} + static void setFuncClassification(SSelectStmt* pSelect, SFunctionNode* pFunc) { if (NULL != pSelect) { pSelect->hasAggFuncs = pSelect->hasAggFuncs ? true : fmIsAggFunc(pFunc->funcId); @@ -1097,6 +1126,9 @@ static EDealRes translateFunction(STranslateContext* pCxt, SFunctionNode* pFunc) if (TSDB_CODE_SUCCESS == pCxt->errCode) { pCxt->errCode = translateForbidFillFunc(pCxt, pFunc); } + if (TSDB_CODE_SUCCESS == pCxt->errCode) { + pCxt->errCode = translateWindowPseudoColumnFunc(pCxt, pFunc); + } if (TSDB_CODE_SUCCESS == pCxt->errCode) { setFuncClassification(pCxt->pCurrSelectStmt, pFunc); } @@ -3106,7 +3138,11 @@ static int32_t translateDropSuperTable(STranslateContext* pCxt, SDropSuperTableS pStmt->ignoreNotExists); } -static int32_t setAlterTableField(SAlterTableStmt* pStmt, SMAlterStbReq* pAlterReq) { +static int32_t buildAlterSuperTableReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, SMAlterStbReq* pAlterReq) { + SName tableName; + tNameExtractFullName(toName(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, &tableName), pAlterReq->name); + pAlterReq->alterType = pStmt->alterType; + if (TSDB_ALTER_TABLE_UPDATE_OPTIONS == pStmt->alterType) { pAlterReq->ttl = pStmt->pOptions->ttl; if ('\0' != pStmt->pOptions->comment[0]) { @@ -3154,15 +3190,45 @@ static int32_t setAlterTableField(SAlterTableStmt* pStmt, SMAlterStbReq* pAlterR return TSDB_CODE_SUCCESS; } -static int32_t translateAlterTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) { - SMAlterStbReq alterReq = {0}; - SName tableName; - tNameExtractFullName(toName(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, &tableName), alterReq.name); - alterReq.alterType = pStmt->alterType; +static SSchema* getColSchema(STableMeta* pTableMeta, const char* pTagName) { + int32_t numOfFields = getNumOfTags(pTableMeta) + getNumOfColumns(pTableMeta); + for (int32_t i = 0; i < numOfFields; ++i) { + SSchema* pTagSchema = pTableMeta->schema + i; + if (0 == strcmp(pTagName, pTagSchema->name)) { + return pTagSchema; + } + } + return NULL; +} + +static int32_t checkAlterSuperTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) { if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME == pStmt->alterType) { return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_ALTER_TABLE); } - int32_t code = setAlterTableField(pStmt, &alterReq); + if (TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES == pStmt->alterType || + TSDB_ALTER_TABLE_UPDATE_TAG_BYTES == pStmt->alterType) { + STableMeta* pTableMeta = NULL; + int32_t code = getTableMeta(pCxt, pStmt->dbName, pStmt->tableName, &pTableMeta); + if (TSDB_CODE_SUCCESS == code) { + SSchema* pSchema = getColSchema(pTableMeta, pStmt->colName); + if (NULL == pSchema) { + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COLUMN, pStmt->colName); + } else if (!IS_VAR_DATA_TYPE(pSchema->type) || pSchema->type != pStmt->dataType.type || + pSchema->bytes >= pStmt->dataType.bytes) { + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_MODIFY_COL); + } + } + return code; + } + return TSDB_CODE_SUCCESS; +} + +static int32_t translateAlterSuperTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) { + SMAlterStbReq alterReq = {0}; + int32_t code = checkAlterSuperTable(pCxt, pStmt); + if (TSDB_CODE_SUCCESS == code) { + code = buildAlterSuperTableReq(pCxt, pStmt, &alterReq); + } if (TSDB_CODE_SUCCESS == code) { code = buildCmdMsg(pCxt, TDMT_MND_ALTER_STB, (FSerializeFunc)tSerializeSMAlterStbReq, &alterReq); } @@ -3835,7 +3901,7 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) { code = translateDropSuperTable(pCxt, (SDropSuperTableStmt*)pNode); break; case QUERY_NODE_ALTER_TABLE_STMT: - code = translateAlterTable(pCxt, (SAlterTableStmt*)pNode); + code = translateAlterSuperTable(pCxt, (SAlterTableStmt*)pNode); break; case QUERY_NODE_CREATE_USER_STMT: code = translateCreateUser(pCxt, (SCreateUserStmt*)pNode); @@ -4445,8 +4511,32 @@ static int32_t translateTagVal(STranslateContext* pCxt, uint8_t precision, SSche ? pCxt->errCode : TSDB_CODE_SUCCESS); } else { - return TSDB_CODE_FAILED; + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)pNode)->aliasName); + } +} + +static int32_t buildJsonTagVal(STranslateContext* pCxt, SSchema* pTagSchema, SValueNode* pVal, SArray* pTagArray, + STag** ppTag) { + if (pVal->literal && strlen(pVal->literal) > (TSDB_MAX_JSON_TAG_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) { + return buildSyntaxErrMsg(&pCxt->msgBuf, "json string too long than 4095", pVal->literal); } + + return parseJsontoTagData(pVal->literal, pTagArray, ppTag, &pCxt->msgBuf); +} + +static int32_t buildNormalTagVal(STranslateContext* pCxt, SSchema* pTagSchema, SValueNode* pVal, SArray* pTagArray) { + if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL) { + void* nodeVal = nodesGetValueFromNode(pVal); + STagVal val = {.cid = pTagSchema->colId, .type = pTagSchema->type}; + if (IS_VAR_DATA_TYPE(pTagSchema->type)) { + val.pData = varDataVal(nodeVal); + val.nData = varDataLen(nodeVal); + } else { + memcpy(&val.i64, nodeVal, pTagSchema->bytes); + } + taosArrayPush(pTagArray, &val); + } + return TSDB_CODE_SUCCESS; } static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableClause* pStmt, STableMeta* pSuperTableMeta, @@ -4458,11 +4548,10 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla } SArray* pTagArray = taosArrayInit(LIST_LENGTH(pStmt->pValsOfTags), sizeof(STagVal)); - if (!pTagArray) { - return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_TSC_OUT_OF_MEMORY); + if (NULL == pTagArray) { + return TSDB_CODE_OUT_OF_MEMORY; } int32_t code = TSDB_CODE_SUCCESS; - int16_t nTags = 0, nBufPos = 0; SSchema* pTagSchema = getTableTagSchema(pSuperTableMeta); SNode * pTag = NULL, *pNode = NULL; bool isJson = false; @@ -4490,27 +4579,12 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla } else { REPLACE_LIST2_NODE(pVal); } - if (pTagSchema->type == TSDB_DATA_TYPE_JSON) { - if (pVal->literal && strlen(pVal->literal) > (TSDB_MAX_JSON_TAG_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) { - code = buildSyntaxErrMsg(&pCxt->msgBuf, "json string too long than 4095", pVal->literal); - goto end; - } + if (pSchema->type == TSDB_DATA_TYPE_JSON) { isJson = true; - code = parseJsontoTagData(pVal->literal, pTagArray, ppTag, &pCxt->msgBuf); - if (code != TSDB_CODE_SUCCESS) { - goto end; - } + code = buildJsonTagVal(pCxt, pSchema, pVal, pTagArray, ppTag); } else if (pVal->node.resType.type != TSDB_DATA_TYPE_NULL) { - void* nodeVal = nodesGetValueFromNode(pVal); - STagVal val = {.cid = pTagSchema->colId, .type = pTagSchema->type}; - if (IS_VAR_DATA_TYPE(pTagSchema->type)) { - val.pData = varDataVal(nodeVal); - val.nData = varDataLen(nodeVal); - } else { - memcpy(&val.i64, nodeVal, pTagSchema->bytes); - } - taosArrayPush(pTagArray, &val); + code = buildNormalTagVal(pCxt, pSchema, pVal, pTagArray); } } @@ -4825,17 +4899,6 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) { return rewriteToVnodeModifyOpStmt(pQuery, pBufArray); } -static SSchema* getColSchema(STableMeta* pTableMeta, const char* pTagName) { - int32_t numOfFields = getNumOfTags(pTableMeta) + getNumOfColumns(pTableMeta); - for (int32_t i = 0; i < numOfFields; ++i) { - SSchema* pTagSchema = pTableMeta->schema + i; - if (0 == strcmp(pTagName, pTagSchema->name)) { - return pTagSchema; - } - } - return NULL; -} - static int32_t buildUpdateTagValReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, STableMeta* pTableMeta, SVAlterTbReq* pReq) { SSchema* pSchema = getColSchema(pTableMeta, pStmt->colName); @@ -4853,6 +4916,10 @@ static int32_t buildUpdateTagValReq(STranslateContext* pCxt, SAlterTableStmt* pS return pCxt->errCode; } + if (IS_VAR_DATA_TYPE(pSchema->type) && strlen(pStmt->pVal->literal) > pSchema->bytes) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pStmt->pVal->literal); + } + pReq->isNull = (TSDB_DATA_TYPE_NULL == pStmt->pVal->node.resType.type); if (pStmt->pVal->node.resType.type == TSDB_DATA_TYPE_JSON) { if (pStmt->pVal->literal && diff --git a/source/libs/parser/src/parUtil.c b/source/libs/parser/src/parUtil.c index c3ff4c63a4..42e887bb9d 100644 --- a/source/libs/parser/src/parUtil.c +++ b/source/libs/parser/src/parUtil.c @@ -186,6 +186,8 @@ static char* getSyntaxErrFormat(int32_t errCode) { return "The REDISTRIBUTE VGROUP statement only support 1 to 3 dnodes"; case TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC: return "%s function not allowed in fill query"; + case TSDB_CODE_PAR_INVALID_WINDOW_PC: + return "_WSTARTTS, _WENDTS and _WDURATION can only be used in window queries"; case TSDB_CODE_OUT_OF_MEMORY: return "Out of memory"; default: diff --git a/source/libs/parser/src/parser.c b/source/libs/parser/src/parser.c index 7c330158fa..538404798d 100644 --- a/source/libs/parser/src/parser.c +++ b/source/libs/parser/src/parser.c @@ -207,6 +207,8 @@ int32_t qSetSTableIdForRsma(SNode* pStmt, int64_t uid) { return TSDB_CODE_FAILED; } +void qCleanupKeywordsTable() { taosCleanupKeywordsTable(); } + int32_t qStmtBindParams(SQuery* pQuery, TAOS_MULTI_BIND* pParams, int32_t colIdx) { int32_t code = TSDB_CODE_SUCCESS; diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index b2de892f30..bde9a2bd30 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -215,543 +215,544 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (2152) +#define YY_ACTTAB_COUNT (2178) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 28, 231, 1663, 1650, 611, 610, 297, 1650, 358, 1485, - /* 10 */ 314, 1483, 35, 33, 352, 36, 34, 32, 31, 30, - /* 20 */ 306, 24, 1173, 1647, 533, 442, 441, 1647, 79, 1647, - /* 30 */ 1679, 36, 34, 32, 31, 30, 152, 493, 517, 1643, - /* 40 */ 1649, 115, 278, 1643, 1649, 1643, 1649, 1171, 516, 1486, - /* 50 */ 536, 533, 1633, 1494, 536, 1794, 536, 497, 14, 1746, - /* 60 */ 35, 33, 1300, 356, 1179, 1663, 114, 147, 306, 1692, - /* 70 */ 1173, 1791, 82, 1664, 519, 1666, 1667, 515, 532, 536, - /* 80 */ 1494, 1, 1732, 1743, 1794, 1314, 280, 1728, 36, 34, - /* 90 */ 32, 31, 30, 1679, 410, 1171, 1793, 1651, 1794, 520, - /* 100 */ 1791, 517, 309, 615, 112, 1583, 14, 1746, 35, 33, - /* 110 */ 149, 516, 1179, 1172, 1791, 1633, 306, 1647, 1173, 145, - /* 120 */ 1739, 1740, 532, 1744, 36, 34, 32, 31, 30, 2, - /* 130 */ 63, 1742, 1692, 1643, 1649, 84, 1664, 519, 1666, 1667, - /* 140 */ 515, 1364, 536, 1171, 536, 1732, 953, 1794, 952, 1731, - /* 150 */ 1728, 615, 1490, 72, 14, 392, 1174, 393, 1395, 148, - /* 160 */ 1179, 1172, 96, 1791, 532, 95, 94, 93, 92, 91, - /* 170 */ 90, 89, 88, 87, 1487, 954, 56, 2, 132, 201, - /* 180 */ 1375, 1177, 1178, 39, 1224, 1225, 1227, 1228, 1229, 1230, - /* 190 */ 1231, 512, 534, 1239, 1240, 1241, 1242, 1243, 1244, 615, - /* 200 */ 400, 952, 393, 1395, 1174, 55, 1197, 66, 133, 1172, - /* 210 */ 96, 150, 1451, 95, 94, 93, 92, 91, 90, 89, - /* 220 */ 88, 87, 65, 279, 1356, 38, 429, 194, 567, 1177, - /* 230 */ 1178, 1363, 1224, 1225, 1227, 1228, 1229, 1230, 1231, 512, - /* 240 */ 534, 1239, 1240, 1241, 1242, 1243, 1244, 566, 487, 565, - /* 250 */ 564, 563, 1174, 55, 63, 105, 104, 103, 102, 101, - /* 260 */ 100, 99, 98, 97, 936, 35, 33, 110, 36, 34, - /* 270 */ 32, 31, 30, 306, 1746, 1173, 1489, 1177, 1178, 1198, - /* 280 */ 1224, 1225, 1227, 1228, 1229, 1230, 1231, 512, 534, 1239, - /* 290 */ 1240, 1241, 1242, 1243, 1244, 55, 445, 444, 1741, 1538, - /* 300 */ 1171, 443, 940, 941, 111, 440, 296, 1355, 439, 438, - /* 310 */ 437, 1536, 569, 35, 33, 1245, 1679, 1179, 26, 310, - /* 320 */ 1386, 306, 391, 1173, 486, 395, 290, 130, 36, 34, - /* 330 */ 32, 31, 30, 1196, 8, 150, 1496, 1043, 559, 558, - /* 340 */ 557, 1047, 556, 1049, 1050, 555, 1052, 552, 1171, 1058, - /* 350 */ 549, 1060, 1061, 546, 543, 150, 615, 450, 482, 618, - /* 360 */ 485, 35, 33, 585, 583, 1179, 1172, 142, 397, 306, - /* 370 */ 1633, 1173, 458, 248, 1195, 291, 1324, 289, 288, 1532, - /* 380 */ 433, 318, 9, 150, 435, 107, 193, 399, 1574, 1576, - /* 390 */ 395, 607, 603, 599, 595, 247, 1171, 1472, 453, 157, - /* 400 */ 533, 129, 1361, 447, 615, 1425, 434, 572, 192, 1174, - /* 410 */ 1794, 1385, 357, 1179, 1172, 479, 1322, 1323, 1325, 1326, - /* 420 */ 80, 1571, 1792, 242, 61, 150, 1791, 60, 159, 1494, - /* 430 */ 9, 488, 483, 51, 1177, 1178, 50, 1224, 1225, 1227, - /* 440 */ 1228, 1229, 1230, 1231, 512, 534, 1239, 1240, 1241, 1242, - /* 450 */ 1243, 1244, 615, 55, 410, 316, 529, 1174, 54, 319, - /* 460 */ 322, 1633, 1172, 130, 150, 445, 444, 130, 1538, 562, - /* 470 */ 443, 382, 1496, 111, 440, 311, 1496, 439, 438, 437, - /* 480 */ 1536, 474, 1177, 1178, 203, 1224, 1225, 1227, 1228, 1229, - /* 490 */ 1230, 1231, 512, 534, 1239, 1240, 1241, 1242, 1243, 1244, - /* 500 */ 1384, 1794, 1147, 1199, 197, 1174, 1575, 1576, 36, 34, - /* 510 */ 32, 31, 30, 147, 1307, 161, 160, 1791, 35, 33, - /* 520 */ 1197, 1663, 1155, 1156, 195, 1470, 306, 351, 1173, 350, - /* 530 */ 1177, 1178, 493, 1224, 1225, 1227, 1228, 1229, 1230, 1231, - /* 540 */ 512, 534, 1239, 1240, 1241, 1242, 1243, 1244, 253, 1679, - /* 550 */ 1633, 1524, 533, 1171, 1383, 1621, 533, 517, 1382, 1250, - /* 560 */ 277, 114, 1195, 1005, 367, 1197, 1479, 516, 106, 375, - /* 570 */ 1179, 1633, 387, 466, 533, 431, 497, 1422, 1211, 469, - /* 580 */ 1007, 1494, 569, 150, 1381, 1494, 368, 2, 1692, 343, - /* 590 */ 388, 82, 1664, 519, 1666, 1667, 515, 1481, 536, 112, - /* 600 */ 331, 1732, 1477, 1494, 1633, 280, 1728, 198, 1633, 615, - /* 610 */ 345, 341, 533, 495, 144, 1739, 1740, 1794, 1744, 1172, - /* 620 */ 1794, 940, 941, 1538, 106, 1376, 11, 10, 222, 147, - /* 630 */ 317, 436, 147, 1791, 1633, 1536, 1791, 591, 590, 589, - /* 640 */ 321, 1494, 588, 587, 586, 116, 581, 580, 579, 578, - /* 650 */ 577, 576, 575, 574, 123, 570, 32, 31, 30, 1380, - /* 660 */ 386, 1299, 1174, 381, 380, 379, 378, 377, 374, 373, + /* 0 */ 475, 1650, 392, 1663, 393, 1395, 1584, 1794, 1361, 352, + /* 10 */ 11, 10, 36, 34, 37, 35, 33, 32, 31, 1793, + /* 20 */ 313, 1647, 1173, 1791, 71, 510, 37, 35, 33, 32, + /* 30 */ 31, 1679, 1471, 33, 32, 31, 1643, 1649, 302, 535, + /* 40 */ 37, 35, 33, 32, 31, 1487, 1679, 1171, 528, 534, + /* 50 */ 507, 1794, 1483, 1633, 500, 936, 469, 512, 14, 1538, + /* 60 */ 36, 34, 1300, 147, 1179, 322, 296, 1791, 313, 1692, + /* 70 */ 1173, 1536, 281, 82, 1664, 537, 1666, 1667, 533, 115, + /* 80 */ 528, 1, 1571, 1732, 1314, 1794, 40, 280, 1728, 159, + /* 90 */ 499, 1276, 1663, 940, 941, 1171, 1211, 148, 1794, 1794, + /* 100 */ 132, 1791, 1375, 615, 1262, 510, 14, 1794, 36, 34, + /* 110 */ 147, 149, 1179, 1172, 1791, 1791, 313, 113, 1173, 147, + /* 120 */ 1679, 1746, 300, 1791, 400, 567, 393, 1395, 532, 2, + /* 130 */ 130, 509, 144, 1739, 1740, 410, 1744, 63, 534, 1496, + /* 140 */ 54, 358, 1633, 1171, 566, 1743, 565, 564, 563, 1307, + /* 150 */ 110, 615, 201, 1263, 14, 1197, 1174, 382, 1692, 1489, + /* 160 */ 1179, 1172, 273, 1664, 537, 1666, 1667, 533, 531, 528, + /* 170 */ 525, 1704, 133, 129, 1268, 278, 1451, 2, 55, 1197, + /* 180 */ 66, 1177, 1178, 63, 1224, 1225, 1227, 1228, 1229, 1230, + /* 190 */ 1231, 530, 526, 1239, 1240, 1241, 1242, 1243, 1244, 615, + /* 200 */ 475, 161, 160, 299, 1174, 1490, 1583, 65, 279, 1172, + /* 210 */ 79, 150, 194, 28, 311, 1257, 1258, 1259, 1260, 1261, + /* 220 */ 1265, 1266, 1267, 112, 37, 35, 33, 32, 31, 1177, + /* 230 */ 1178, 1486, 1224, 1225, 1227, 1228, 1229, 1230, 1231, 530, + /* 240 */ 526, 1239, 1240, 1241, 1242, 1243, 1244, 953, 56, 952, + /* 250 */ 55, 96, 1174, 1386, 95, 94, 93, 92, 91, 90, + /* 260 */ 89, 88, 87, 510, 569, 36, 34, 37, 35, 33, + /* 270 */ 32, 31, 1385, 313, 343, 1173, 954, 1177, 1178, 435, + /* 280 */ 1224, 1225, 1227, 1228, 1229, 1230, 1231, 530, 526, 1239, + /* 290 */ 1240, 1241, 1242, 1243, 1244, 345, 341, 445, 444, 1384, + /* 300 */ 1171, 434, 443, 1633, 1663, 111, 440, 485, 150, 439, + /* 310 */ 438, 437, 397, 36, 34, 1245, 25, 1179, 1195, 152, + /* 320 */ 1226, 313, 1633, 1173, 39, 55, 37, 35, 33, 32, + /* 330 */ 31, 27, 1679, 1425, 8, 1794, 1494, 1211, 316, 1198, + /* 340 */ 535, 37, 35, 33, 32, 31, 130, 1792, 1171, 1633, + /* 350 */ 534, 1791, 611, 610, 1633, 1496, 615, 501, 512, 130, + /* 360 */ 1538, 36, 34, 514, 567, 1179, 1172, 301, 1497, 313, + /* 370 */ 1692, 1173, 1536, 1005, 82, 1664, 537, 1666, 1667, 533, + /* 380 */ 150, 528, 9, 566, 1732, 565, 564, 563, 280, 1728, + /* 390 */ 1007, 55, 391, 445, 444, 395, 1171, 1364, 443, 1653, + /* 400 */ 1794, 111, 440, 485, 615, 439, 438, 437, 1469, 1174, + /* 410 */ 29, 243, 147, 1179, 1172, 356, 1791, 562, 96, 142, + /* 420 */ 290, 95, 94, 93, 92, 91, 90, 89, 88, 87, + /* 430 */ 9, 1532, 1494, 496, 1177, 1178, 1655, 1224, 1225, 1227, + /* 440 */ 1228, 1229, 1230, 1231, 530, 526, 1239, 1240, 1241, 1242, + /* 450 */ 1243, 1244, 615, 318, 150, 150, 1538, 1174, 319, 1182, + /* 460 */ 1574, 1576, 1172, 317, 150, 351, 130, 350, 1536, 291, + /* 470 */ 399, 289, 288, 395, 433, 1496, 442, 441, 435, 1155, + /* 480 */ 1156, 195, 1177, 1178, 1363, 1224, 1225, 1227, 1228, 1229, + /* 490 */ 1230, 1231, 530, 526, 1239, 1240, 1241, 1242, 1243, 1244, + /* 500 */ 434, 567, 1199, 1621, 1383, 1174, 502, 497, 105, 104, + /* 510 */ 103, 102, 101, 100, 99, 98, 97, 459, 36, 34, + /* 520 */ 566, 150, 565, 564, 563, 1185, 313, 1663, 1173, 1485, + /* 530 */ 1177, 1178, 1651, 1224, 1225, 1227, 1228, 1229, 1230, 1231, + /* 540 */ 530, 526, 1239, 1240, 1241, 1242, 1243, 1244, 331, 1647, + /* 550 */ 1250, 584, 1647, 1171, 1633, 1679, 1197, 1746, 1196, 1794, + /* 560 */ 277, 1472, 1195, 511, 1643, 1649, 1382, 1643, 1649, 375, + /* 570 */ 1179, 147, 387, 534, 120, 1791, 528, 1633, 1663, 528, + /* 580 */ 157, 1742, 37, 35, 33, 32, 31, 2, 585, 583, + /* 590 */ 388, 485, 346, 1692, 1324, 1381, 952, 83, 1664, 537, + /* 600 */ 1666, 1667, 533, 106, 528, 61, 1679, 1732, 60, 615, + /* 610 */ 431, 306, 1728, 143, 532, 471, 1633, 485, 410, 1172, + /* 620 */ 1494, 429, 1264, 253, 534, 235, 1524, 234, 1633, 357, + /* 630 */ 486, 1759, 1746, 493, 1322, 1323, 1325, 1326, 37, 35, + /* 640 */ 33, 32, 31, 1269, 1692, 1633, 1494, 1299, 273, 1664, + /* 650 */ 537, 1666, 1667, 533, 572, 528, 1741, 1705, 1470, 1380, + /* 660 */ 386, 1479, 1174, 381, 380, 379, 378, 377, 374, 373, /* 670 */ 372, 371, 370, 366, 365, 364, 363, 362, 361, 360, - /* 680 */ 359, 499, 1663, 520, 1379, 1226, 1197, 1177, 1178, 1584, - /* 690 */ 1224, 1225, 1227, 1228, 1229, 1230, 1231, 512, 534, 1239, - /* 700 */ 1240, 1241, 1242, 1243, 1244, 1264, 131, 1276, 1378, 1633, - /* 710 */ 1679, 259, 573, 533, 1466, 7, 511, 533, 496, 1471, - /* 720 */ 1200, 533, 459, 257, 53, 409, 1269, 52, 516, 1491, - /* 730 */ 1226, 533, 1633, 1610, 1633, 533, 36, 34, 32, 31, - /* 740 */ 30, 1377, 1494, 244, 162, 1374, 1494, 467, 1663, 1692, - /* 750 */ 1494, 501, 83, 1664, 519, 1666, 1667, 515, 1633, 536, - /* 760 */ 1494, 1373, 1732, 1794, 1494, 25, 299, 1728, 143, 55, - /* 770 */ 36, 34, 32, 31, 30, 147, 1679, 1469, 533, 1791, - /* 780 */ 223, 533, 281, 130, 517, 475, 1759, 435, 533, 1372, - /* 790 */ 530, 1633, 1497, 531, 516, 1633, 185, 1371, 1633, 183, - /* 800 */ 320, 476, 1370, 1369, 1663, 81, 1211, 1494, 1368, 434, - /* 810 */ 1494, 1633, 567, 504, 1262, 1692, 281, 1494, 274, 1664, - /* 820 */ 519, 1666, 1667, 515, 509, 536, 1751, 1295, 493, 561, - /* 830 */ 457, 566, 1679, 565, 564, 563, 59, 58, 355, 1633, - /* 840 */ 514, 156, 1452, 455, 1538, 207, 349, 1633, 1262, 584, - /* 850 */ 516, 1226, 1633, 1633, 1633, 1367, 1537, 114, 1633, 276, - /* 860 */ 1173, 226, 339, 1263, 337, 333, 329, 153, 324, 1298, - /* 870 */ 567, 1692, 1412, 1182, 273, 1664, 519, 1666, 1667, 515, - /* 880 */ 513, 536, 510, 1704, 1268, 1171, 1366, 1407, 1295, 566, - /* 890 */ 346, 565, 564, 563, 446, 112, 120, 1263, 187, 150, - /* 900 */ 189, 186, 1179, 188, 191, 1633, 1663, 190, 46, 448, - /* 910 */ 146, 1739, 1740, 1405, 1744, 11, 10, 1653, 1268, 1358, - /* 920 */ 1359, 480, 1181, 27, 304, 1257, 1258, 1259, 1260, 1261, - /* 930 */ 1265, 1266, 1267, 210, 1679, 451, 1633, 471, 502, 1185, - /* 940 */ 78, 615, 496, 37, 37, 460, 37, 1254, 233, 1321, - /* 950 */ 74, 1172, 516, 217, 1655, 1680, 1633, 27, 304, 1257, - /* 960 */ 1258, 1259, 1260, 1261, 1265, 1266, 1267, 118, 1663, 1396, - /* 970 */ 119, 1533, 120, 1692, 212, 46, 83, 1664, 519, 1666, - /* 980 */ 1667, 515, 977, 536, 1270, 1232, 1732, 1128, 1184, 235, - /* 990 */ 299, 1728, 143, 541, 1174, 428, 1679, 1762, 494, 978, - /* 1000 */ 1663, 225, 505, 119, 517, 228, 120, 230, 525, 3, - /* 1010 */ 1760, 241, 5, 1036, 516, 121, 252, 119, 1633, 1177, - /* 1020 */ 1178, 323, 1195, 326, 330, 286, 287, 1005, 1679, 249, - /* 1030 */ 1139, 369, 1573, 376, 1064, 1692, 517, 158, 83, 1664, - /* 1040 */ 519, 1666, 1667, 515, 1068, 536, 516, 1074, 1732, 384, - /* 1050 */ 1633, 389, 299, 1728, 1807, 383, 1072, 1201, 122, 385, - /* 1060 */ 1663, 390, 1204, 1766, 401, 398, 165, 1692, 402, 167, - /* 1070 */ 83, 1664, 519, 1666, 1667, 515, 1203, 536, 1205, 404, - /* 1080 */ 1732, 403, 170, 406, 299, 1728, 1807, 172, 1679, 407, - /* 1090 */ 1202, 175, 1663, 408, 62, 1789, 517, 411, 178, 430, - /* 1100 */ 432, 1484, 182, 86, 1480, 184, 516, 295, 124, 1179, - /* 1110 */ 1633, 125, 1482, 1478, 1615, 126, 127, 1614, 196, 461, - /* 1120 */ 1679, 199, 250, 202, 465, 462, 1200, 1692, 517, 468, - /* 1130 */ 83, 1664, 519, 1666, 1667, 515, 472, 536, 516, 205, - /* 1140 */ 1732, 481, 1633, 1663, 299, 1728, 1807, 497, 470, 478, - /* 1150 */ 473, 523, 1773, 1772, 298, 1750, 490, 208, 1763, 1692, - /* 1160 */ 211, 6, 264, 1664, 519, 1666, 1667, 515, 1753, 536, - /* 1170 */ 484, 1679, 216, 1663, 477, 113, 1295, 218, 1199, 517, - /* 1180 */ 40, 300, 1747, 506, 503, 18, 527, 1582, 1794, 516, - /* 1190 */ 137, 521, 522, 1633, 219, 1581, 526, 308, 497, 237, - /* 1200 */ 149, 1679, 528, 224, 1791, 251, 1663, 1495, 1713, 517, - /* 1210 */ 1692, 1810, 1790, 264, 1664, 519, 1666, 1667, 515, 516, - /* 1220 */ 536, 239, 71, 1633, 73, 539, 246, 254, 500, 614, - /* 1230 */ 136, 227, 1467, 229, 1679, 507, 1663, 265, 47, 1794, - /* 1240 */ 1692, 256, 517, 84, 1664, 519, 1666, 1667, 515, 258, - /* 1250 */ 536, 147, 516, 1732, 275, 1791, 1633, 508, 1728, 266, - /* 1260 */ 1627, 1626, 57, 1625, 1679, 325, 1622, 327, 328, 332, - /* 1270 */ 1166, 1167, 517, 1692, 154, 1620, 134, 1664, 519, 1666, - /* 1280 */ 1667, 515, 516, 536, 334, 335, 1633, 1663, 336, 1619, - /* 1290 */ 338, 1618, 340, 1617, 342, 1616, 1663, 344, 1600, 155, - /* 1300 */ 1142, 347, 1141, 1692, 348, 1594, 84, 1664, 519, 1666, - /* 1310 */ 1667, 515, 1593, 536, 353, 1679, 1732, 354, 1592, 498, - /* 1320 */ 1808, 1729, 1591, 517, 1679, 1111, 1566, 1565, 1564, 1563, - /* 1330 */ 1562, 1561, 517, 516, 1560, 1559, 1558, 1633, 1557, 1556, - /* 1340 */ 1555, 1554, 516, 1553, 1552, 1551, 1633, 1550, 1549, 117, - /* 1350 */ 1663, 1548, 1547, 1546, 1692, 1545, 1544, 269, 1664, 519, - /* 1360 */ 1666, 1667, 515, 1692, 536, 1543, 134, 1664, 519, 1666, - /* 1370 */ 1667, 515, 1113, 536, 1542, 1541, 1540, 1539, 1679, 1424, - /* 1380 */ 1392, 943, 163, 108, 942, 1391, 517, 1608, 1602, 1590, - /* 1390 */ 1663, 171, 1589, 394, 489, 140, 516, 164, 109, 169, - /* 1400 */ 1633, 396, 1579, 303, 45, 174, 1663, 1473, 1423, 1421, - /* 1410 */ 1809, 1419, 1417, 412, 413, 414, 417, 1692, 1679, 971, - /* 1420 */ 274, 1664, 519, 1666, 1667, 515, 514, 536, 416, 420, - /* 1430 */ 418, 421, 422, 1415, 1679, 426, 516, 424, 1404, 425, - /* 1440 */ 1633, 1403, 517, 1390, 1475, 1077, 181, 1078, 1474, 1413, - /* 1450 */ 1004, 582, 516, 1003, 1663, 584, 1633, 1692, 292, 305, - /* 1460 */ 273, 1664, 519, 1666, 1667, 515, 1408, 536, 1002, 1705, - /* 1470 */ 449, 1001, 998, 1692, 997, 996, 274, 1664, 519, 1666, - /* 1480 */ 1667, 515, 1679, 536, 293, 1406, 1663, 294, 1389, 452, - /* 1490 */ 517, 180, 1388, 454, 456, 85, 1607, 1149, 1601, 463, - /* 1500 */ 516, 1588, 1587, 141, 1633, 1586, 1578, 307, 49, 427, - /* 1510 */ 423, 419, 415, 179, 1679, 67, 1663, 204, 464, 4, - /* 1520 */ 37, 1692, 517, 206, 274, 1664, 519, 1666, 1667, 515, - /* 1530 */ 15, 536, 516, 128, 209, 43, 1633, 1320, 64, 200, - /* 1540 */ 135, 177, 213, 215, 1679, 22, 48, 1653, 214, 1313, - /* 1550 */ 68, 23, 517, 1692, 42, 1292, 260, 1664, 519, 1666, - /* 1560 */ 1667, 515, 516, 536, 221, 1291, 1633, 1663, 138, 1349, - /* 1570 */ 17, 1338, 1344, 1343, 301, 1348, 10, 1347, 302, 19, - /* 1580 */ 1255, 139, 1234, 1692, 151, 29, 268, 1664, 519, 1666, - /* 1590 */ 1667, 515, 12, 536, 1233, 1679, 20, 1219, 176, 16, - /* 1600 */ 168, 518, 173, 517, 405, 41, 13, 1663, 1577, 238, - /* 1610 */ 74, 524, 1652, 516, 232, 21, 234, 1633, 1318, 1189, - /* 1620 */ 236, 240, 166, 69, 70, 243, 1695, 540, 1236, 535, - /* 1630 */ 44, 1071, 1065, 538, 1692, 1679, 315, 270, 1664, 519, - /* 1640 */ 1666, 1667, 515, 517, 536, 542, 544, 1663, 1062, 1059, - /* 1650 */ 545, 547, 548, 516, 550, 1053, 553, 1633, 551, 1057, - /* 1660 */ 1051, 1056, 1663, 554, 1055, 1054, 75, 1042, 76, 560, - /* 1670 */ 1073, 77, 1070, 568, 1692, 1679, 969, 261, 1664, 519, - /* 1680 */ 1666, 1667, 515, 517, 536, 993, 1011, 245, 991, 571, - /* 1690 */ 1679, 986, 1008, 516, 990, 989, 988, 1633, 517, 987, - /* 1700 */ 985, 984, 1006, 981, 980, 979, 976, 975, 516, 974, - /* 1710 */ 1420, 592, 1633, 1663, 1692, 593, 594, 271, 1664, 519, - /* 1720 */ 1666, 1667, 515, 1418, 536, 1663, 597, 596, 598, 1692, - /* 1730 */ 1416, 600, 262, 1664, 519, 1666, 1667, 515, 601, 536, - /* 1740 */ 602, 1679, 604, 605, 606, 1402, 608, 609, 1401, 517, - /* 1750 */ 1414, 1387, 613, 1679, 612, 1175, 255, 616, 617, 516, - /* 1760 */ 1362, 517, 1362, 1633, 1362, 1663, 1362, 1362, 1362, 1362, - /* 1770 */ 1362, 516, 1362, 1362, 1362, 1633, 1663, 1362, 1362, 1362, - /* 1780 */ 1692, 1362, 1362, 272, 1664, 519, 1666, 1667, 515, 1362, - /* 1790 */ 536, 1362, 1692, 1679, 1362, 263, 1664, 519, 1666, 1667, - /* 1800 */ 515, 517, 536, 1362, 1679, 1362, 1362, 1362, 1362, 1362, - /* 1810 */ 1362, 516, 517, 1362, 1362, 1633, 1362, 1362, 1362, 1362, - /* 1820 */ 1362, 1362, 516, 1362, 1362, 1362, 1633, 1663, 1362, 1362, - /* 1830 */ 1362, 1362, 1692, 1362, 1362, 1675, 1664, 519, 1666, 1667, - /* 1840 */ 515, 1362, 536, 1692, 1362, 1362, 1674, 1664, 519, 1666, - /* 1850 */ 1667, 515, 1362, 536, 1362, 1679, 1362, 1663, 1362, 1362, - /* 1860 */ 1362, 1362, 1362, 517, 1362, 1362, 1362, 1362, 1362, 1362, - /* 1870 */ 1362, 1362, 1362, 516, 1362, 1362, 1362, 1633, 1362, 1362, - /* 1880 */ 1362, 1362, 1362, 1362, 1362, 1679, 1362, 1663, 1362, 1362, - /* 1890 */ 1362, 1362, 1362, 517, 1692, 1362, 1362, 1673, 1664, 519, - /* 1900 */ 1666, 1667, 515, 516, 536, 1362, 1362, 1633, 1362, 1362, - /* 1910 */ 1362, 1362, 1362, 1362, 1362, 1679, 1362, 1362, 1362, 1663, - /* 1920 */ 1362, 1362, 1362, 517, 1692, 1362, 1362, 284, 1664, 519, - /* 1930 */ 1666, 1667, 515, 516, 536, 1362, 1362, 1633, 1362, 1362, - /* 1940 */ 1362, 1362, 1362, 313, 312, 1362, 1362, 1679, 1362, 1362, - /* 1950 */ 1362, 1362, 1663, 1187, 1692, 517, 1362, 283, 1664, 519, - /* 1960 */ 1666, 1667, 515, 1362, 536, 516, 1362, 1362, 1362, 1633, - /* 1970 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1180, 1362, - /* 1980 */ 1679, 1362, 1362, 1362, 1362, 1663, 1692, 1362, 517, 285, - /* 1990 */ 1664, 519, 1666, 1667, 515, 1179, 536, 1362, 516, 1362, - /* 2000 */ 1362, 1362, 1633, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - /* 2010 */ 1362, 1362, 1362, 1679, 1362, 1362, 493, 1362, 1362, 1692, - /* 2020 */ 1362, 517, 282, 1664, 519, 1666, 1667, 515, 1362, 536, - /* 2030 */ 1362, 516, 1362, 1362, 537, 1633, 1362, 1362, 1362, 1362, - /* 2040 */ 1362, 1362, 1362, 1362, 1183, 114, 493, 1362, 1362, 1362, - /* 2050 */ 1362, 1362, 1692, 1362, 1362, 267, 1664, 519, 1666, 1667, - /* 2060 */ 515, 1362, 536, 1362, 497, 1362, 1362, 1362, 1362, 1362, - /* 2070 */ 1362, 1362, 1362, 1362, 1362, 114, 1362, 1362, 1362, 1362, - /* 2080 */ 1362, 1362, 1362, 112, 1362, 1362, 1362, 1188, 1362, 1362, - /* 2090 */ 1362, 1362, 1362, 1362, 497, 1362, 1362, 1362, 220, 1739, - /* 2100 */ 492, 1362, 491, 1362, 1362, 1794, 1362, 1362, 1362, 1362, - /* 2110 */ 1362, 1362, 1191, 112, 1362, 1362, 1362, 149, 1362, 1362, - /* 2120 */ 1362, 1791, 1362, 534, 1239, 1240, 1362, 1362, 220, 1739, - /* 2130 */ 492, 1362, 491, 1362, 1362, 1794, 1362, 1362, 1362, 1362, - /* 2140 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 147, 1362, 1362, - /* 2150 */ 1362, 1791, + /* 680 */ 359, 1379, 26, 1378, 281, 1422, 1481, 1177, 1178, 1200, + /* 690 */ 1224, 1225, 1227, 1228, 1229, 1230, 1231, 530, 526, 1239, + /* 700 */ 1240, 1241, 1242, 1243, 1244, 485, 131, 485, 507, 1633, + /* 710 */ 573, 259, 1466, 507, 1538, 569, 1262, 367, 1356, 320, + /* 720 */ 485, 1226, 1377, 257, 53, 1197, 1537, 52, 1374, 1373, + /* 730 */ 457, 1633, 106, 1633, 1494, 7, 1494, 115, 1663, 436, + /* 740 */ 1575, 1576, 115, 455, 162, 591, 590, 589, 321, 1494, + /* 750 */ 588, 587, 586, 116, 581, 580, 579, 578, 577, 576, + /* 760 */ 575, 574, 123, 570, 485, 1263, 1679, 1372, 1477, 55, + /* 770 */ 198, 485, 1633, 485, 511, 113, 368, 485, 1633, 1633, + /* 780 */ 113, 940, 941, 409, 534, 1491, 1268, 516, 1633, 1610, + /* 790 */ 145, 1739, 1740, 1494, 1744, 146, 1739, 1740, 1371, 1744, + /* 800 */ 1494, 1355, 1494, 529, 1692, 81, 1494, 1663, 83, 1664, + /* 810 */ 537, 1666, 1667, 533, 218, 528, 519, 1633, 1732, 1370, + /* 820 */ 1369, 524, 306, 1728, 143, 28, 311, 1257, 1258, 1259, + /* 830 */ 1260, 1261, 1265, 1266, 1267, 1679, 59, 58, 355, 1751, + /* 840 */ 1295, 156, 1760, 535, 1368, 1367, 349, 185, 1633, 187, + /* 850 */ 183, 1366, 186, 534, 1412, 1298, 561, 1633, 189, 276, + /* 860 */ 485, 188, 339, 1181, 337, 333, 329, 153, 324, 1633, + /* 870 */ 1633, 485, 467, 1692, 1407, 1663, 446, 83, 1664, 537, + /* 880 */ 1666, 1667, 533, 483, 528, 485, 485, 1732, 1405, 1494, + /* 890 */ 1226, 306, 1728, 1807, 1633, 1633, 448, 484, 244, 150, + /* 900 */ 1494, 1633, 1766, 1679, 11, 10, 191, 1663, 1295, 190, + /* 910 */ 451, 535, 466, 38, 1494, 1494, 977, 208, 1358, 1359, + /* 920 */ 1376, 534, 118, 119, 238, 1633, 120, 78, 46, 1184, + /* 930 */ 221, 38, 1452, 978, 38, 1679, 507, 74, 494, 460, + /* 940 */ 1663, 1692, 229, 535, 1254, 83, 1664, 537, 1666, 1667, + /* 950 */ 533, 1680, 528, 534, 1128, 1732, 38, 1633, 209, 306, + /* 960 */ 1728, 1807, 1396, 478, 215, 115, 428, 1036, 1679, 1321, + /* 970 */ 1789, 224, 1270, 1692, 517, 1232, 535, 83, 1664, 537, + /* 980 */ 1666, 1667, 533, 512, 528, 541, 534, 1732, 1663, 119, + /* 990 */ 1633, 306, 1728, 1807, 512, 1762, 1533, 252, 120, 121, + /* 1000 */ 508, 237, 1750, 113, 240, 520, 1692, 242, 3, 119, + /* 1010 */ 265, 1664, 537, 1666, 1667, 533, 1679, 528, 232, 1739, + /* 1020 */ 506, 5, 505, 323, 535, 1794, 1064, 1195, 326, 330, + /* 1030 */ 1068, 286, 1005, 287, 534, 249, 1794, 149, 1633, 1074, + /* 1040 */ 1072, 1791, 512, 369, 1573, 1139, 158, 376, 149, 384, + /* 1050 */ 122, 383, 1791, 385, 1692, 389, 1201, 390, 265, 1664, + /* 1060 */ 537, 1666, 1667, 533, 398, 528, 1663, 1204, 401, 165, + /* 1070 */ 402, 1203, 167, 1043, 559, 558, 557, 1047, 556, 1049, + /* 1080 */ 1050, 555, 1052, 552, 1794, 1058, 549, 1060, 1061, 546, + /* 1090 */ 543, 403, 1205, 170, 1679, 404, 147, 406, 172, 407, + /* 1100 */ 1791, 1202, 535, 408, 175, 62, 1663, 411, 178, 430, + /* 1110 */ 432, 1484, 534, 182, 1179, 1480, 1633, 86, 184, 124, + /* 1120 */ 295, 1615, 125, 1482, 1614, 250, 1478, 126, 461, 127, + /* 1130 */ 196, 462, 1692, 199, 1679, 473, 84, 1664, 537, 1666, + /* 1140 */ 1667, 533, 535, 528, 468, 202, 1732, 472, 465, 205, + /* 1150 */ 1731, 1728, 534, 491, 1582, 476, 1633, 470, 479, 1581, + /* 1160 */ 213, 70, 480, 298, 251, 1663, 1200, 219, 481, 495, + /* 1170 */ 6, 1753, 1692, 1773, 211, 1772, 84, 1664, 537, 1666, + /* 1180 */ 1667, 533, 504, 528, 1663, 1495, 1732, 488, 1295, 1199, + /* 1190 */ 523, 1728, 489, 1679, 490, 1763, 223, 305, 498, 114, + /* 1200 */ 41, 535, 518, 521, 307, 230, 19, 72, 539, 254, + /* 1210 */ 228, 534, 1679, 1467, 231, 1633, 246, 136, 260, 47, + /* 1220 */ 535, 137, 1747, 256, 258, 614, 275, 266, 1627, 1626, + /* 1230 */ 534, 1692, 57, 1625, 1633, 134, 1664, 537, 1666, 1667, + /* 1240 */ 533, 1622, 528, 1713, 325, 1810, 327, 1166, 328, 1167, + /* 1250 */ 1692, 618, 154, 236, 84, 1664, 537, 1666, 1667, 533, + /* 1260 */ 1663, 528, 332, 1790, 1732, 248, 515, 239, 1620, 1729, + /* 1270 */ 304, 303, 522, 334, 241, 336, 1619, 107, 513, 1808, + /* 1280 */ 1187, 335, 338, 607, 603, 599, 595, 247, 1679, 1618, + /* 1290 */ 340, 1617, 1663, 297, 342, 1616, 535, 344, 1600, 155, + /* 1300 */ 347, 348, 1173, 1142, 1141, 1180, 534, 1594, 1593, 353, + /* 1310 */ 1633, 1592, 80, 354, 1591, 216, 1111, 1566, 1565, 1564, + /* 1320 */ 1679, 1563, 1179, 1562, 1561, 487, 1692, 1171, 535, 1560, + /* 1330 */ 274, 1664, 537, 1666, 1667, 533, 1559, 528, 534, 450, + /* 1340 */ 1558, 1557, 1633, 1556, 1179, 1555, 1554, 1553, 482, 1552, + /* 1350 */ 1551, 1550, 1549, 117, 458, 1548, 1663, 1547, 1692, 1546, + /* 1360 */ 1545, 492, 274, 1664, 537, 1666, 1667, 533, 193, 528, + /* 1370 */ 1544, 1183, 1543, 474, 108, 1113, 203, 1542, 1541, 1540, + /* 1380 */ 453, 1539, 1424, 615, 1679, 447, 1392, 943, 163, 942, + /* 1390 */ 192, 1391, 535, 1172, 1147, 140, 197, 1608, 1602, 109, + /* 1400 */ 394, 164, 534, 1590, 169, 396, 1633, 171, 1589, 1663, + /* 1410 */ 1579, 1473, 1423, 174, 1188, 51, 1421, 971, 50, 1419, + /* 1420 */ 414, 1663, 1692, 1417, 1415, 413, 269, 1664, 537, 1666, + /* 1430 */ 1667, 533, 412, 528, 416, 417, 1174, 1679, 418, 1191, + /* 1440 */ 421, 420, 422, 424, 425, 535, 426, 1404, 1403, 1679, + /* 1450 */ 526, 1239, 1240, 1390, 310, 534, 1475, 535, 45, 1633, + /* 1460 */ 1078, 1177, 1178, 503, 1077, 1474, 582, 534, 1004, 1003, + /* 1470 */ 1413, 1633, 181, 1002, 1663, 1692, 1001, 584, 998, 134, + /* 1480 */ 1664, 537, 1666, 1667, 533, 997, 528, 1692, 996, 292, + /* 1490 */ 1408, 274, 1664, 537, 1666, 1667, 533, 293, 528, 449, + /* 1500 */ 1406, 294, 1679, 1389, 452, 454, 1388, 312, 456, 180, + /* 1510 */ 535, 85, 1607, 1149, 49, 1601, 463, 1588, 1587, 1586, + /* 1520 */ 534, 141, 1663, 1809, 1633, 128, 1578, 427, 423, 419, + /* 1530 */ 415, 179, 204, 464, 200, 67, 15, 1663, 1577, 210, + /* 1540 */ 1692, 207, 206, 477, 274, 1664, 537, 1666, 1667, 533, + /* 1550 */ 1679, 528, 48, 68, 214, 314, 64, 212, 535, 177, + /* 1560 */ 74, 69, 4, 220, 38, 1679, 217, 1318, 534, 222, + /* 1570 */ 1189, 1320, 1633, 535, 44, 1313, 226, 1663, 135, 225, + /* 1580 */ 16, 227, 23, 534, 1653, 73, 17, 1633, 1692, 1292, + /* 1590 */ 24, 1291, 274, 1664, 537, 1666, 1667, 533, 233, 528, + /* 1600 */ 43, 1652, 138, 1692, 18, 1679, 1349, 261, 1664, 537, + /* 1610 */ 1666, 1667, 533, 535, 528, 42, 176, 1663, 168, 13, + /* 1620 */ 173, 1338, 405, 534, 1344, 10, 1343, 1633, 308, 1348, + /* 1630 */ 1347, 309, 20, 1255, 1695, 1219, 1663, 1236, 1234, 139, + /* 1640 */ 166, 527, 30, 1692, 1233, 1679, 12, 268, 1664, 537, + /* 1650 */ 1666, 1667, 533, 535, 528, 21, 151, 536, 538, 1042, + /* 1660 */ 560, 22, 540, 534, 1679, 315, 542, 1633, 1065, 1062, + /* 1670 */ 545, 544, 535, 547, 1059, 548, 550, 553, 1053, 551, + /* 1680 */ 1057, 1051, 534, 1692, 554, 75, 1633, 270, 1664, 537, + /* 1690 */ 1666, 1667, 533, 1663, 528, 1056, 1073, 76, 77, 1070, + /* 1700 */ 969, 1071, 1692, 568, 993, 1055, 262, 1664, 537, 1666, + /* 1710 */ 1667, 533, 1054, 528, 1011, 571, 245, 991, 990, 989, + /* 1720 */ 986, 1679, 1008, 988, 1420, 1663, 987, 985, 984, 535, + /* 1730 */ 1006, 981, 980, 979, 976, 1418, 975, 974, 592, 534, + /* 1740 */ 593, 594, 598, 1633, 596, 597, 1416, 601, 600, 602, + /* 1750 */ 1414, 605, 606, 1679, 604, 1402, 608, 609, 1401, 1692, + /* 1760 */ 1387, 535, 613, 271, 1664, 537, 1666, 1667, 533, 612, + /* 1770 */ 528, 534, 616, 1663, 1175, 1633, 255, 617, 1362, 1362, + /* 1780 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1663, 1362, + /* 1790 */ 1362, 1692, 1362, 1362, 1362, 263, 1664, 537, 1666, 1667, + /* 1800 */ 533, 1679, 528, 1362, 1362, 1362, 1362, 1362, 1362, 535, + /* 1810 */ 1362, 1362, 1362, 1362, 1362, 1362, 1679, 1362, 1362, 534, + /* 1820 */ 1362, 1663, 1362, 1633, 535, 1362, 1362, 1362, 1362, 1362, + /* 1830 */ 1362, 1362, 1362, 1362, 534, 1362, 1663, 1362, 1633, 1692, + /* 1840 */ 1362, 1362, 1362, 272, 1664, 537, 1666, 1667, 533, 1679, + /* 1850 */ 528, 1362, 1362, 1663, 1692, 1362, 1362, 535, 264, 1664, + /* 1860 */ 537, 1666, 1667, 533, 1679, 528, 1362, 534, 1362, 1362, + /* 1870 */ 1362, 1633, 535, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + /* 1880 */ 1362, 1679, 534, 1362, 1362, 1362, 1633, 1692, 1362, 535, + /* 1890 */ 1362, 1675, 1664, 537, 1666, 1667, 533, 1362, 528, 534, + /* 1900 */ 1362, 1362, 1692, 1633, 1362, 1362, 1674, 1664, 537, 1666, + /* 1910 */ 1667, 533, 1362, 528, 1362, 1362, 1663, 1362, 1362, 1692, + /* 1920 */ 1362, 1362, 1362, 1673, 1664, 537, 1666, 1667, 533, 1362, + /* 1930 */ 528, 1663, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + /* 1940 */ 1362, 1362, 1362, 1362, 1679, 1362, 1362, 1362, 1362, 1362, + /* 1950 */ 1362, 1362, 535, 1362, 1362, 1362, 1362, 1362, 1362, 1679, + /* 1960 */ 1362, 1362, 534, 1362, 1362, 1362, 1633, 535, 1362, 1362, + /* 1970 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 534, 1362, 1362, + /* 1980 */ 1362, 1633, 1692, 1663, 1362, 1362, 284, 1664, 537, 1666, + /* 1990 */ 1667, 533, 1362, 528, 1362, 1362, 1362, 1692, 1362, 1362, + /* 2000 */ 1362, 283, 1664, 537, 1666, 1667, 533, 1362, 528, 1362, + /* 2010 */ 1362, 1679, 1362, 1362, 1362, 1663, 1362, 1362, 1362, 535, + /* 2020 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 534, + /* 2030 */ 1362, 1362, 1362, 1633, 1362, 1362, 1362, 1362, 1362, 1362, + /* 2040 */ 1362, 1362, 1362, 1679, 1362, 1362, 1362, 1362, 1362, 1692, + /* 2050 */ 1362, 535, 1362, 285, 1664, 537, 1666, 1667, 533, 1362, + /* 2060 */ 528, 534, 1362, 1663, 1362, 1633, 1362, 1362, 1362, 1362, + /* 2070 */ 1362, 1362, 507, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + /* 2080 */ 1362, 1692, 1362, 1362, 1362, 282, 1664, 537, 1666, 1667, + /* 2090 */ 533, 1679, 528, 1362, 1362, 1362, 1362, 1362, 1362, 535, + /* 2100 */ 1362, 115, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 534, + /* 2110 */ 1362, 1362, 1362, 1633, 1362, 1362, 1362, 1362, 1362, 512, + /* 2120 */ 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1692, + /* 2130 */ 1362, 1362, 1362, 267, 1664, 537, 1666, 1667, 533, 113, + /* 2140 */ 528, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + /* 2150 */ 1362, 1362, 1362, 1362, 232, 1739, 506, 1362, 505, 1362, + /* 2160 */ 1362, 1794, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + /* 2170 */ 1362, 1362, 1362, 147, 1362, 1362, 1362, 1791, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 324, 325, 243, 273, 251, 252, 276, 273, 250, 273, - /* 10 */ 276, 272, 12, 13, 298, 12, 13, 14, 15, 16, - /* 20 */ 20, 2, 22, 293, 250, 257, 258, 293, 253, 293, - /* 30 */ 271, 12, 13, 14, 15, 16, 262, 250, 279, 309, - /* 40 */ 310, 266, 284, 309, 310, 309, 310, 47, 289, 274, - /* 50 */ 320, 250, 293, 279, 320, 339, 320, 298, 58, 311, - /* 60 */ 12, 13, 14, 262, 64, 243, 279, 351, 20, 310, - /* 70 */ 22, 355, 313, 314, 315, 316, 317, 318, 20, 320, - /* 80 */ 279, 81, 323, 335, 339, 82, 327, 328, 12, 13, - /* 90 */ 14, 15, 16, 271, 57, 47, 351, 273, 339, 289, - /* 100 */ 355, 279, 292, 103, 317, 295, 58, 311, 12, 13, - /* 110 */ 351, 289, 64, 113, 355, 293, 20, 293, 22, 332, - /* 120 */ 333, 334, 20, 336, 12, 13, 14, 15, 16, 81, - /* 130 */ 255, 335, 310, 309, 310, 313, 314, 315, 316, 317, - /* 140 */ 318, 0, 320, 47, 320, 323, 20, 339, 22, 327, - /* 150 */ 328, 103, 277, 253, 58, 246, 156, 248, 249, 351, - /* 160 */ 64, 113, 21, 355, 20, 24, 25, 26, 27, 28, - /* 170 */ 29, 30, 31, 32, 274, 49, 4, 81, 242, 55, - /* 180 */ 244, 181, 182, 81, 184, 185, 186, 187, 188, 189, + /* 0 */ 289, 273, 246, 243, 248, 249, 295, 339, 240, 297, + /* 10 */ 1, 2, 12, 13, 12, 13, 14, 15, 16, 351, + /* 20 */ 20, 293, 22, 355, 253, 20, 12, 13, 14, 15, + /* 30 */ 16, 271, 0, 14, 15, 16, 308, 309, 310, 279, + /* 40 */ 12, 13, 14, 15, 16, 274, 271, 47, 320, 289, + /* 50 */ 250, 339, 272, 293, 279, 4, 297, 297, 58, 271, + /* 60 */ 12, 13, 14, 351, 64, 297, 278, 355, 20, 309, + /* 70 */ 22, 283, 58, 313, 314, 315, 316, 317, 318, 279, + /* 80 */ 320, 81, 279, 323, 82, 339, 81, 327, 328, 286, + /* 90 */ 315, 82, 243, 42, 43, 47, 82, 351, 339, 339, + /* 100 */ 242, 355, 244, 103, 90, 20, 58, 339, 12, 13, + /* 110 */ 351, 351, 64, 113, 355, 355, 20, 317, 22, 351, + /* 120 */ 271, 311, 263, 355, 246, 93, 248, 249, 279, 81, + /* 130 */ 271, 331, 332, 333, 334, 57, 336, 255, 289, 280, + /* 140 */ 3, 250, 293, 47, 112, 335, 114, 115, 116, 14, + /* 150 */ 268, 103, 55, 139, 58, 20, 156, 75, 309, 277, + /* 160 */ 64, 113, 313, 314, 315, 316, 317, 318, 319, 320, + /* 170 */ 321, 322, 256, 145, 160, 284, 260, 81, 81, 20, + /* 180 */ 83, 181, 182, 255, 184, 185, 186, 187, 188, 189, /* 190 */ 190, 191, 192, 193, 194, 195, 196, 197, 198, 103, - /* 200 */ 246, 22, 248, 249, 156, 81, 20, 83, 256, 113, - /* 210 */ 21, 211, 260, 24, 25, 26, 27, 28, 29, 30, - /* 220 */ 31, 32, 165, 166, 148, 81, 47, 170, 93, 181, - /* 230 */ 182, 0, 184, 185, 186, 187, 188, 189, 190, 191, - /* 240 */ 192, 193, 194, 195, 196, 197, 198, 112, 20, 114, - /* 250 */ 115, 116, 156, 81, 255, 24, 25, 26, 27, 28, - /* 260 */ 29, 30, 31, 32, 4, 12, 13, 268, 12, 13, - /* 270 */ 14, 15, 16, 20, 311, 22, 277, 181, 182, 20, + /* 200 */ 289, 119, 120, 292, 156, 277, 295, 165, 166, 113, + /* 210 */ 253, 211, 170, 199, 200, 201, 202, 203, 204, 205, + /* 220 */ 206, 207, 208, 266, 12, 13, 14, 15, 16, 181, + /* 230 */ 182, 274, 184, 185, 186, 187, 188, 189, 190, 191, + /* 240 */ 192, 193, 194, 195, 196, 197, 198, 20, 4, 22, + /* 250 */ 81, 21, 156, 243, 24, 25, 26, 27, 28, 29, + /* 260 */ 30, 31, 32, 20, 57, 12, 13, 12, 13, 14, + /* 270 */ 15, 16, 243, 20, 151, 22, 49, 181, 182, 93, /* 280 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - /* 290 */ 194, 195, 196, 197, 198, 81, 60, 61, 335, 271, - /* 300 */ 47, 65, 42, 43, 68, 69, 278, 231, 72, 73, - /* 310 */ 74, 283, 57, 12, 13, 14, 271, 64, 2, 263, - /* 320 */ 243, 20, 247, 22, 279, 250, 35, 271, 12, 13, - /* 330 */ 14, 15, 16, 20, 81, 211, 280, 94, 95, 96, - /* 340 */ 97, 98, 99, 100, 101, 102, 103, 104, 47, 106, - /* 350 */ 107, 108, 109, 110, 111, 211, 103, 4, 143, 19, - /* 360 */ 315, 12, 13, 257, 258, 64, 113, 270, 14, 20, - /* 370 */ 293, 22, 19, 33, 20, 84, 181, 86, 87, 282, - /* 380 */ 89, 281, 81, 211, 93, 45, 33, 247, 288, 289, - /* 390 */ 250, 51, 52, 53, 54, 55, 47, 0, 45, 55, - /* 400 */ 250, 145, 240, 50, 103, 0, 115, 64, 55, 156, - /* 410 */ 339, 243, 262, 64, 113, 220, 221, 222, 223, 224, - /* 420 */ 80, 279, 351, 83, 80, 211, 355, 83, 286, 279, - /* 430 */ 81, 216, 217, 80, 181, 182, 83, 184, 185, 186, + /* 290 */ 194, 195, 196, 197, 198, 172, 173, 60, 61, 243, + /* 300 */ 47, 115, 65, 293, 243, 68, 69, 250, 211, 72, + /* 310 */ 73, 74, 14, 12, 13, 14, 2, 64, 20, 262, + /* 320 */ 185, 20, 293, 22, 81, 81, 12, 13, 14, 15, + /* 330 */ 16, 2, 271, 0, 81, 339, 279, 82, 263, 20, + /* 340 */ 279, 12, 13, 14, 15, 16, 271, 351, 47, 293, + /* 350 */ 289, 355, 251, 252, 293, 280, 103, 20, 297, 271, + /* 360 */ 271, 12, 13, 226, 93, 64, 113, 278, 280, 20, + /* 370 */ 309, 22, 283, 47, 313, 314, 315, 316, 317, 318, + /* 380 */ 211, 320, 81, 112, 323, 114, 115, 116, 327, 328, + /* 390 */ 64, 81, 247, 60, 61, 250, 47, 0, 65, 44, + /* 400 */ 339, 68, 69, 250, 103, 72, 73, 74, 0, 156, + /* 410 */ 324, 325, 351, 64, 113, 262, 355, 92, 21, 270, + /* 420 */ 35, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 430 */ 81, 282, 279, 143, 181, 182, 81, 184, 185, 186, /* 440 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - /* 450 */ 197, 198, 103, 81, 57, 263, 116, 156, 3, 263, - /* 460 */ 298, 293, 113, 271, 211, 60, 61, 271, 271, 92, - /* 470 */ 65, 75, 280, 68, 69, 278, 280, 72, 73, 74, - /* 480 */ 283, 141, 181, 182, 144, 184, 185, 186, 187, 188, + /* 450 */ 197, 198, 103, 281, 211, 211, 271, 156, 263, 47, + /* 460 */ 288, 289, 113, 278, 211, 155, 271, 157, 283, 84, + /* 470 */ 247, 86, 87, 250, 89, 280, 257, 258, 93, 167, + /* 480 */ 168, 169, 181, 182, 0, 184, 185, 186, 187, 188, /* 490 */ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - /* 500 */ 243, 339, 162, 20, 164, 156, 288, 289, 12, 13, - /* 510 */ 14, 15, 16, 351, 14, 119, 120, 355, 12, 13, - /* 520 */ 20, 243, 167, 168, 169, 0, 20, 155, 22, 157, - /* 530 */ 181, 182, 250, 184, 185, 186, 187, 188, 189, 190, - /* 540 */ 191, 192, 193, 194, 195, 196, 197, 198, 264, 271, - /* 550 */ 293, 267, 250, 47, 243, 0, 250, 279, 243, 14, - /* 560 */ 18, 279, 20, 47, 262, 20, 272, 289, 262, 27, - /* 570 */ 64, 293, 30, 302, 250, 269, 298, 0, 82, 298, - /* 580 */ 64, 279, 57, 211, 243, 279, 262, 81, 310, 151, - /* 590 */ 48, 313, 314, 315, 316, 317, 318, 272, 320, 317, - /* 600 */ 45, 323, 272, 279, 293, 327, 328, 272, 293, 103, - /* 610 */ 172, 173, 250, 331, 332, 333, 334, 339, 336, 113, - /* 620 */ 339, 42, 43, 271, 262, 244, 1, 2, 145, 351, - /* 630 */ 278, 269, 351, 355, 293, 283, 355, 60, 61, 62, - /* 640 */ 63, 279, 65, 66, 67, 68, 69, 70, 71, 72, - /* 650 */ 73, 74, 75, 76, 77, 78, 14, 15, 16, 243, - /* 660 */ 118, 4, 156, 121, 122, 123, 124, 125, 126, 127, + /* 500 */ 115, 93, 20, 0, 243, 156, 216, 217, 24, 25, + /* 510 */ 26, 27, 28, 29, 30, 31, 32, 297, 12, 13, + /* 520 */ 112, 211, 114, 115, 116, 113, 20, 243, 22, 273, + /* 530 */ 181, 182, 273, 184, 185, 186, 187, 188, 189, 190, + /* 540 */ 191, 192, 193, 194, 195, 196, 197, 198, 45, 293, + /* 550 */ 14, 41, 293, 47, 293, 271, 20, 311, 20, 339, + /* 560 */ 18, 0, 20, 279, 308, 309, 243, 308, 309, 27, + /* 570 */ 64, 351, 30, 289, 41, 355, 320, 293, 243, 320, + /* 580 */ 55, 335, 12, 13, 14, 15, 16, 81, 257, 258, + /* 590 */ 48, 250, 82, 309, 181, 243, 22, 313, 314, 315, + /* 600 */ 316, 317, 318, 262, 320, 80, 271, 323, 83, 103, + /* 610 */ 269, 327, 328, 329, 279, 82, 293, 250, 57, 113, + /* 620 */ 279, 47, 139, 264, 289, 341, 267, 145, 293, 262, + /* 630 */ 346, 347, 311, 220, 221, 222, 223, 224, 12, 13, + /* 640 */ 14, 15, 16, 160, 309, 293, 279, 4, 313, 314, + /* 650 */ 315, 316, 317, 318, 64, 320, 335, 322, 0, 243, + /* 660 */ 118, 272, 156, 121, 122, 123, 124, 125, 126, 127, /* 670 */ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - /* 680 */ 138, 226, 243, 289, 243, 185, 20, 181, 182, 295, + /* 680 */ 138, 243, 199, 243, 58, 0, 272, 181, 182, 20, /* 690 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - /* 700 */ 194, 195, 196, 197, 198, 139, 18, 82, 243, 293, - /* 710 */ 271, 23, 259, 250, 261, 37, 272, 250, 279, 0, - /* 720 */ 20, 250, 298, 35, 36, 262, 160, 39, 289, 262, - /* 730 */ 185, 250, 293, 262, 293, 250, 12, 13, 14, 15, - /* 740 */ 16, 243, 279, 262, 56, 243, 279, 262, 243, 310, - /* 750 */ 279, 41, 313, 314, 315, 316, 317, 318, 293, 320, - /* 760 */ 279, 243, 323, 339, 279, 199, 327, 328, 329, 81, - /* 770 */ 12, 13, 14, 15, 16, 351, 271, 0, 250, 355, - /* 780 */ 341, 250, 58, 271, 279, 346, 347, 93, 250, 243, - /* 790 */ 262, 293, 280, 262, 289, 293, 85, 243, 293, 88, - /* 800 */ 262, 296, 243, 243, 243, 117, 82, 279, 243, 115, - /* 810 */ 279, 293, 93, 41, 90, 310, 58, 279, 313, 314, - /* 820 */ 315, 316, 317, 318, 58, 320, 209, 210, 250, 272, - /* 830 */ 21, 112, 271, 114, 115, 116, 148, 149, 150, 293, - /* 840 */ 279, 153, 260, 34, 271, 145, 158, 293, 90, 41, - /* 850 */ 289, 185, 293, 293, 293, 243, 283, 279, 293, 171, - /* 860 */ 22, 358, 174, 139, 176, 177, 178, 179, 180, 212, - /* 870 */ 93, 310, 0, 47, 313, 314, 315, 316, 317, 318, - /* 880 */ 319, 320, 321, 322, 160, 47, 243, 0, 210, 112, - /* 890 */ 82, 114, 115, 116, 22, 317, 41, 139, 85, 211, - /* 900 */ 85, 88, 64, 88, 85, 293, 243, 88, 41, 22, - /* 910 */ 332, 333, 334, 0, 336, 1, 2, 44, 160, 196, - /* 920 */ 197, 349, 47, 199, 200, 201, 202, 203, 204, 205, - /* 930 */ 206, 207, 208, 41, 271, 22, 293, 82, 228, 113, - /* 940 */ 81, 103, 279, 41, 41, 306, 41, 181, 41, 82, - /* 950 */ 91, 113, 289, 343, 81, 271, 293, 199, 200, 201, - /* 960 */ 202, 203, 204, 205, 206, 207, 208, 41, 243, 249, - /* 970 */ 41, 282, 41, 310, 82, 41, 313, 314, 315, 316, - /* 980 */ 317, 318, 47, 320, 82, 82, 323, 82, 113, 82, - /* 990 */ 327, 328, 329, 41, 156, 251, 271, 312, 337, 64, - /* 1000 */ 243, 352, 230, 41, 279, 352, 41, 352, 82, 340, - /* 1010 */ 347, 82, 213, 82, 289, 41, 82, 41, 293, 181, - /* 1020 */ 182, 308, 20, 250, 45, 307, 257, 47, 271, 300, - /* 1030 */ 154, 250, 250, 287, 82, 310, 279, 40, 313, 314, - /* 1040 */ 315, 316, 317, 318, 82, 320, 289, 82, 323, 139, - /* 1050 */ 293, 250, 327, 328, 329, 285, 82, 20, 82, 285, - /* 1060 */ 243, 245, 20, 338, 304, 245, 255, 310, 289, 255, - /* 1070 */ 313, 314, 315, 316, 317, 318, 20, 320, 20, 299, - /* 1080 */ 323, 297, 255, 297, 327, 328, 329, 255, 271, 279, - /* 1090 */ 20, 255, 243, 290, 255, 338, 279, 250, 255, 245, - /* 1100 */ 271, 271, 271, 250, 271, 271, 289, 245, 271, 64, - /* 1110 */ 293, 271, 271, 271, 293, 271, 271, 293, 253, 163, - /* 1120 */ 271, 253, 304, 253, 289, 303, 20, 310, 279, 250, - /* 1130 */ 313, 314, 315, 316, 317, 318, 279, 320, 289, 253, - /* 1140 */ 323, 219, 293, 243, 327, 328, 329, 298, 297, 293, - /* 1150 */ 290, 218, 348, 348, 293, 338, 147, 294, 312, 310, - /* 1160 */ 294, 225, 313, 314, 315, 316, 317, 318, 345, 320, - /* 1170 */ 293, 271, 344, 243, 214, 279, 210, 308, 20, 279, - /* 1180 */ 40, 232, 311, 229, 227, 81, 291, 294, 339, 289, - /* 1190 */ 342, 293, 293, 293, 330, 294, 142, 293, 298, 279, - /* 1200 */ 351, 271, 290, 353, 355, 267, 243, 279, 326, 279, - /* 1210 */ 310, 359, 354, 313, 314, 315, 316, 317, 318, 289, - /* 1220 */ 320, 253, 253, 293, 81, 275, 253, 250, 354, 245, - /* 1230 */ 305, 353, 261, 353, 271, 354, 243, 265, 301, 339, - /* 1240 */ 310, 254, 279, 313, 314, 315, 316, 317, 318, 241, - /* 1250 */ 320, 351, 289, 323, 265, 355, 293, 327, 328, 265, - /* 1260 */ 0, 0, 40, 0, 271, 72, 0, 47, 175, 175, - /* 1270 */ 47, 47, 279, 310, 47, 0, 313, 314, 315, 316, - /* 1280 */ 317, 318, 289, 320, 47, 47, 293, 243, 175, 0, - /* 1290 */ 175, 0, 47, 0, 47, 0, 243, 47, 0, 81, - /* 1300 */ 113, 160, 156, 310, 159, 0, 313, 314, 315, 316, - /* 1310 */ 317, 318, 0, 320, 152, 271, 323, 151, 0, 356, - /* 1320 */ 357, 328, 0, 279, 271, 44, 0, 0, 0, 0, - /* 1330 */ 0, 0, 279, 289, 0, 0, 0, 293, 0, 0, - /* 1340 */ 0, 0, 289, 0, 0, 0, 293, 0, 0, 40, - /* 1350 */ 243, 0, 0, 0, 310, 0, 0, 313, 314, 315, - /* 1360 */ 316, 317, 318, 310, 320, 0, 313, 314, 315, 316, - /* 1370 */ 317, 318, 22, 320, 0, 0, 0, 0, 271, 0, - /* 1380 */ 0, 14, 40, 37, 14, 0, 279, 0, 0, 0, - /* 1390 */ 243, 147, 0, 44, 350, 41, 289, 38, 37, 37, - /* 1400 */ 293, 44, 0, 296, 90, 37, 243, 0, 0, 0, - /* 1410 */ 357, 0, 0, 47, 45, 37, 45, 310, 271, 59, - /* 1420 */ 313, 314, 315, 316, 317, 318, 279, 320, 47, 47, - /* 1430 */ 37, 45, 37, 0, 271, 37, 289, 47, 0, 45, - /* 1440 */ 293, 0, 279, 0, 0, 22, 88, 47, 0, 0, - /* 1450 */ 47, 41, 289, 47, 243, 41, 293, 310, 22, 296, - /* 1460 */ 313, 314, 315, 316, 317, 318, 0, 320, 47, 322, - /* 1470 */ 48, 47, 47, 310, 47, 47, 313, 314, 315, 316, - /* 1480 */ 317, 318, 271, 320, 22, 0, 243, 22, 0, 47, - /* 1490 */ 279, 33, 0, 22, 22, 20, 0, 47, 0, 22, - /* 1500 */ 289, 0, 0, 45, 293, 0, 0, 296, 145, 51, - /* 1510 */ 52, 53, 54, 55, 271, 81, 243, 37, 145, 41, - /* 1520 */ 41, 310, 279, 140, 313, 314, 315, 316, 317, 318, - /* 1530 */ 215, 320, 289, 161, 82, 41, 293, 82, 80, 142, - /* 1540 */ 81, 83, 81, 44, 271, 81, 145, 44, 41, 82, - /* 1550 */ 81, 41, 279, 310, 41, 82, 313, 314, 315, 316, - /* 1560 */ 317, 318, 289, 320, 44, 82, 293, 243, 44, 82, - /* 1570 */ 41, 82, 47, 47, 47, 47, 2, 47, 47, 41, - /* 1580 */ 181, 44, 82, 310, 44, 81, 313, 314, 315, 316, - /* 1590 */ 317, 318, 81, 320, 82, 271, 81, 22, 140, 215, - /* 1600 */ 142, 183, 144, 279, 146, 209, 215, 243, 0, 37, - /* 1610 */ 91, 143, 44, 289, 82, 81, 81, 293, 82, 22, - /* 1620 */ 81, 140, 164, 81, 81, 44, 81, 47, 82, 81, - /* 1630 */ 81, 113, 82, 92, 310, 271, 47, 313, 314, 315, - /* 1640 */ 316, 317, 318, 279, 320, 81, 47, 243, 82, 82, - /* 1650 */ 81, 47, 81, 289, 47, 82, 47, 293, 81, 105, - /* 1660 */ 82, 105, 243, 81, 105, 105, 81, 22, 81, 93, - /* 1670 */ 47, 81, 22, 58, 310, 271, 59, 313, 314, 315, - /* 1680 */ 316, 317, 318, 279, 320, 47, 64, 41, 47, 79, - /* 1690 */ 271, 22, 64, 289, 47, 47, 47, 293, 279, 47, - /* 1700 */ 47, 47, 47, 47, 47, 47, 47, 47, 289, 47, - /* 1710 */ 0, 47, 293, 243, 310, 45, 37, 313, 314, 315, - /* 1720 */ 316, 317, 318, 0, 320, 243, 45, 47, 37, 310, - /* 1730 */ 0, 47, 313, 314, 315, 316, 317, 318, 45, 320, - /* 1740 */ 37, 271, 47, 45, 37, 0, 47, 46, 0, 279, - /* 1750 */ 0, 0, 21, 271, 22, 22, 22, 21, 20, 289, - /* 1760 */ 360, 279, 360, 293, 360, 243, 360, 360, 360, 360, - /* 1770 */ 360, 289, 360, 360, 360, 293, 243, 360, 360, 360, - /* 1780 */ 310, 360, 360, 313, 314, 315, 316, 317, 318, 360, - /* 1790 */ 320, 360, 310, 271, 360, 313, 314, 315, 316, 317, - /* 1800 */ 318, 279, 320, 360, 271, 360, 360, 360, 360, 360, - /* 1810 */ 360, 289, 279, 360, 360, 293, 360, 360, 360, 360, - /* 1820 */ 360, 360, 289, 360, 360, 360, 293, 243, 360, 360, - /* 1830 */ 360, 360, 310, 360, 360, 313, 314, 315, 316, 317, - /* 1840 */ 318, 360, 320, 310, 360, 360, 313, 314, 315, 316, - /* 1850 */ 317, 318, 360, 320, 360, 271, 360, 243, 360, 360, - /* 1860 */ 360, 360, 360, 279, 360, 360, 360, 360, 360, 360, - /* 1870 */ 360, 360, 360, 289, 360, 360, 360, 293, 360, 360, - /* 1880 */ 360, 360, 360, 360, 360, 271, 360, 243, 360, 360, - /* 1890 */ 360, 360, 360, 279, 310, 360, 360, 313, 314, 315, - /* 1900 */ 316, 317, 318, 289, 320, 360, 360, 293, 360, 360, - /* 1910 */ 360, 360, 360, 360, 360, 271, 360, 360, 360, 243, - /* 1920 */ 360, 360, 360, 279, 310, 360, 360, 313, 314, 315, - /* 1930 */ 316, 317, 318, 289, 320, 360, 360, 293, 360, 360, - /* 1940 */ 360, 360, 360, 12, 13, 360, 360, 271, 360, 360, - /* 1950 */ 360, 360, 243, 22, 310, 279, 360, 313, 314, 315, - /* 1960 */ 316, 317, 318, 360, 320, 289, 360, 360, 360, 293, - /* 1970 */ 360, 360, 360, 360, 360, 360, 360, 360, 47, 360, - /* 1980 */ 271, 360, 360, 360, 360, 243, 310, 360, 279, 313, - /* 1990 */ 314, 315, 316, 317, 318, 64, 320, 360, 289, 360, - /* 2000 */ 360, 360, 293, 360, 360, 360, 360, 360, 360, 360, - /* 2010 */ 360, 360, 360, 271, 360, 360, 250, 360, 360, 310, - /* 2020 */ 360, 279, 313, 314, 315, 316, 317, 318, 360, 320, - /* 2030 */ 360, 289, 360, 360, 103, 293, 360, 360, 360, 360, - /* 2040 */ 360, 360, 360, 360, 113, 279, 250, 360, 360, 360, - /* 2050 */ 360, 360, 310, 360, 360, 313, 314, 315, 316, 317, - /* 2060 */ 318, 360, 320, 360, 298, 360, 360, 360, 360, 360, - /* 2070 */ 360, 360, 360, 360, 360, 279, 360, 360, 360, 360, - /* 2080 */ 360, 360, 360, 317, 360, 360, 360, 156, 360, 360, - /* 2090 */ 360, 360, 360, 360, 298, 360, 360, 360, 332, 333, - /* 2100 */ 334, 360, 336, 360, 360, 339, 360, 360, 360, 360, - /* 2110 */ 360, 360, 181, 317, 360, 360, 360, 351, 360, 360, - /* 2120 */ 360, 355, 360, 192, 193, 194, 360, 360, 332, 333, - /* 2130 */ 334, 360, 336, 360, 360, 339, 360, 360, 360, 360, - /* 2140 */ 360, 360, 360, 360, 360, 360, 360, 351, 360, 360, - /* 2150 */ 360, 355, 360, 360, 360, 360, 360, 360, 360, 360, - /* 2160 */ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, - /* 2170 */ 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, - /* 2180 */ 360, 360, 360, 360, + /* 700 */ 194, 195, 196, 197, 198, 250, 18, 250, 250, 293, + /* 710 */ 259, 23, 261, 250, 271, 57, 90, 262, 148, 262, + /* 720 */ 250, 185, 243, 35, 36, 20, 283, 39, 243, 243, + /* 730 */ 21, 293, 262, 293, 279, 37, 279, 279, 243, 269, + /* 740 */ 288, 289, 279, 34, 56, 60, 61, 62, 63, 279, + /* 750 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + /* 760 */ 75, 76, 77, 78, 250, 139, 271, 243, 272, 81, + /* 770 */ 272, 250, 293, 250, 279, 317, 262, 250, 293, 293, + /* 780 */ 317, 42, 43, 262, 289, 262, 160, 41, 293, 262, + /* 790 */ 332, 333, 334, 279, 336, 332, 333, 334, 243, 336, + /* 800 */ 279, 231, 279, 272, 309, 117, 279, 243, 313, 314, + /* 810 */ 315, 316, 317, 318, 145, 320, 41, 293, 323, 243, + /* 820 */ 243, 58, 327, 328, 329, 199, 200, 201, 202, 203, + /* 830 */ 204, 205, 206, 207, 208, 271, 148, 149, 150, 209, + /* 840 */ 210, 153, 347, 279, 243, 243, 158, 85, 293, 85, + /* 850 */ 88, 243, 88, 289, 0, 212, 272, 293, 85, 171, + /* 860 */ 250, 88, 174, 47, 176, 177, 178, 179, 180, 293, + /* 870 */ 293, 250, 262, 309, 0, 243, 22, 313, 314, 315, + /* 880 */ 316, 317, 318, 262, 320, 250, 250, 323, 0, 279, + /* 890 */ 185, 327, 328, 329, 293, 293, 22, 262, 262, 211, + /* 900 */ 279, 293, 338, 271, 1, 2, 85, 243, 210, 88, + /* 910 */ 22, 279, 301, 41, 279, 279, 47, 41, 196, 197, + /* 920 */ 244, 289, 41, 41, 358, 293, 41, 81, 41, 113, + /* 930 */ 41, 41, 260, 64, 41, 271, 250, 91, 349, 305, + /* 940 */ 243, 309, 343, 279, 181, 313, 314, 315, 316, 317, + /* 950 */ 318, 271, 320, 289, 82, 323, 41, 293, 82, 327, + /* 960 */ 328, 329, 249, 82, 82, 279, 251, 82, 271, 82, + /* 970 */ 338, 82, 82, 309, 228, 82, 279, 313, 314, 315, + /* 980 */ 316, 317, 318, 297, 320, 41, 289, 323, 243, 41, + /* 990 */ 293, 327, 328, 329, 297, 312, 282, 82, 41, 41, + /* 1000 */ 337, 352, 338, 317, 352, 230, 309, 352, 340, 41, + /* 1010 */ 313, 314, 315, 316, 317, 318, 271, 320, 332, 333, + /* 1020 */ 334, 213, 336, 307, 279, 339, 82, 20, 250, 45, + /* 1030 */ 82, 306, 47, 257, 289, 299, 339, 351, 293, 82, + /* 1040 */ 82, 355, 297, 250, 250, 154, 40, 287, 351, 139, + /* 1050 */ 82, 285, 355, 285, 309, 250, 20, 245, 313, 314, + /* 1060 */ 315, 316, 317, 318, 245, 320, 243, 20, 303, 255, + /* 1070 */ 289, 20, 255, 94, 95, 96, 97, 98, 99, 100, + /* 1080 */ 101, 102, 103, 104, 339, 106, 107, 108, 109, 110, + /* 1090 */ 111, 296, 20, 255, 271, 298, 351, 296, 255, 279, + /* 1100 */ 355, 20, 279, 290, 255, 255, 243, 250, 255, 245, + /* 1110 */ 271, 271, 289, 271, 64, 271, 293, 250, 271, 271, + /* 1120 */ 245, 293, 271, 271, 293, 303, 271, 271, 163, 271, + /* 1130 */ 253, 302, 309, 253, 271, 290, 313, 314, 315, 316, + /* 1140 */ 317, 318, 279, 320, 250, 253, 323, 279, 289, 253, + /* 1150 */ 327, 328, 289, 218, 294, 293, 293, 296, 142, 294, + /* 1160 */ 253, 253, 291, 293, 267, 243, 20, 294, 290, 219, + /* 1170 */ 225, 345, 309, 348, 279, 348, 313, 314, 315, 316, + /* 1180 */ 317, 318, 147, 320, 243, 279, 323, 214, 210, 20, + /* 1190 */ 327, 328, 293, 271, 293, 312, 294, 293, 293, 279, + /* 1200 */ 40, 279, 227, 229, 232, 307, 81, 81, 275, 250, + /* 1210 */ 344, 289, 271, 261, 330, 293, 253, 304, 265, 300, + /* 1220 */ 279, 342, 311, 254, 241, 245, 265, 265, 0, 0, + /* 1230 */ 289, 309, 40, 0, 293, 313, 314, 315, 316, 317, + /* 1240 */ 318, 0, 320, 326, 72, 359, 47, 47, 175, 47, + /* 1250 */ 309, 19, 47, 353, 313, 314, 315, 316, 317, 318, + /* 1260 */ 243, 320, 175, 354, 323, 33, 354, 353, 0, 328, + /* 1270 */ 12, 13, 354, 47, 353, 175, 0, 45, 356, 357, + /* 1280 */ 22, 47, 175, 51, 52, 53, 54, 55, 271, 0, + /* 1290 */ 47, 0, 243, 276, 47, 0, 279, 47, 0, 81, + /* 1300 */ 160, 159, 22, 113, 156, 47, 289, 0, 0, 152, + /* 1310 */ 293, 0, 80, 151, 0, 83, 44, 0, 0, 0, + /* 1320 */ 271, 0, 64, 0, 0, 276, 309, 47, 279, 0, + /* 1330 */ 313, 314, 315, 316, 317, 318, 0, 320, 289, 4, + /* 1340 */ 0, 0, 293, 0, 64, 0, 0, 0, 116, 0, + /* 1350 */ 0, 0, 0, 40, 19, 0, 243, 0, 309, 0, + /* 1360 */ 0, 103, 313, 314, 315, 316, 317, 318, 33, 320, + /* 1370 */ 0, 113, 0, 141, 37, 22, 144, 0, 0, 0, + /* 1380 */ 45, 0, 0, 103, 271, 50, 0, 14, 40, 14, + /* 1390 */ 55, 0, 279, 113, 162, 41, 164, 0, 0, 37, + /* 1400 */ 44, 38, 289, 0, 37, 44, 293, 147, 0, 243, + /* 1410 */ 0, 0, 0, 37, 156, 80, 0, 59, 83, 0, + /* 1420 */ 37, 243, 309, 0, 0, 45, 313, 314, 315, 316, + /* 1430 */ 317, 318, 47, 320, 47, 45, 156, 271, 37, 181, + /* 1440 */ 45, 47, 37, 47, 45, 279, 37, 0, 0, 271, + /* 1450 */ 192, 193, 194, 0, 276, 289, 0, 279, 90, 293, + /* 1460 */ 47, 181, 182, 350, 22, 0, 41, 289, 47, 47, + /* 1470 */ 0, 293, 88, 47, 243, 309, 47, 41, 47, 313, + /* 1480 */ 314, 315, 316, 317, 318, 47, 320, 309, 47, 22, + /* 1490 */ 0, 313, 314, 315, 316, 317, 318, 22, 320, 48, + /* 1500 */ 0, 22, 271, 0, 47, 22, 0, 276, 22, 33, + /* 1510 */ 279, 20, 0, 47, 145, 0, 22, 0, 0, 0, + /* 1520 */ 289, 45, 243, 357, 293, 161, 0, 51, 52, 53, + /* 1530 */ 54, 55, 37, 145, 142, 81, 81, 243, 0, 81, + /* 1540 */ 309, 82, 140, 143, 313, 314, 315, 316, 317, 318, + /* 1550 */ 271, 320, 145, 81, 140, 276, 80, 37, 279, 83, + /* 1560 */ 91, 81, 41, 82, 41, 271, 44, 82, 289, 81, + /* 1570 */ 22, 82, 293, 279, 41, 82, 41, 243, 81, 81, + /* 1580 */ 215, 44, 81, 289, 44, 81, 215, 293, 309, 82, + /* 1590 */ 41, 82, 313, 314, 315, 316, 317, 318, 44, 320, + /* 1600 */ 41, 44, 44, 309, 41, 271, 82, 313, 314, 315, + /* 1610 */ 316, 317, 318, 279, 320, 209, 140, 243, 142, 215, + /* 1620 */ 144, 82, 146, 289, 47, 2, 47, 293, 47, 47, + /* 1630 */ 47, 47, 41, 181, 81, 22, 243, 82, 82, 44, + /* 1640 */ 164, 81, 81, 309, 82, 271, 81, 313, 314, 315, + /* 1650 */ 316, 317, 318, 279, 320, 81, 44, 183, 92, 22, + /* 1660 */ 93, 81, 47, 289, 271, 47, 81, 293, 82, 82, + /* 1670 */ 81, 47, 279, 47, 82, 81, 47, 47, 82, 81, + /* 1680 */ 105, 82, 289, 309, 81, 81, 293, 313, 314, 315, + /* 1690 */ 316, 317, 318, 243, 320, 105, 47, 81, 81, 22, + /* 1700 */ 59, 113, 309, 58, 47, 105, 313, 314, 315, 316, + /* 1710 */ 317, 318, 105, 320, 64, 79, 41, 47, 47, 47, + /* 1720 */ 22, 271, 64, 47, 0, 243, 47, 47, 47, 279, + /* 1730 */ 47, 47, 47, 47, 47, 0, 47, 47, 47, 289, + /* 1740 */ 45, 37, 37, 293, 47, 45, 0, 45, 47, 37, + /* 1750 */ 0, 45, 37, 271, 47, 0, 47, 46, 0, 309, + /* 1760 */ 0, 279, 21, 313, 314, 315, 316, 317, 318, 22, + /* 1770 */ 320, 289, 21, 243, 22, 293, 22, 20, 360, 360, + /* 1780 */ 360, 360, 360, 360, 360, 360, 360, 360, 243, 360, + /* 1790 */ 360, 309, 360, 360, 360, 313, 314, 315, 316, 317, + /* 1800 */ 318, 271, 320, 360, 360, 360, 360, 360, 360, 279, + /* 1810 */ 360, 360, 360, 360, 360, 360, 271, 360, 360, 289, + /* 1820 */ 360, 243, 360, 293, 279, 360, 360, 360, 360, 360, + /* 1830 */ 360, 360, 360, 360, 289, 360, 243, 360, 293, 309, + /* 1840 */ 360, 360, 360, 313, 314, 315, 316, 317, 318, 271, + /* 1850 */ 320, 360, 360, 243, 309, 360, 360, 279, 313, 314, + /* 1860 */ 315, 316, 317, 318, 271, 320, 360, 289, 360, 360, + /* 1870 */ 360, 293, 279, 360, 360, 360, 360, 360, 360, 360, + /* 1880 */ 360, 271, 289, 360, 360, 360, 293, 309, 360, 279, + /* 1890 */ 360, 313, 314, 315, 316, 317, 318, 360, 320, 289, + /* 1900 */ 360, 360, 309, 293, 360, 360, 313, 314, 315, 316, + /* 1910 */ 317, 318, 360, 320, 360, 360, 243, 360, 360, 309, + /* 1920 */ 360, 360, 360, 313, 314, 315, 316, 317, 318, 360, + /* 1930 */ 320, 243, 360, 360, 360, 360, 360, 360, 360, 360, + /* 1940 */ 360, 360, 360, 360, 271, 360, 360, 360, 360, 360, + /* 1950 */ 360, 360, 279, 360, 360, 360, 360, 360, 360, 271, + /* 1960 */ 360, 360, 289, 360, 360, 360, 293, 279, 360, 360, + /* 1970 */ 360, 360, 360, 360, 360, 360, 360, 289, 360, 360, + /* 1980 */ 360, 293, 309, 243, 360, 360, 313, 314, 315, 316, + /* 1990 */ 317, 318, 360, 320, 360, 360, 360, 309, 360, 360, + /* 2000 */ 360, 313, 314, 315, 316, 317, 318, 360, 320, 360, + /* 2010 */ 360, 271, 360, 360, 360, 243, 360, 360, 360, 279, + /* 2020 */ 360, 360, 360, 360, 360, 360, 360, 360, 360, 289, + /* 2030 */ 360, 360, 360, 293, 360, 360, 360, 360, 360, 360, + /* 2040 */ 360, 360, 360, 271, 360, 360, 360, 360, 360, 309, + /* 2050 */ 360, 279, 360, 313, 314, 315, 316, 317, 318, 360, + /* 2060 */ 320, 289, 360, 243, 360, 293, 360, 360, 360, 360, + /* 2070 */ 360, 360, 250, 360, 360, 360, 360, 360, 360, 360, + /* 2080 */ 360, 309, 360, 360, 360, 313, 314, 315, 316, 317, + /* 2090 */ 318, 271, 320, 360, 360, 360, 360, 360, 360, 279, + /* 2100 */ 360, 279, 360, 360, 360, 360, 360, 360, 360, 289, + /* 2110 */ 360, 360, 360, 293, 360, 360, 360, 360, 360, 297, + /* 2120 */ 360, 360, 360, 360, 360, 360, 360, 360, 360, 309, + /* 2130 */ 360, 360, 360, 313, 314, 315, 316, 317, 318, 317, + /* 2140 */ 320, 360, 360, 360, 360, 360, 360, 360, 360, 360, + /* 2150 */ 360, 360, 360, 360, 332, 333, 334, 360, 336, 360, + /* 2160 */ 360, 339, 360, 360, 360, 360, 360, 360, 360, 360, + /* 2170 */ 360, 360, 360, 351, 360, 360, 360, 355, }; #define YY_SHIFT_COUNT (618) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (1931) +#define YY_SHIFT_MAX (1760) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 688, 0, 0, 48, 96, 96, 96, 96, 253, 253, /* 10 */ 96, 96, 301, 349, 506, 349, 349, 349, 349, 349, /* 20 */ 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - /* 30 */ 349, 349, 349, 349, 349, 349, 349, 349, 144, 144, - /* 40 */ 102, 102, 102, 1931, 1931, 1931, 1931, 372, 124, 214, - /* 50 */ 58, 58, 260, 260, 172, 214, 214, 58, 58, 58, - /* 60 */ 58, 58, 58, 58, 37, 58, 58, 186, 228, 259, - /* 70 */ 186, 58, 58, 186, 58, 186, 186, 259, 186, 58, - /* 80 */ 255, 542, 724, 758, 758, 189, 236, 838, 838, 838, - /* 90 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 100 */ 838, 838, 838, 838, 838, 838, 291, 126, 354, 354, - /* 110 */ 397, 516, 483, 483, 483, 525, 516, 313, 259, 186, - /* 120 */ 186, 259, 377, 343, 243, 243, 243, 243, 243, 243, - /* 130 */ 243, 340, 141, 405, 76, 195, 57, 215, 500, 545, - /* 140 */ 579, 179, 694, 700, 617, 678, 617, 455, 455, 455, - /* 150 */ 657, 666, 799, 1002, 979, 980, 876, 1002, 1002, 997, - /* 160 */ 910, 910, 1002, 1037, 1037, 1042, 37, 259, 37, 1056, - /* 170 */ 1058, 37, 1056, 37, 313, 1070, 37, 37, 1002, 37, - /* 180 */ 1037, 186, 186, 186, 186, 186, 186, 186, 186, 186, - /* 190 */ 186, 186, 1002, 1037, 1045, 1045, 1042, 255, 956, 259, - /* 200 */ 255, 1002, 1056, 255, 313, 1070, 255, 1106, 922, 933, - /* 210 */ 1045, 922, 933, 1045, 1045, 186, 936, 1009, 960, 799, - /* 220 */ 966, 313, 1158, 1140, 954, 957, 949, 954, 957, 954, - /* 230 */ 957, 1104, 933, 1045, 1045, 933, 1045, 1054, 313, 1070, - /* 240 */ 255, 377, 255, 313, 1143, 343, 1002, 255, 1037, 2152, - /* 250 */ 2152, 2152, 2152, 2152, 2152, 2152, 577, 1458, 231, 353, - /* 260 */ 3, 19, 316, 256, 496, 719, 777, 112, 112, 112, - /* 270 */ 112, 112, 112, 112, 112, 135, 438, 344, 396, 355, - /* 280 */ 625, 566, 642, 642, 642, 642, 555, 808, 711, 813, - /* 290 */ 815, 819, 872, 887, 913, 809, 855, 867, 892, 914, - /* 300 */ 723, 710, 772, 902, 766, 903, 873, 905, 907, 926, - /* 310 */ 929, 931, 826, 875, 934, 952, 962, 965, 974, 976, - /* 320 */ 859, 935, 1260, 1261, 1222, 1263, 1193, 1266, 1220, 1093, - /* 330 */ 1223, 1224, 1227, 1094, 1275, 1237, 1238, 1113, 1289, 1115, - /* 340 */ 1291, 1245, 1293, 1247, 1295, 1250, 1298, 1218, 1141, 1145, - /* 350 */ 1187, 1146, 1305, 1312, 1162, 1166, 1318, 1322, 1281, 1326, - /* 360 */ 1327, 1328, 1329, 1330, 1331, 1334, 1335, 1336, 1338, 1339, - /* 370 */ 1340, 1341, 1343, 1344, 1345, 1347, 1348, 1309, 1351, 1352, - /* 380 */ 1353, 1355, 1356, 1365, 1350, 1374, 1375, 1376, 1377, 1379, - /* 390 */ 1380, 1342, 1346, 1354, 1367, 1349, 1370, 1357, 1385, 1359, - /* 400 */ 1361, 1387, 1388, 1389, 1362, 1244, 1392, 1402, 1368, 1407, - /* 410 */ 1360, 1408, 1409, 1366, 1369, 1378, 1411, 1381, 1371, 1393, - /* 420 */ 1412, 1382, 1386, 1395, 1433, 1390, 1394, 1398, 1438, 1441, - /* 430 */ 1443, 1444, 1314, 1358, 1400, 1423, 1448, 1403, 1406, 1421, - /* 440 */ 1424, 1410, 1414, 1425, 1427, 1428, 1449, 1436, 1466, 1462, - /* 450 */ 1422, 1485, 1465, 1442, 1488, 1471, 1492, 1472, 1475, 1496, - /* 460 */ 1363, 1450, 1498, 1372, 1477, 1373, 1397, 1501, 1502, 1505, - /* 470 */ 1401, 1506, 1434, 1480, 1383, 1478, 1479, 1315, 1452, 1494, - /* 480 */ 1455, 1459, 1461, 1464, 1467, 1507, 1499, 1503, 1469, 1510, - /* 490 */ 1384, 1473, 1483, 1520, 1396, 1513, 1524, 1487, 1529, 1391, - /* 500 */ 1489, 1525, 1526, 1527, 1528, 1530, 1531, 1489, 1574, 1399, - /* 510 */ 1538, 1500, 1504, 1512, 1537, 1511, 1515, 1540, 1575, 1418, - /* 520 */ 1534, 1532, 1536, 1535, 1539, 1468, 1542, 1608, 1572, 1481, - /* 530 */ 1543, 1519, 1568, 1581, 1545, 1546, 1548, 1597, 1549, 1541, - /* 540 */ 1550, 1580, 1589, 1564, 1566, 1599, 1569, 1567, 1604, 1571, - /* 550 */ 1573, 1607, 1577, 1578, 1609, 1582, 1554, 1556, 1559, 1560, - /* 560 */ 1645, 1576, 1585, 1587, 1623, 1590, 1518, 1650, 1617, 1615, - /* 570 */ 1638, 1622, 1610, 1646, 1641, 1647, 1648, 1649, 1652, 1669, - /* 580 */ 1653, 1654, 1628, 1410, 1655, 1414, 1656, 1657, 1658, 1659, - /* 590 */ 1660, 1662, 1710, 1664, 1670, 1679, 1723, 1680, 1681, 1691, - /* 600 */ 1730, 1684, 1693, 1703, 1750, 1695, 1698, 1707, 1745, 1699, - /* 610 */ 1701, 1748, 1751, 1732, 1731, 1733, 1734, 1736, 1738, + /* 30 */ 349, 349, 349, 349, 349, 349, 349, 349, 349, 243, + /* 40 */ 243, 5, 5, 5, 1258, 1258, 1258, 310, 97, 169, + /* 50 */ 85, 85, 51, 51, 244, 169, 169, 85, 85, 85, + /* 60 */ 85, 85, 85, 85, 78, 85, 85, 159, 319, 159, + /* 70 */ 85, 85, 159, 337, 85, 159, 159, 319, 159, 85, + /* 80 */ 207, 542, 14, 626, 626, 230, 237, 1280, 1280, 1280, + /* 90 */ 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + /* 100 */ 1280, 1280, 1280, 1280, 1280, 1280, 385, 227, 298, 298, + /* 110 */ 561, 326, 658, 482, 482, 482, 326, 538, 319, 159, + /* 120 */ 159, 319, 325, 590, 979, 979, 979, 979, 979, 979, + /* 130 */ 979, 1232, 397, 333, 570, 413, 42, 290, 135, 536, + /* 140 */ 739, 574, 186, 669, 630, 698, 630, 137, 137, 137, + /* 150 */ 643, 705, 808, 1007, 984, 985, 891, 1007, 1007, 1006, + /* 160 */ 910, 910, 1007, 1036, 1036, 1047, 78, 319, 78, 1051, + /* 170 */ 1072, 78, 1051, 78, 538, 1081, 78, 78, 1007, 78, + /* 180 */ 1036, 159, 159, 159, 159, 159, 159, 159, 159, 159, + /* 190 */ 159, 159, 1007, 1036, 1050, 1050, 1047, 207, 965, 319, + /* 200 */ 207, 1007, 1051, 207, 538, 1081, 207, 935, 1050, 935, + /* 210 */ 1050, 1016, 538, 1081, 207, 325, 207, 538, 1146, 950, + /* 220 */ 935, 1050, 1050, 950, 935, 1050, 1050, 159, 945, 1035, + /* 230 */ 973, 808, 978, 538, 1169, 1160, 974, 975, 972, 974, + /* 240 */ 975, 974, 975, 1125, 1126, 590, 1007, 207, 1036, 2178, + /* 250 */ 2178, 2178, 2178, 2178, 2178, 2178, 685, 1476, 484, 1335, + /* 260 */ 32, 2, 314, 329, 28, 255, 408, 212, 212, 212, + /* 270 */ 212, 212, 212, 212, 212, 271, 123, 525, 82, 312, + /* 280 */ 9, 483, 19, 19, 19, 19, 503, 510, 762, 764, + /* 290 */ 773, 821, 854, 874, 888, 709, 533, 872, 876, 881, + /* 300 */ 882, 885, 887, 412, 816, 889, 903, 722, 746, 775, + /* 310 */ 890, 763, 893, 355, 915, 944, 948, 957, 958, 968, + /* 320 */ 846, 869, 1228, 1229, 1192, 1233, 1172, 1241, 1199, 1073, + /* 330 */ 1200, 1202, 1205, 1087, 1268, 1226, 1234, 1100, 1276, 1107, + /* 340 */ 1289, 1243, 1291, 1247, 1295, 1250, 1298, 1218, 1140, 1142, + /* 350 */ 1190, 1148, 1307, 1308, 1157, 1162, 1311, 1314, 1272, 1317, + /* 360 */ 1318, 1319, 1321, 1323, 1324, 1329, 1336, 1340, 1341, 1343, + /* 370 */ 1345, 1346, 1347, 1349, 1350, 1351, 1352, 1313, 1355, 1357, + /* 380 */ 1359, 1360, 1370, 1372, 1353, 1377, 1378, 1379, 1381, 1382, + /* 390 */ 1386, 1348, 1337, 1354, 1373, 1356, 1375, 1361, 1391, 1363, + /* 400 */ 1362, 1397, 1398, 1403, 1367, 1260, 1408, 1410, 1376, 1411, + /* 410 */ 1358, 1412, 1416, 1385, 1380, 1383, 1419, 1387, 1390, 1401, + /* 420 */ 1423, 1394, 1395, 1405, 1424, 1396, 1399, 1409, 1447, 1448, + /* 430 */ 1453, 1456, 1368, 1384, 1413, 1442, 1465, 1421, 1422, 1426, + /* 440 */ 1429, 1425, 1436, 1431, 1438, 1441, 1470, 1467, 1490, 1475, + /* 450 */ 1451, 1500, 1479, 1457, 1503, 1483, 1506, 1486, 1491, 1512, + /* 460 */ 1369, 1466, 1515, 1364, 1494, 1388, 1392, 1517, 1518, 1519, + /* 470 */ 1407, 1526, 1454, 1495, 1402, 1455, 1459, 1458, 1400, 1472, + /* 480 */ 1538, 1520, 1414, 1480, 1469, 1522, 1521, 1523, 1365, 1481, + /* 490 */ 1485, 1488, 1548, 1533, 1489, 1497, 1498, 1501, 1493, 1535, + /* 500 */ 1537, 1540, 1504, 1549, 1371, 1507, 1509, 1554, 1406, 1559, + /* 510 */ 1557, 1558, 1524, 1563, 1404, 1539, 1577, 1579, 1581, 1582, + /* 520 */ 1583, 1584, 1539, 1623, 1452, 1591, 1553, 1555, 1560, 1556, + /* 530 */ 1561, 1562, 1595, 1565, 1574, 1612, 1613, 1474, 1580, 1566, + /* 540 */ 1586, 1615, 1618, 1585, 1587, 1624, 1589, 1592, 1626, 1594, + /* 550 */ 1596, 1629, 1598, 1599, 1630, 1603, 1575, 1590, 1600, 1607, + /* 560 */ 1637, 1567, 1604, 1616, 1649, 1617, 1588, 1677, 1641, 1645, + /* 570 */ 1657, 1650, 1636, 1675, 1670, 1671, 1672, 1676, 1679, 1698, + /* 580 */ 1680, 1681, 1658, 1425, 1683, 1436, 1684, 1685, 1686, 1687, + /* 590 */ 1689, 1690, 1724, 1691, 1695, 1704, 1735, 1697, 1700, 1705, + /* 600 */ 1746, 1701, 1702, 1712, 1750, 1707, 1706, 1715, 1755, 1709, + /* 610 */ 1711, 1758, 1760, 1747, 1741, 1752, 1754, 1751, 1757, }; #define YY_REDUCE_COUNT (255) -#define YY_REDUCE_MIN (-324) -#define YY_REDUCE_MAX (1796) +#define YY_REDUCE_MIN (-332) +#define YY_REDUCE_MAX (1822) static const short yy_reduce_ofst[] = { - /* 0 */ 162, -241, 278, 439, 663, 725, 757, 817, 849, 900, - /* 10 */ -178, 930, 561, 963, 993, 505, 1044, 1053, 1107, 1147, - /* 20 */ 1163, 1211, 1243, 1273, 1324, 1364, 1404, 1419, 1470, 1482, - /* 30 */ 1522, 1533, 1584, 1614, 1644, 1676, 1709, 1742, 1766, 1796, - /* 40 */ 282, -213, 578, -270, -266, -264, -176, -284, 281, 424, - /* 50 */ 306, 362, -91, -46, -255, -192, 71, -226, -199, 150, - /* 60 */ 302, 324, 463, 467, -1, 471, 485, 28, 45, -190, - /* 70 */ 56, 528, 531, 197, 481, 192, 352, 100, 196, 538, - /* 80 */ -225, -242, -324, -324, -324, -64, -48, 77, 168, 257, - /* 90 */ 311, 315, 341, 416, 441, 465, 498, 502, 518, 546, - /* 100 */ 554, 559, 560, 565, 612, 643, 97, -247, 75, 140, - /* 110 */ -125, -232, -252, -204, -37, -100, 106, 142, 394, 512, - /* 120 */ 573, 218, 284, 453, -261, 294, 325, 330, 335, 444, - /* 130 */ 557, 271, 381, 582, 503, 572, 639, 610, 684, 684, - /* 140 */ 720, 744, 689, 685, 661, 661, 661, 649, 653, 655, - /* 150 */ 669, 684, 713, 773, 718, 769, 729, 781, 782, 746, - /* 160 */ 770, 774, 801, 816, 820, 760, 811, 779, 814, 784, - /* 170 */ 780, 827, 786, 832, 810, 803, 836, 839, 847, 843, - /* 180 */ 854, 829, 830, 831, 833, 834, 837, 840, 841, 842, - /* 190 */ 844, 845, 853, 862, 821, 824, 818, 865, 822, 835, - /* 200 */ 868, 879, 851, 870, 857, 860, 886, 846, 804, 863, - /* 210 */ 856, 805, 866, 861, 877, 684, 823, 828, 848, 869, - /* 220 */ 661, 896, 871, 864, 858, 850, 852, 874, 878, 881, - /* 230 */ 880, 882, 893, 898, 899, 901, 904, 895, 920, 912, - /* 240 */ 968, 938, 969, 928, 950, 971, 977, 973, 984, 937, - /* 250 */ 925, 972, 989, 994, 987, 1008, + /* 0 */ -232, -240, 61, 284, 495, 564, 632, 664, 697, 745, + /* 10 */ 823, 863, -151, 922, 941, 1017, 1049, 1113, 1166, 1178, + /* 20 */ 335, 1231, 1279, 1294, 1334, 1374, 1393, 1450, 1482, 1530, + /* 30 */ 1545, 1578, 1593, 1610, 1673, 1688, 1740, 1772, 1820, 686, + /* 40 */ 1822, -200, 458, 463, -272, 256, 259, -288, -241, 220, + /* 50 */ 341, 470, -244, -122, -332, -254, -4, 57, 153, 367, + /* 60 */ 455, 514, 521, 523, -118, 527, 610, -212, -89, -141, + /* 70 */ 621, 635, 89, -225, 636, 75, 185, 172, 195, 457, + /* 80 */ -43, -109, 86, 86, 86, -142, -84, 10, 29, 56, + /* 90 */ 261, 323, 352, 416, 438, 440, 479, 485, 486, 524, + /* 100 */ 555, 576, 577, 601, 602, 608, 149, 101, 145, 223, + /* 110 */ -72, 219, -229, -190, 246, 321, 331, -197, -289, 88, + /* 120 */ 443, 452, 359, 451, -220, 389, 414, 496, 498, 531, + /* 130 */ 584, 611, 676, 672, 566, 589, 634, 599, 680, 680, + /* 140 */ 713, 715, 714, 683, 663, 663, 663, 649, 652, 655, + /* 150 */ 668, 680, 716, 778, 725, 776, 736, 793, 794, 760, + /* 160 */ 766, 768, 805, 812, 819, 765, 814, 781, 817, 795, + /* 170 */ 797, 838, 801, 843, 820, 813, 849, 850, 857, 853, + /* 180 */ 864, 839, 840, 842, 844, 847, 848, 851, 852, 855, + /* 190 */ 856, 858, 867, 875, 828, 831, 822, 877, 829, 859, + /* 200 */ 880, 894, 861, 892, 868, 845, 896, 860, 862, 865, + /* 210 */ 870, 871, 895, 878, 907, 897, 908, 906, 883, 825, + /* 220 */ 873, 899, 901, 827, 902, 904, 905, 680, 826, 866, + /* 230 */ 879, 898, 663, 920, 911, 884, 909, 900, 886, 912, + /* 240 */ 914, 918, 921, 917, 933, 952, 959, 963, 980, 919, + /* 250 */ 913, 953, 961, 962, 969, 983, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, @@ -765,7 +766,7 @@ static const YYACTIONTYPE yy_default[] = { /* 80 */ 1427, 1567, 1360, 1734, 1360, 1360, 1360, 1360, 1360, 1360, /* 90 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 100 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - /* 110 */ 1429, 1360, 1745, 1745, 1745, 1427, 1360, 1360, 1360, 1360, + /* 110 */ 1429, 1360, 1427, 1745, 1745, 1745, 1360, 1360, 1360, 1360, /* 120 */ 1360, 1360, 1523, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 130 */ 1360, 1603, 1360, 1360, 1811, 1360, 1609, 1769, 1360, 1360, /* 140 */ 1360, 1360, 1476, 1761, 1737, 1751, 1738, 1796, 1796, 1796, @@ -774,18 +775,18 @@ static const YYACTIONTYPE yy_default[] = { /* 170 */ 1360, 1429, 1360, 1429, 1360, 1360, 1429, 1429, 1360, 1429, /* 180 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 190 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1427, 1605, 1360, - /* 200 */ 1427, 1360, 1360, 1427, 1360, 1360, 1427, 1360, 1776, 1774, - /* 210 */ 1360, 1776, 1774, 1360, 1360, 1360, 1788, 1784, 1767, 1765, - /* 220 */ 1751, 1360, 1360, 1360, 1802, 1798, 1814, 1802, 1798, 1802, - /* 230 */ 1798, 1360, 1774, 1360, 1360, 1774, 1360, 1580, 1360, 1360, - /* 240 */ 1427, 1360, 1427, 1360, 1492, 1360, 1360, 1427, 1360, 1597, + /* 200 */ 1427, 1360, 1360, 1427, 1360, 1360, 1427, 1774, 1360, 1774, + /* 210 */ 1360, 1580, 1360, 1360, 1427, 1360, 1427, 1360, 1360, 1776, + /* 220 */ 1774, 1360, 1360, 1776, 1774, 1360, 1360, 1360, 1788, 1784, + /* 230 */ 1767, 1765, 1751, 1360, 1360, 1360, 1802, 1798, 1814, 1802, + /* 240 */ 1798, 1802, 1798, 1360, 1492, 1360, 1360, 1427, 1360, 1597, /* 250 */ 1611, 1526, 1526, 1526, 1430, 1365, 1360, 1360, 1360, 1360, /* 260 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1678, 1787, 1786, /* 270 */ 1710, 1709, 1708, 1706, 1677, 1488, 1360, 1360, 1360, 1360, /* 280 */ 1360, 1360, 1671, 1672, 1670, 1669, 1360, 1360, 1360, 1360, - /* 290 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1735, - /* 300 */ 1360, 1799, 1803, 1360, 1360, 1360, 1654, 1360, 1360, 1360, - /* 310 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + /* 290 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + /* 300 */ 1360, 1360, 1360, 1360, 1360, 1360, 1735, 1360, 1799, 1803, + /* 310 */ 1360, 1360, 1360, 1654, 1360, 1360, 1360, 1360, 1360, 1360, /* 320 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 330 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 340 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, @@ -801,13 +802,13 @@ static const YYACTIONTYPE yy_default[] = { /* 440 */ 1360, 1457, 1456, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 450 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, /* 460 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - /* 470 */ 1360, 1360, 1360, 1360, 1360, 1758, 1768, 1360, 1360, 1360, - /* 480 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1654, 1360, 1785, - /* 490 */ 1360, 1744, 1740, 1360, 1360, 1736, 1360, 1360, 1797, 1360, - /* 500 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1730, 1360, - /* 510 */ 1703, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1665, - /* 520 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - /* 530 */ 1360, 1360, 1653, 1360, 1694, 1360, 1360, 1360, 1360, 1360, + /* 470 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + /* 480 */ 1360, 1360, 1360, 1360, 1360, 1360, 1758, 1768, 1360, 1360, + /* 490 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + /* 500 */ 1360, 1654, 1360, 1785, 1360, 1744, 1740, 1360, 1360, 1736, + /* 510 */ 1653, 1360, 1360, 1797, 1360, 1360, 1360, 1360, 1360, 1360, + /* 520 */ 1360, 1360, 1360, 1730, 1360, 1703, 1694, 1360, 1360, 1360, + /* 530 */ 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1665, 1360, 1360, /* 540 */ 1360, 1360, 1360, 1520, 1360, 1360, 1360, 1360, 1360, 1360, /* 550 */ 1360, 1360, 1360, 1360, 1360, 1360, 1505, 1503, 1502, 1501, /* 560 */ 1360, 1498, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, @@ -1438,7 +1439,7 @@ static const char *const yyTokenName[] = { /* 273 */ "signed_literal", /* 274 */ "create_subtable_clause", /* 275 */ "specific_tags_opt", - /* 276 */ "literal_list", + /* 276 */ "expression_list", /* 277 */ "drop_table_clause", /* 278 */ "col_name_list", /* 279 */ "table_name", @@ -1458,21 +1459,21 @@ static const char *const yyTokenName[] = { /* 293 */ "duration_literal", /* 294 */ "sliding_opt", /* 295 */ "func", - /* 296 */ "expression_list", - /* 297 */ "topic_name", - /* 298 */ "query_expression", - /* 299 */ "cgroup_name", - /* 300 */ "analyze_opt", - /* 301 */ "explain_options", - /* 302 */ "agg_func_opt", - /* 303 */ "bufsize_opt", - /* 304 */ "stream_name", - /* 305 */ "stream_options", - /* 306 */ "into_opt", - /* 307 */ "dnode_list", - /* 308 */ "where_clause_opt", - /* 309 */ "signed", - /* 310 */ "literal_func", + /* 296 */ "topic_name", + /* 297 */ "query_expression", + /* 298 */ "cgroup_name", + /* 299 */ "analyze_opt", + /* 300 */ "explain_options", + /* 301 */ "agg_func_opt", + /* 302 */ "bufsize_opt", + /* 303 */ "stream_name", + /* 304 */ "stream_options", + /* 305 */ "into_opt", + /* 306 */ "dnode_list", + /* 307 */ "where_clause_opt", + /* 308 */ "signed", + /* 309 */ "literal_func", + /* 310 */ "literal_list", /* 311 */ "table_alias", /* 312 */ "column_alias", /* 313 */ "expression", @@ -1654,7 +1655,7 @@ static const char *const yyRuleName[] = { /* 122 */ "alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal", /* 123 */ "multi_create_clause ::= create_subtable_clause", /* 124 */ "multi_create_clause ::= multi_create_clause create_subtable_clause", - /* 125 */ "create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options", + /* 125 */ "create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options", /* 126 */ "multi_drop_clause ::= drop_table_clause", /* 127 */ "multi_drop_clause ::= multi_drop_clause drop_table_clause", /* 128 */ "drop_table_clause ::= exists_opt full_table_name", @@ -2132,13 +2133,13 @@ static void yy_destructor( case 293: /* duration_literal */ case 294: /* sliding_opt */ case 295: /* func */ - case 298: /* query_expression */ - case 301: /* explain_options */ - case 305: /* stream_options */ - case 306: /* into_opt */ - case 308: /* where_clause_opt */ - case 309: /* signed */ - case 310: /* literal_func */ + case 297: /* query_expression */ + case 300: /* explain_options */ + case 304: /* stream_options */ + case 305: /* into_opt */ + case 307: /* where_clause_opt */ + case 308: /* signed */ + case 309: /* literal_func */ case 313: /* expression */ case 314: /* pseudo_column */ case 315: /* column_reference */ @@ -2174,7 +2175,7 @@ static void yy_destructor( case 241: /* account_options */ case 242: /* alter_account_options */ case 244: /* alter_account_option */ - case 303: /* bufsize_opt */ + case 302: /* bufsize_opt */ { } @@ -2188,9 +2189,9 @@ static void yy_destructor( case 279: /* table_name */ case 289: /* function_name */ case 290: /* index_name */ - case 297: /* topic_name */ - case 299: /* cgroup_name */ - case 304: /* stream_name */ + case 296: /* topic_name */ + case 298: /* cgroup_name */ + case 303: /* stream_name */ case 311: /* table_alias */ case 312: /* column_alias */ case 318: /* star_func */ @@ -2209,8 +2210,8 @@ static void yy_destructor( break; case 253: /* not_exists_opt */ case 255: /* exists_opt */ - case 300: /* analyze_opt */ - case 302: /* agg_func_opt */ + case 299: /* analyze_opt */ + case 301: /* agg_func_opt */ case 340: /* set_quantifier_opt */ { @@ -2225,12 +2226,12 @@ static void yy_destructor( case 267: /* tags_def */ case 268: /* multi_drop_clause */ case 275: /* specific_tags_opt */ - case 276: /* literal_list */ + case 276: /* expression_list */ case 278: /* col_name_list */ case 281: /* func_name_list */ case 292: /* func_list */ - case 296: /* expression_list */ - case 307: /* dnode_list */ + case 306: /* dnode_list */ + case 310: /* literal_list */ case 319: /* star_func_para_list */ case 321: /* other_para_list */ case 341: /* select_list */ @@ -2700,7 +2701,7 @@ static const struct { { 269, -6 }, /* (122) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */ { 266, -1 }, /* (123) multi_create_clause ::= create_subtable_clause */ { 266, -2 }, /* (124) multi_create_clause ::= multi_create_clause create_subtable_clause */ - { 274, -10 }, /* (125) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options */ + { 274, -10 }, /* (125) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options */ { 268, -1 }, /* (126) multi_drop_clause ::= drop_table_clause */ { 268, -2 }, /* (127) multi_drop_clause ::= multi_drop_clause drop_table_clause */ { 277, -2 }, /* (128) drop_table_clause ::= exists_opt full_table_name */ @@ -2807,27 +2808,27 @@ static const struct { { 240, -2 }, /* (229) cmd ::= DESCRIBE full_table_name */ { 240, -3 }, /* (230) cmd ::= RESET QUERY CACHE */ { 240, -4 }, /* (231) cmd ::= EXPLAIN analyze_opt explain_options query_expression */ - { 300, 0 }, /* (232) analyze_opt ::= */ - { 300, -1 }, /* (233) analyze_opt ::= ANALYZE */ - { 301, 0 }, /* (234) explain_options ::= */ - { 301, -3 }, /* (235) explain_options ::= explain_options VERBOSE NK_BOOL */ - { 301, -3 }, /* (236) explain_options ::= explain_options RATIO NK_FLOAT */ + { 299, 0 }, /* (232) analyze_opt ::= */ + { 299, -1 }, /* (233) analyze_opt ::= ANALYZE */ + { 300, 0 }, /* (234) explain_options ::= */ + { 300, -3 }, /* (235) explain_options ::= explain_options VERBOSE NK_BOOL */ + { 300, -3 }, /* (236) explain_options ::= explain_options RATIO NK_FLOAT */ { 240, -6 }, /* (237) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */ { 240, -10 }, /* (238) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */ { 240, -4 }, /* (239) cmd ::= DROP FUNCTION exists_opt function_name */ - { 302, 0 }, /* (240) agg_func_opt ::= */ - { 302, -1 }, /* (241) agg_func_opt ::= AGGREGATE */ - { 303, 0 }, /* (242) bufsize_opt ::= */ - { 303, -2 }, /* (243) bufsize_opt ::= BUFSIZE NK_INTEGER */ + { 301, 0 }, /* (240) agg_func_opt ::= */ + { 301, -1 }, /* (241) agg_func_opt ::= AGGREGATE */ + { 302, 0 }, /* (242) bufsize_opt ::= */ + { 302, -2 }, /* (243) bufsize_opt ::= BUFSIZE NK_INTEGER */ { 240, -8 }, /* (244) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */ { 240, -4 }, /* (245) cmd ::= DROP STREAM exists_opt stream_name */ - { 306, 0 }, /* (246) into_opt ::= */ - { 306, -2 }, /* (247) into_opt ::= INTO full_table_name */ - { 305, 0 }, /* (248) stream_options ::= */ - { 305, -3 }, /* (249) stream_options ::= stream_options TRIGGER AT_ONCE */ - { 305, -3 }, /* (250) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ - { 305, -4 }, /* (251) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ - { 305, -3 }, /* (252) stream_options ::= stream_options WATERMARK duration_literal */ + { 305, 0 }, /* (246) into_opt ::= */ + { 305, -2 }, /* (247) into_opt ::= INTO full_table_name */ + { 304, 0 }, /* (248) stream_options ::= */ + { 304, -3 }, /* (249) stream_options ::= stream_options TRIGGER AT_ONCE */ + { 304, -3 }, /* (250) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ + { 304, -4 }, /* (251) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ + { 304, -3 }, /* (252) stream_options ::= stream_options WATERMARK duration_literal */ { 240, -3 }, /* (253) cmd ::= KILL CONNECTION NK_INTEGER */ { 240, -3 }, /* (254) cmd ::= KILL QUERY NK_INTEGER */ { 240, -3 }, /* (255) cmd ::= KILL TRANSACTION NK_INTEGER */ @@ -2835,8 +2836,8 @@ static const struct { { 240, -4 }, /* (257) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { 240, -4 }, /* (258) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ { 240, -3 }, /* (259) cmd ::= SPLIT VGROUP NK_INTEGER */ - { 307, -2 }, /* (260) dnode_list ::= DNODE NK_INTEGER */ - { 307, -3 }, /* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */ + { 306, -2 }, /* (260) dnode_list ::= DNODE NK_INTEGER */ + { 306, -3 }, /* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */ { 240, -3 }, /* (262) cmd ::= SYNCDB db_name REPLICA */ { 240, -4 }, /* (263) cmd ::= DELETE FROM full_table_name where_clause_opt */ { 240, -1 }, /* (264) cmd ::= query_expression */ @@ -2849,12 +2850,12 @@ static const struct { { 243, -1 }, /* (271) literal ::= NULL */ { 243, -1 }, /* (272) literal ::= NK_QUESTION */ { 293, -1 }, /* (273) duration_literal ::= NK_VARIABLE */ - { 309, -1 }, /* (274) signed ::= NK_INTEGER */ - { 309, -2 }, /* (275) signed ::= NK_PLUS NK_INTEGER */ - { 309, -2 }, /* (276) signed ::= NK_MINUS NK_INTEGER */ - { 309, -1 }, /* (277) signed ::= NK_FLOAT */ - { 309, -2 }, /* (278) signed ::= NK_PLUS NK_FLOAT */ - { 309, -2 }, /* (279) signed ::= NK_MINUS NK_FLOAT */ + { 308, -1 }, /* (274) signed ::= NK_INTEGER */ + { 308, -2 }, /* (275) signed ::= NK_PLUS NK_INTEGER */ + { 308, -2 }, /* (276) signed ::= NK_MINUS NK_INTEGER */ + { 308, -1 }, /* (277) signed ::= NK_FLOAT */ + { 308, -2 }, /* (278) signed ::= NK_PLUS NK_FLOAT */ + { 308, -2 }, /* (279) signed ::= NK_MINUS NK_FLOAT */ { 273, -1 }, /* (280) signed_literal ::= signed */ { 273, -1 }, /* (281) signed_literal ::= NK_STRING */ { 273, -1 }, /* (282) signed_literal ::= NK_BOOL */ @@ -2862,8 +2863,8 @@ static const struct { { 273, -1 }, /* (284) signed_literal ::= duration_literal */ { 273, -1 }, /* (285) signed_literal ::= NULL */ { 273, -1 }, /* (286) signed_literal ::= literal_func */ - { 276, -1 }, /* (287) literal_list ::= signed_literal */ - { 276, -3 }, /* (288) literal_list ::= literal_list NK_COMMA signed_literal */ + { 310, -1 }, /* (287) literal_list ::= signed_literal */ + { 310, -3 }, /* (288) literal_list ::= literal_list NK_COMMA signed_literal */ { 250, -1 }, /* (289) db_name ::= NK_ID */ { 279, -1 }, /* (290) table_name ::= NK_ID */ { 271, -1 }, /* (291) column_name ::= NK_ID */ @@ -2872,9 +2873,9 @@ static const struct { { 312, -1 }, /* (294) column_alias ::= NK_ID */ { 245, -1 }, /* (295) user_name ::= NK_ID */ { 290, -1 }, /* (296) index_name ::= NK_ID */ - { 297, -1 }, /* (297) topic_name ::= NK_ID */ - { 304, -1 }, /* (298) stream_name ::= NK_ID */ - { 299, -1 }, /* (299) cgroup_name ::= NK_ID */ + { 296, -1 }, /* (297) topic_name ::= NK_ID */ + { 303, -1 }, /* (298) stream_name ::= NK_ID */ + { 298, -1 }, /* (299) cgroup_name ::= NK_ID */ { 313, -1 }, /* (300) expression ::= literal */ { 313, -1 }, /* (301) expression ::= pseudo_column */ { 313, -1 }, /* (302) expression ::= column_reference */ @@ -2889,8 +2890,8 @@ static const struct { { 313, -3 }, /* (311) expression ::= expression NK_SLASH expression */ { 313, -3 }, /* (312) expression ::= expression NK_REM expression */ { 313, -3 }, /* (313) expression ::= column_reference NK_ARROW NK_STRING */ - { 296, -1 }, /* (314) expression_list ::= expression */ - { 296, -3 }, /* (315) expression_list ::= expression_list NK_COMMA expression */ + { 276, -1 }, /* (314) expression_list ::= expression */ + { 276, -3 }, /* (315) expression_list ::= expression_list NK_COMMA expression */ { 315, -1 }, /* (316) column_reference ::= column_name */ { 315, -3 }, /* (317) column_reference ::= table_name NK_DOT column_name */ { 314, -1 }, /* (318) pseudo_column ::= ROWTS */ @@ -2905,8 +2906,8 @@ static const struct { { 316, -4 }, /* (327) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ { 316, -6 }, /* (328) function_expression ::= CAST NK_LP expression AS type_name NK_RP */ { 316, -1 }, /* (329) function_expression ::= literal_func */ - { 310, -3 }, /* (330) literal_func ::= noarg_func NK_LP NK_RP */ - { 310, -1 }, /* (331) literal_func ::= NOW */ + { 309, -3 }, /* (330) literal_func ::= noarg_func NK_LP NK_RP */ + { 309, -1 }, /* (331) literal_func ::= NOW */ { 320, -1 }, /* (332) noarg_func ::= NOW */ { 320, -1 }, /* (333) noarg_func ::= TODAY */ { 320, -1 }, /* (334) noarg_func ::= TIMEZONE */ @@ -2977,8 +2978,8 @@ static const struct { { 347, -2 }, /* (399) select_item ::= common_expression column_alias */ { 347, -3 }, /* (400) select_item ::= common_expression AS column_alias */ { 347, -3 }, /* (401) select_item ::= table_name NK_DOT NK_STAR */ - { 308, 0 }, /* (402) where_clause_opt ::= */ - { 308, -2 }, /* (403) where_clause_opt ::= WHERE search_condition */ + { 307, 0 }, /* (402) where_clause_opt ::= */ + { 307, -2 }, /* (403) where_clause_opt ::= WHERE search_condition */ { 342, 0 }, /* (404) partition_by_clause_opt ::= */ { 342, -3 }, /* (405) partition_by_clause_opt ::= PARTITION BY expression_list */ { 343, 0 }, /* (406) twindow_clause_opt ::= */ @@ -3002,7 +3003,7 @@ static const struct { { 350, -3 }, /* (424) group_by_list ::= group_by_list NK_COMMA expression */ { 345, 0 }, /* (425) having_clause_opt ::= */ { 345, -2 }, /* (426) having_clause_opt ::= HAVING search_condition */ - { 298, -4 }, /* (427) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */ + { 297, -4 }, /* (427) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */ { 351, -1 }, /* (428) query_expression_body ::= query_primary */ { 351, -4 }, /* (429) query_expression_body ::= query_expression_body UNION ALL query_expression_body */ { 351, -3 }, /* (430) query_expression_body ::= query_expression_body UNION query_expression_body */ @@ -3531,7 +3532,7 @@ static YYACTIONTYPE yy_reduce( { yylhsminor.yy424 = addNodeToList(pCxt, yymsp[-1].minor.yy424, yymsp[0].minor.yy632); } yymsp[-1].minor.yy424 = yylhsminor.yy424; break; - case 125: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP literal_list NK_RP table_options */ + case 125: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP expression_list NK_RP table_options */ { yylhsminor.yy632 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy137, yymsp[-8].minor.yy632, yymsp[-6].minor.yy632, yymsp[-5].minor.yy424, yymsp[-2].minor.yy424, yymsp[0].minor.yy632); } yymsp[-9].minor.yy632 = yylhsminor.yy632; break; diff --git a/source/libs/parser/test/mockCatalog.cpp b/source/libs/parser/test/mockCatalog.cpp index 3729a2e1dc..b0c6181264 100644 --- a/source/libs/parser/test/mockCatalog.cpp +++ b/source/libs/parser/test/mockCatalog.cpp @@ -141,16 +141,18 @@ void generateTestT1(MockCatalogService* mcs) { * c2 | column | VARCHAR | 20 | * tag1 | tag | INT | 4 | * tag2 | tag | VARCHAR | 20 | + * tag3 | tag | TIMESTAMP | 8 | * Child Table: st1s1, st1s2 */ void generateTestST1(MockCatalogService* mcs) { - ITableBuilder& builder = mcs->createTableBuilder("test", "st1", TSDB_SUPER_TABLE, 3, 2) + ITableBuilder& builder = mcs->createTableBuilder("test", "st1", TSDB_SUPER_TABLE, 3, 3) .setPrecision(TSDB_TIME_PRECISION_MILLI) .addColumn("ts", TSDB_DATA_TYPE_TIMESTAMP) .addColumn("c1", TSDB_DATA_TYPE_INT) .addColumn("c2", TSDB_DATA_TYPE_BINARY, 20) .addTag("tag1", TSDB_DATA_TYPE_INT) - .addTag("tag2", TSDB_DATA_TYPE_BINARY, 20); + .addTag("tag2", TSDB_DATA_TYPE_BINARY, 20) + .addTag("tag3", TSDB_DATA_TYPE_TIMESTAMP); builder.done(); mcs->createSubTable("test", "st1", "st1s1", 1); mcs->createSubTable("test", "st1", "st1s2", 2); @@ -189,17 +191,17 @@ void generateFunctions(MockCatalogService* mcs) { int32_t __catalogGetHandle(const char* clusterId, struct SCatalog** catalogHandle) { return 0; } -int32_t __catalogGetTableMeta(struct SCatalog* pCatalog, SRequestConnInfo *pConn, const SName* pTableName, +int32_t __catalogGetTableMeta(struct SCatalog* pCatalog, SRequestConnInfo* pConn, const SName* pTableName, STableMeta** pTableMeta) { return g_mockCatalogService->catalogGetTableMeta(pTableName, pTableMeta); } -int32_t __catalogGetTableHashVgroup(struct SCatalog* pCatalog, SRequestConnInfo *pConn, - const SName* pTableName, SVgroupInfo* vgInfo) { +int32_t __catalogGetTableHashVgroup(struct SCatalog* pCatalog, SRequestConnInfo* pConn, const SName* pTableName, + SVgroupInfo* vgInfo) { return g_mockCatalogService->catalogGetTableHashVgroup(pTableName, vgInfo); } -int32_t __catalogGetTableDistVgInfo(SCatalog* pCtg, SRequestConnInfo *pConn, const SName* pTableName, +int32_t __catalogGetTableDistVgInfo(SCatalog* pCtg, SRequestConnInfo* pConn, const SName* pTableName, SArray** pVgList) { return g_mockCatalogService->catalogGetTableDistVgInfo(pTableName, pVgList); } @@ -209,28 +211,26 @@ int32_t __catalogGetDBVgVersion(SCatalog* pCtg, const char* dbFName, int32_t* ve return 0; } -int32_t __catalogGetDBVgInfo(SCatalog* pCtg, SRequestConnInfo *pConn, const char* dbFName, - SArray** pVgList) { +int32_t __catalogGetDBVgInfo(SCatalog* pCtg, SRequestConnInfo* pConn, const char* dbFName, SArray** pVgList) { return g_mockCatalogService->catalogGetDBVgInfo(dbFName, pVgList); } -int32_t __catalogGetDBCfg(SCatalog* pCtg, SRequestConnInfo *pConn, const char* dbFName, SDbCfgInfo* pDbCfg) { +int32_t __catalogGetDBCfg(SCatalog* pCtg, SRequestConnInfo* pConn, const char* dbFName, SDbCfgInfo* pDbCfg) { return 0; } -int32_t __catalogChkAuth(SCatalog* pCtg, SRequestConnInfo *pConn, const char* user, const char* dbFName, - AUTH_TYPE type, bool* pass) { +int32_t __catalogChkAuth(SCatalog* pCtg, SRequestConnInfo* pConn, const char* user, const char* dbFName, AUTH_TYPE type, + bool* pass) { *pass = true; return 0; } -int32_t __catalogGetUdfInfo(SCatalog* pCtg, SRequestConnInfo *pConn, const char* funcName, - SFuncInfo* pInfo) { +int32_t __catalogGetUdfInfo(SCatalog* pCtg, SRequestConnInfo* pConn, const char* funcName, SFuncInfo* pInfo) { return g_mockCatalogService->catalogGetUdfInfo(funcName, pInfo); } -int32_t __catalogRefreshGetTableMeta(SCatalog* pCatalog, SRequestConnInfo *pConn, - const SName* pTableName, STableMeta** pTableMeta, int32_t isSTable) { +int32_t __catalogRefreshGetTableMeta(SCatalog* pCatalog, SRequestConnInfo* pConn, const SName* pTableName, + STableMeta** pTableMeta, int32_t isSTable) { return g_mockCatalogService->catalogGetTableMeta(pTableName, pTableMeta); } diff --git a/source/libs/parser/test/parInitialATest.cpp b/source/libs/parser/test/parInitialATest.cpp index 3c1d931f37..cc23fbbc60 100644 --- a/source/libs/parser/test/parInitialATest.cpp +++ b/source/libs/parser/test/parInitialATest.cpp @@ -163,9 +163,9 @@ TEST_F(ParserInitialATest, alterSTable) { run("ALTER TABLE st1 DROP COLUMN c1"); clearAlterStbReq(); - setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, 1, "c1", TSDB_DATA_TYPE_VARCHAR, - 20 + VARSTR_HEADER_SIZE); - run("ALTER TABLE st1 MODIFY COLUMN c1 VARCHAR(20)"); + setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, 1, "c2", TSDB_DATA_TYPE_VARCHAR, + 30 + VARSTR_HEADER_SIZE); + run("ALTER TABLE st1 MODIFY COLUMN c2 VARCHAR(30)"); clearAlterStbReq(); // setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1"); @@ -179,9 +179,9 @@ TEST_F(ParserInitialATest, alterSTable) { run("ALTER TABLE st1 DROP TAG tag1"); clearAlterStbReq(); - setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, 1, "tag1", TSDB_DATA_TYPE_VARCHAR, - 20 + VARSTR_HEADER_SIZE); - run("ALTER TABLE st1 MODIFY TAG tag1 VARCHAR(20)"); + setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, 1, "tag2", TSDB_DATA_TYPE_VARCHAR, + 30 + VARSTR_HEADER_SIZE); + run("ALTER TABLE st1 MODIFY TAG tag2 VARCHAR(30)"); clearAlterStbReq(); setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_TAG_NAME, 2, "tag1", 0, 0, "tag11"); @@ -196,6 +196,10 @@ TEST_F(ParserInitialATest, alterSTableSemanticCheck) { useDb("root", "test"); run("ALTER TABLE st1 RENAME COLUMN c1 cc1", TSDB_CODE_PAR_INVALID_ALTER_TABLE); + + run("ALTER TABLE st1 MODIFY COLUMN c2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL); + + run("ALTER TABLE st1 MODIFY TAG tag2 NCHAR(10)", TSDB_CODE_PAR_INVALID_MODIFY_COL); } TEST_F(ParserInitialATest, alterTable) { @@ -336,6 +340,8 @@ TEST_F(ParserInitialATest, alterTableSemanticCheck) { useDb("root", "test"); run("ALTER TABLE st1s1 RENAME COLUMN c1 cc1", TSDB_CODE_PAR_INVALID_ALTER_TABLE); + + run("ALTER TABLE st1s1 SET TAG tag2 = '123456789012345678901'", TSDB_CODE_PAR_WRONG_VALUE_TYPE); } TEST_F(ParserInitialATest, alterUser) { diff --git a/source/libs/parser/test/parInitialCTest.cpp b/source/libs/parser/test/parInitialCTest.cpp index 919d4c041d..6cdc1e115e 100644 --- a/source/libs/parser/test/parInitialCTest.cpp +++ b/source/libs/parser/test/parInitialCTest.cpp @@ -548,12 +548,14 @@ TEST_F(ParserInitialCTest, createTable) { "a14 NCHAR(30), a15 VARCHAR(50)) " "TTL 100 COMMENT 'test create table' SMA(c1, c2, c3) ROLLUP (MIN) FILE_FACTOR 0.1"); - run("CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy')"); + run("CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy', NOW)"); run("CREATE TABLE " "IF NOT EXISTS test.t1 USING test.st1 (tag1, tag2) TAGS(1, 'abc') " "IF NOT EXISTS test.t2 USING test.st1 (tag1, tag2) TAGS(2, 'abc') " "IF NOT EXISTS test.t3 USING test.st1 (tag1, tag2) TAGS(3, 'abc') "); + + // run("CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy', NOW + 1S)"); } TEST_F(ParserInitialCTest, createTopic) { diff --git a/source/libs/parser/test/parInsertTest.cpp b/source/libs/parser/test/parInsertTest.cpp index 29edca0d40..3ebf9a417b 100644 --- a/source/libs/parser/test/parInsertTest.cpp +++ b/source/libs/parser/test/parInsertTest.cpp @@ -245,8 +245,8 @@ TEST_F(InsertTest, autoCreateTableTest) { setDatabase("root", "test"); bind( - "insert into st1s1 using st1 tags(1, 'wxy') values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, " - "\"guangzhou\")"); + "insert into st1s1 using st1 tags(1, 'wxy', now) " + "values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); ASSERT_EQ(run(), TSDB_CODE_SUCCESS); dumpReslut(); checkReslut(1, 3); @@ -257,8 +257,8 @@ TEST_F(InsertTest, autoCreateTableTest) { ASSERT_EQ(run(), TSDB_CODE_SUCCESS); bind( - "insert into st1s1 using st1 tags(1, 'wxy') values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, " - "\"guangzhou\")"); + "insert into st1s1 using st1 tags(1, 'wxy', now) " + "values (now, 1, \"beijing\")(now+1s, 2, \"shanghai\")(now+2s, 3, \"guangzhou\")"); ASSERT_EQ(runAsync(), TSDB_CODE_SUCCESS); bind( diff --git a/source/libs/parser/test/parSelectTest.cpp b/source/libs/parser/test/parSelectTest.cpp index 51d302fe12..c87520e262 100644 --- a/source/libs/parser/test/parSelectTest.cpp +++ b/source/libs/parser/test/parSelectTest.cpp @@ -219,6 +219,7 @@ TEST_F(ParserSelectTest, intervalSemanticCheck) { run("SELECT HISTOGRAM(c1, 'log_bin', '{\"start\": -33,\"factor\": 55,\"count\": 5,\"infinity\": false}', 1) FROM t1 " "WHERE ts > TIMESTAMP '2022-04-01 00:00:00' and ts < TIMESTAMP '2022-04-30 23:59:59' INTERVAL(10s) FILL(NULL)", TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC); + run("SELECT _WSTARTTS, _WENDTS, _WDURATION, sum(c1) FROM t1", TSDB_CODE_PAR_INVALID_WINDOW_PC); } TEST_F(ParserSelectTest, subquery) { @@ -231,13 +232,22 @@ TEST_F(ParserSelectTest, subquery) { run("SELECT SUM(a) FROM (SELECT MAX(c1) a, ts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"); run("SELECT SUM(a) FROM (SELECT MAX(c1) a, _wstartts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"); + + run("SELECT _C0 FROM (SELECT _ROWTS, ts FROM st1s1)"); + + run("SELECT ts FROM (SELECT t1.ts FROM st1s1 t1)"); } TEST_F(ParserSelectTest, subquerySemanticCheck) { useDb("root", "test"); - run("SELECT SUM(a) FROM (SELECT MAX(c1) a FROM st1s1 INTERVAL(1m)) INTERVAL(1n)", TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY, - PARSER_STAGE_TRANSLATE); + run("SELECT SUM(a) FROM (SELECT MAX(c1) a FROM st1s1 INTERVAL(1m)) INTERVAL(1n)", + TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY); + + run("SELECT ts FROM (SELECT t1.ts AS ts, t2.ts FROM st1s1 t1, st1s2 t2 WHERE t1.ts = t2.ts)", + TSDB_CODE_PAR_AMBIGUOUS_COLUMN); + + run("SELECT ts FROM (SELECT ts AS c1 FROM st1s1 t1)", TSDB_CODE_PAR_INVALID_COLUMN); } TEST_F(ParserSelectTest, semanticCheck) { diff --git a/source/libs/parser/test/parTestUtil.cpp b/source/libs/parser/test/parTestUtil.cpp index 13ab116552..663f456cb8 100644 --- a/source/libs/parser/test/parTestUtil.cpp +++ b/source/libs/parser/test/parTestUtil.cpp @@ -62,7 +62,7 @@ int32_t getLogLevel() { return g_logLevel; } class ParserTestBaseImpl { public: - ParserTestBaseImpl(ParserTestBase* pBase) : pBase_(pBase) {} + ParserTestBaseImpl(ParserTestBase* pBase) : pBase_(pBase), sqlNo_(0) {} void login(const std::string& user) { caseEnv_.user_ = user; } @@ -73,6 +73,7 @@ class ParserTestBaseImpl { } void run(const string& sql, int32_t expect, ParserStage checkStage) { + ++sqlNo_; if (caseEnv_.nsql_ > 0) { --(caseEnv_.nsql_); return; @@ -174,7 +175,7 @@ class ParserTestBaseImpl { } void dump() { - cout << "==========================================sql : [" << stmtEnv_.sql_ << "]" << endl; + cout << "========================================== " << sqlNo_ << " sql : [" << stmtEnv_.sql_ << "]" << endl; if (!res_.parsedAst_.empty()) { cout << "raw syntax tree : " << endl; cout << res_.parsedAst_ << endl; @@ -425,6 +426,7 @@ class ParserTestBaseImpl { stmtEnv stmtEnv_; stmtRes res_; ParserTestBase* pBase_; + int32_t sqlNo_; }; ParserTestBase::ParserTestBase() : impl_(new ParserTestBaseImpl(this)) {} diff --git a/source/libs/planner/src/planSpliter.c b/source/libs/planner/src/planSpliter.c index 2fc79255af..9e4967dd25 100644 --- a/source/libs/planner/src/planSpliter.c +++ b/source/libs/planner/src/planSpliter.c @@ -416,6 +416,8 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO pMergeAgg->node.pTargets = NULL; SNodeList* pChildren = pMergeAgg->node.pChildren; pMergeAgg->node.pChildren = NULL; + SNode* pConditions = pMergeAgg->node.pConditions; + pMergeAgg->node.pConditions = NULL; int32_t code = TSDB_CODE_SUCCESS; SAggLogicNode* pPartAgg = (SAggLogicNode*)nodesCloneNode((SNode*)pMergeAgg); @@ -434,6 +436,7 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO } } if (TSDB_CODE_SUCCESS == code) { + pMergeAgg->node.pConditions = pConditions; pMergeAgg->node.pTargets = pTargets; pPartAgg->node.pChildren = pChildren; diff --git a/source/libs/planner/test/planGroupByTest.cpp b/source/libs/planner/test/planGroupByTest.cpp index 78d0f7b21f..9d937d7c91 100644 --- a/source/libs/planner/test/planGroupByTest.cpp +++ b/source/libs/planner/test/planGroupByTest.cpp @@ -82,4 +82,6 @@ TEST_F(PlanGroupByTest, stable) { run("SELECT COUNT(*) FROM st1"); run("SELECT COUNT(*) FROM st1 GROUP BY c1"); + + run("SELECT SUM(c1) FROM st1 GROUP BY c2 HAVING SUM(c1) IS NOT NULL"); } diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index db8a055362..2023680abb 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -2,20 +2,20 @@ #======================b1-start=============== # ---- user -#./test.sh -f tsim/user/basic1.sim -#./test.sh -f tsim/user/pass_alter.sim -#./test.sh -f tsim/user/pass_len.sim -#./test.sh -f tsim/user/user_len.sim -#./test.sh -f tsim/user/privilege1.sim -#./test.sh -f tsim/user/privilege2.sim# +./test.sh -f tsim/user/basic1.sim +./test.sh -f tsim/user/pass_alter.sim +./test.sh -f tsim/user/pass_len.sim +./test.sh -f tsim/user/user_len.sim +./test.sh -f tsim/user/privilege1.sim +./test.sh -f tsim/user/privilege2.sim ## ---- db -#./test.sh -f tsim/db/create_all_options.sim -#./test.sh -f tsim/db/alter_option.sim -#./test.sh -f tsim/db/basic1.sim -#./test.sh -f tsim/db/basic2.sim -#./test.sh -f tsim/db/basic3.sim -#./test.sh -f tsim/db/basic6.sim +./test.sh -f tsim/db/create_all_options.sim +./test.sh -f tsim/db/alter_option.sim +./test.sh -f tsim/db/basic1.sim +./test.sh -f tsim/db/basic2.sim +./test.sh -f tsim/db/basic3.sim +./test.sh -f tsim/db/basic6.sim ./test.sh -f tsim/db/basic7.sim ./test.sh -f tsim/db/error1.sim ./test.sh -f tsim/db/taosdlog.sim -- GitLab