Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e00a9fa9
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e00a9fa9
编写于
5月 21, 2022
作者:
X
Xiaoyu Wang
提交者:
GitHub
5月 21, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #12801 from taosdata/feature/3.0_wxy
fix: some prblems of parser and planner
上级
751140f6
bec1c246
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
927 addition
and
794 deletion
+927
-794
include/libs/qcom/query.h
include/libs/qcom/query.h
+15
-15
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+2
-2
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+148
-86
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+663
-665
source/libs/parser/test/parSelectTest.cpp
source/libs/parser/test/parSelectTest.cpp
+4
-0
source/libs/planner/src/planSpliter.c
source/libs/planner/src/planSpliter.c
+16
-2
source/libs/planner/test/planSetOpTest.cpp
source/libs/planner/test/planSetOpTest.cpp
+19
-0
source/libs/planner/test/planSubqueryTest.cpp
source/libs/planner/test/planSubqueryTest.cpp
+1
-3
source/libs/planner/test/planTestMain.cpp
source/libs/planner/test/planTestMain.cpp
+26
-16
source/libs/planner/test/planTestUtil.cpp
source/libs/planner/test/planTestUtil.cpp
+29
-2
source/libs/planner/test/planTestUtil.h
source/libs/planner/test/planTestUtil.h
+4
-3
未找到文件。
include/libs/qcom/query.h
浏览文件 @
e00a9fa9
...
@@ -228,23 +228,23 @@ extern int32_t (*queryProcessMsgRsp[TDMT_MAX])(void* output, char* msg, int32_t
...
@@ -228,23 +228,23 @@ extern int32_t (*queryProcessMsgRsp[TDMT_MAX])(void* output, char* msg, int32_t
taosPrintLog("QRY ", DEBUG_INFO, tsLogEmbedded ? 255 : qDebugFlag, __VA_ARGS__); \
taosPrintLog("QRY ", DEBUG_INFO, tsLogEmbedded ? 255 : qDebugFlag, __VA_ARGS__); \
} \
} \
} while (0)
} while (0)
#define qDebug(...) \
#define qDebug(...)
\
do { \
do {
\
if (qDebugFlag & DEBUG_DEBUG) { \
if (qDebugFlag & DEBUG_DEBUG) {
\
taosPrintLog("QRY ", DEBUG_DEBUG, qDebugFlag, __VA_ARGS__); \
taosPrintLog("QRY ", DEBUG_DEBUG,
tsLogEmbedded ? 255 :
qDebugFlag, __VA_ARGS__); \
} \
}
\
} while (0)
} while (0)
#define qTrace(...) \
#define qTrace(...)
\
do { \
do {
\
if (qDebugFlag & DEBUG_TRACE) { \
if (qDebugFlag & DEBUG_TRACE) {
\
taosPrintLog("QRY ", DEBUG_TRACE, qDebugFlag, __VA_ARGS__); \
taosPrintLog("QRY ", DEBUG_TRACE,
tsLogEmbedded ? 255 :
qDebugFlag, __VA_ARGS__); \
} \
}
\
} while (0)
} while (0)
#define qDebugL(...) \
#define qDebugL(...)
\
do { \
do {
\
if (qDebugFlag & DEBUG_DEBUG) { \
if (qDebugFlag & DEBUG_DEBUG) {
\
taosPrintLongString("QRY ", DEBUG_DEBUG, qDebugFlag, __VA_ARGS__); \
taosPrintLongString("QRY ", DEBUG_DEBUG,
tsLogEmbedded ? 255 :
qDebugFlag, __VA_ARGS__); \
} \
}
\
} while (0)
} while (0)
#define QRY_ERR_RET(c) \
#define QRY_ERR_RET(c) \
...
...
source/libs/parser/inc/sql.y
浏览文件 @
e00a9fa9
...
@@ -241,7 +241,7 @@ alter_table_clause(A) ::=
...
@@ -241,7 +241,7 @@ alter_table_clause(A) ::=
alter_table_clause(A) ::=
alter_table_clause(A) ::=
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &C, &D); }
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &C, &D); }
alter_table_clause(A) ::=
alter_table_clause(A) ::=
full_table_name(B) SET TAG column_name(C) NK_EQ
literal(D). { A = createAlterTableSetTag(pCxt, B, &C, releaseRawExprNode(pCxt, D)
); }
full_table_name(B) SET TAG column_name(C) NK_EQ
signed_literal(D). { A = createAlterTableSetTag(pCxt, B, &C, D
); }
%type multi_create_clause { SNodeList* }
%type multi_create_clause { SNodeList* }
%destructor multi_create_clause { nodesDestroyList($$); }
%destructor multi_create_clause { nodesDestroyList($$); }
...
@@ -448,7 +448,7 @@ agg_func_opt(A) ::= AGGREGATE.
...
@@ -448,7 +448,7 @@ agg_func_opt(A) ::= AGGREGATE.
%type bufsize_opt { int32_t }
%type bufsize_opt { int32_t }
%destructor bufsize_opt { }
%destructor bufsize_opt { }
bufsize_opt(A) ::= . { A = 0; }
bufsize_opt(A) ::= . { A = 0; }
bufsize_opt(A) ::= BUFSIZE NK_INTEGER(B). { A =
strtol
(B.z, NULL, 10); }
bufsize_opt(A) ::= BUFSIZE NK_INTEGER(B). { A =
taosStr2Int32
(B.z, NULL, 10); }
/************************************************ create/drop stream **************************************************/
/************************************************ create/drop stream **************************************************/
cmd ::= CREATE STREAM not_exists_opt(E) stream_name(A)
cmd ::= CREATE STREAM not_exists_opt(E) stream_name(A)
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
e00a9fa9
...
@@ -694,66 +694,110 @@ static EDealRes translateValue(STranslateContext* pCxt, SValueNode* pVal) {
...
@@ -694,66 +694,110 @@ static EDealRes translateValue(STranslateContext* pCxt, SValueNode* pVal) {
return
translateValueImpl
(
pCxt
,
pVal
,
pVal
->
node
.
resType
);
return
translateValueImpl
(
pCxt
,
pVal
,
pVal
->
node
.
resType
);
}
}
static
EDealRes
translateOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
static
bool
isMultiResFunc
(
SNode
*
pNode
)
{
if
(
nodesIsUnaryOp
(
pOp
))
{
if
(
NULL
==
pNode
)
{
if
(
OP_TYPE_MINUS
==
pOp
->
opType
)
{
return
false
;
if
(
!
IS_MATHABLE_TYPE
(((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
.
type
))
{
}
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pLeft
))
->
aliasName
);
if
(
QUERY_NODE_FUNCTION
!=
nodeType
(
pNode
)
||
!
fmIsMultiResFunc
(((
SFunctionNode
*
)
pNode
)
->
funcId
))
{
}
return
false
;
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_DOUBLE
;
}
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
SNodeList
*
pParameterList
=
((
SFunctionNode
*
)
pNode
)
->
pParameterList
;
}
else
{
if
(
LIST_LENGTH
(
pParameterList
)
>
1
)
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BOOL
;
return
true
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
}
SNode
*
pParam
=
nodesListGetNode
(
pParameterList
,
0
);
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pParam
)
?
0
==
strcmp
(((
SColumnNode
*
)
pParam
)
->
colName
,
"*"
)
:
false
);
}
static
EDealRes
translateUnaryOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
if
(
OP_TYPE_MINUS
==
pOp
->
opType
)
{
if
(
!
IS_MATHABLE_TYPE
(((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
.
type
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pLeft
))
->
aliasName
);
}
}
return
DEAL_RES_CONTINUE
;
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_DOUBLE
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
}
else
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BOOL
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
}
}
return
DEAL_RES_CONTINUE
;
}
static
EDealRes
translateArithmeticOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
SDataType
ldt
=
((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
;
SDataType
ldt
=
((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
;
SDataType
rdt
=
((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
;
SDataType
rdt
=
((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
;
if
(
nodesIsArithmeticOp
(
pOp
))
{
if
(
TSDB_DATA_TYPE_JSON
==
ldt
.
type
||
TSDB_DATA_TYPE_BLOB
==
ldt
.
type
||
TSDB_DATA_TYPE_JSON
==
rdt
.
type
||
if
(
TSDB_DATA_TYPE_JSON
==
ldt
.
type
||
TSDB_DATA_TYPE_BLOB
==
ldt
.
type
||
TSDB_DATA_TYPE_JSON
==
rdt
.
type
||
TSDB_DATA_TYPE_BLOB
==
rdt
.
type
)
{
TSDB_DATA_TYPE_BLOB
==
rdt
.
type
)
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
if
((
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
)
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
(
IS_VAR_DATA_TYPE
(
rdt
.
type
)
||
IS_FLOAT_TYPE
(
rdt
.
type
)))
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
(
IS_VAR_DATA_TYPE
(
ldt
.
type
)
||
IS_FLOAT_TYPE
(
ldt
.
type
))))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
if
((
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
IS_INTEGER_TYPE
(
rdt
.
type
))
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
IS_INTEGER_TYPE
(
ldt
.
type
))
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
TSDB_DATA_TYPE_BOOL
==
rdt
.
type
)
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
TSDB_DATA_TYPE_BOOL
==
ldt
.
type
))
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_TIMESTAMP
].
bytes
;
}
else
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_DOUBLE
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
}
return
DEAL_RES_CONTINUE
;
}
static
EDealRes
translateComparisonOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
SDataType
ldt
=
((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
;
SDataType
rdt
=
((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
;
if
(
TSDB_DATA_TYPE_BLOB
==
ldt
.
type
||
TSDB_DATA_TYPE_JSON
==
rdt
.
type
||
TSDB_DATA_TYPE_BLOB
==
rdt
.
type
)
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
if
(
OP_TYPE_IN
==
pOp
->
opType
||
OP_TYPE_NOT_IN
==
pOp
->
opType
)
{
((
SExprNode
*
)
pOp
->
pRight
)
->
resType
=
((
SExprNode
*
)
pOp
->
pLeft
)
->
resType
;
}
if
(
nodesIsRegularOp
(
pOp
))
{
if
(
!
IS_STR_DATA_TYPE
(((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
.
type
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pLeft
))
->
aliasName
);
}
}
if
((
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
)
||
if
(
QUERY_NODE_VALUE
!=
nodeType
(
pOp
->
pRight
)
||
!
IS_STR_DATA_TYPE
(((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
.
type
))
{
(
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
(
IS_VAR_DATA_TYPE
(
rdt
.
type
)
||
IS_FLOAT_TYPE
(
rdt
.
type
)))
||
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
(
IS_VAR_DATA_TYPE
(
ldt
.
type
)
||
IS_FLOAT_TYPE
(
ldt
.
type
))))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
}
}
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BOOL
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
return
DEAL_RES_CONTINUE
;
}
if
((
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
IS_INTEGER_TYPE
(
rdt
.
type
))
||
static
EDealRes
translateJsonOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
IS_INTEGER_TYPE
(
ldt
.
type
))
||
SDataType
ldt
=
((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
;
(
TSDB_DATA_TYPE_TIMESTAMP
==
ldt
.
type
&&
TSDB_DATA_TYPE_BOOL
==
rdt
.
type
)
||
SDataType
rdt
=
((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
;
(
TSDB_DATA_TYPE_TIMESTAMP
==
rdt
.
type
&&
TSDB_DATA_TYPE_BOOL
==
ldt
.
type
))
{
if
(
TSDB_DATA_TYPE_JSON
!=
ldt
.
type
||
TSDB_DATA_TYPE_BINARY
!=
rdt
.
type
)
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_TIMESTAMP
;
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_TIMESTAMP
].
bytes
;
}
}
else
{
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_JSON
;
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_DOUBLE
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_JSON
].
bytes
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_DOUBLE
].
bytes
;
return
DEAL_RES_CONTINUE
;
}
}
static
EDealRes
translateOperator
(
STranslateContext
*
pCxt
,
SOperatorNode
*
pOp
)
{
if
(
isMultiResFunc
(
pOp
->
pLeft
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pLeft
))
->
aliasName
);
}
if
(
isMultiResFunc
(
pOp
->
pRight
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
if
(
nodesIsUnaryOp
(
pOp
))
{
return
translateUnaryOperator
(
pCxt
,
pOp
);
}
else
if
(
nodesIsArithmeticOp
(
pOp
))
{
return
translateArithmeticOperator
(
pCxt
,
pOp
);
}
else
if
(
nodesIsComparisonOp
(
pOp
))
{
}
else
if
(
nodesIsComparisonOp
(
pOp
))
{
if
(
TSDB_DATA_TYPE_BLOB
==
ldt
.
type
||
TSDB_DATA_TYPE_JSON
==
rdt
.
type
||
TSDB_DATA_TYPE_BLOB
==
rdt
.
type
)
{
return
translateComparisonOperator
(
pCxt
,
pOp
);
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
if
(
OP_TYPE_IN
==
pOp
->
opType
||
OP_TYPE_NOT_IN
==
pOp
->
opType
)
{
((
SExprNode
*
)
pOp
->
pRight
)
->
resType
=
((
SExprNode
*
)
pOp
->
pLeft
)
->
resType
;
}
if
(
nodesIsRegularOp
(
pOp
))
{
if
(
!
IS_STR_DATA_TYPE
(((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
.
type
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pLeft
))
->
aliasName
);
}
if
(
QUERY_NODE_VALUE
!=
nodeType
(
pOp
->
pRight
)
||
!
IS_STR_DATA_TYPE
(((
SExprNode
*
)(
pOp
->
pRight
))
->
resType
.
type
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
}
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BOOL
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
}
else
if
(
nodesIsJsonOp
(
pOp
))
{
}
else
if
(
nodesIsJsonOp
(
pOp
))
{
if
(
TSDB_DATA_TYPE_JSON
!=
ldt
.
type
||
TSDB_DATA_TYPE_BINARY
!=
rdt
.
type
)
{
return
translateJsonOperator
(
pCxt
,
pOp
);
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)(
pOp
->
pRight
))
->
aliasName
);
}
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_JSON
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_JSON
].
bytes
;
}
}
return
DEAL_RES_CONTINUE
;
return
DEAL_RES_CONTINUE
;
}
}
...
@@ -808,6 +852,13 @@ static bool hasInvalidFuncNesting(SNodeList* pParameterList) {
...
@@ -808,6 +852,13 @@ static bool hasInvalidFuncNesting(SNodeList* pParameterList) {
}
}
static
EDealRes
translateFunction
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pFunc
)
{
static
EDealRes
translateFunction
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pFunc
)
{
SNode
*
pParam
=
NULL
;
FOREACH
(
pParam
,
pFunc
->
pParameterList
)
{
if
(
isMultiResFunc
(
pParam
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)
pParam
)
->
aliasName
);
}
}
SFmGetFuncInfoParam
param
=
{.
pCtg
=
pCxt
->
pParseCxt
->
pCatalog
,
SFmGetFuncInfoParam
param
=
{.
pCtg
=
pCxt
->
pParseCxt
->
pCatalog
,
.
pRpc
=
pCxt
->
pParseCxt
->
pTransporter
,
.
pRpc
=
pCxt
->
pParseCxt
->
pTransporter
,
.
pMgmtEps
=
&
pCxt
->
pParseCxt
->
mgmtEpSet
,
.
pMgmtEps
=
&
pCxt
->
pParseCxt
->
mgmtEpSet
,
...
@@ -926,9 +977,10 @@ typedef struct SCheckExprForGroupByCxt {
...
@@ -926,9 +977,10 @@ typedef struct SCheckExprForGroupByCxt {
STranslateContext
*
pTranslateCxt
;
STranslateContext
*
pTranslateCxt
;
int32_t
selectFuncNum
;
int32_t
selectFuncNum
;
bool
hasSelectValFunc
;
bool
hasSelectValFunc
;
bool
hasOtherAggFunc
;
}
SCheckExprForGroupByCxt
;
}
SCheckExprForGroupByCxt
;
static
EDealRes
rewriteColToSelectValFunc
(
STranslateContext
*
pCxt
,
bool
*
pHasSelectValFunc
,
SNode
**
pNode
)
{
static
EDealRes
rewriteColToSelectValFunc
(
STranslateContext
*
pCxt
,
SNode
**
pNode
)
{
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
if
(
NULL
==
pFunc
)
{
if
(
NULL
==
pFunc
)
{
pCxt
->
errCode
=
TSDB_CODE_OUT_OF_MEMORY
;
pCxt
->
errCode
=
TSDB_CODE_OUT_OF_MEMORY
;
...
@@ -942,9 +994,6 @@ static EDealRes rewriteColToSelectValFunc(STranslateContext* pCxt, bool* pHasSel
...
@@ -942,9 +994,6 @@ static EDealRes rewriteColToSelectValFunc(STranslateContext* pCxt, bool* pHasSel
}
}
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
*
pNode
=
(
SNode
*
)
pFunc
;
*
pNode
=
(
SNode
*
)
pFunc
;
if
(
NULL
!=
pHasSelectValFunc
)
{
*
pHasSelectValFunc
=
true
;
}
}
else
{
}
else
{
nodesDestroyNode
(
pFunc
);
nodesDestroyNode
(
pFunc
);
}
}
...
@@ -956,8 +1005,12 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
...
@@ -956,8 +1005,12 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
if
(
!
nodesIsExprNode
(
*
pNode
)
||
isAliasColumn
(
*
pNode
))
{
if
(
!
nodesIsExprNode
(
*
pNode
)
||
isAliasColumn
(
*
pNode
))
{
return
DEAL_RES_CONTINUE
;
return
DEAL_RES_CONTINUE
;
}
}
pCxt
->
selectFuncNum
+=
isSelectFunc
(
*
pNode
)
?
1
:
0
;
if
(
isSelectFunc
(
*
pNode
))
{
if
(
pCxt
->
selectFuncNum
>
1
&&
pCxt
->
hasSelectValFunc
)
{
++
(
pCxt
->
selectFuncNum
);
}
else
if
(
isAggFunc
(
*
pNode
))
{
pCxt
->
hasOtherAggFunc
=
true
;
}
if
((
pCxt
->
selectFuncNum
>
1
&&
pCxt
->
hasSelectValFunc
)
||
(
pCxt
->
hasOtherAggFunc
&&
pCxt
->
hasSelectValFunc
))
{
return
generateDealNodeErrMsg
(
pCxt
->
pTranslateCxt
,
getGroupByErrorCode
(
pCxt
->
pTranslateCxt
));
return
generateDealNodeErrMsg
(
pCxt
->
pTranslateCxt
,
getGroupByErrorCode
(
pCxt
->
pTranslateCxt
));
}
}
if
(
isAggFunc
(
*
pNode
)
&&
!
isDistinctOrderBy
(
pCxt
->
pTranslateCxt
))
{
if
(
isAggFunc
(
*
pNode
)
&&
!
isDistinctOrderBy
(
pCxt
->
pTranslateCxt
))
{
...
@@ -970,10 +1023,11 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
...
@@ -970,10 +1023,11 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
}
}
}
}
if
(
isScanPseudoColumnFunc
(
*
pNode
)
||
QUERY_NODE_COLUMN
==
nodeType
(
*
pNode
))
{
if
(
isScanPseudoColumnFunc
(
*
pNode
)
||
QUERY_NODE_COLUMN
==
nodeType
(
*
pNode
))
{
if
(
pCxt
->
selectFuncNum
>
1
)
{
if
(
pCxt
->
selectFuncNum
>
1
||
pCxt
->
hasOtherAggFunc
)
{
return
generateDealNodeErrMsg
(
pCxt
->
pTranslateCxt
,
getGroupByErrorCode
(
pCxt
->
pTranslateCxt
));
return
generateDealNodeErrMsg
(
pCxt
->
pTranslateCxt
,
getGroupByErrorCode
(
pCxt
->
pTranslateCxt
));
}
else
{
}
else
{
return
rewriteColToSelectValFunc
(
pCxt
->
pTranslateCxt
,
&
pCxt
->
hasSelectValFunc
,
pNode
);
pCxt
->
hasSelectValFunc
=
true
;
return
rewriteColToSelectValFunc
(
pCxt
->
pTranslateCxt
,
pNode
);
}
}
}
}
if
(
isAggFunc
(
*
pNode
)
&&
isDistinctOrderBy
(
pCxt
->
pTranslateCxt
))
{
if
(
isAggFunc
(
*
pNode
)
&&
isDistinctOrderBy
(
pCxt
->
pTranslateCxt
))
{
...
@@ -983,7 +1037,8 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
...
@@ -983,7 +1037,8 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
}
}
static
int32_t
checkExprForGroupBy
(
STranslateContext
*
pCxt
,
SNode
**
pNode
)
{
static
int32_t
checkExprForGroupBy
(
STranslateContext
*
pCxt
,
SNode
**
pNode
)
{
SCheckExprForGroupByCxt
cxt
=
{.
pTranslateCxt
=
pCxt
,
.
selectFuncNum
=
0
,
.
hasSelectValFunc
=
false
};
SCheckExprForGroupByCxt
cxt
=
{
.
pTranslateCxt
=
pCxt
,
.
selectFuncNum
=
0
,
.
hasSelectValFunc
=
false
,
.
hasOtherAggFunc
=
false
};
nodesRewriteExpr
(
pNode
,
doCheckExprForGroupBy
,
&
cxt
);
nodesRewriteExpr
(
pNode
,
doCheckExprForGroupBy
,
&
cxt
);
if
(
cxt
.
selectFuncNum
!=
1
&&
cxt
.
hasSelectValFunc
)
{
if
(
cxt
.
selectFuncNum
!=
1
&&
cxt
.
hasSelectValFunc
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
getGroupByErrorCode
(
pCxt
));
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
getGroupByErrorCode
(
pCxt
));
...
@@ -995,7 +1050,8 @@ static int32_t checkExprListForGroupBy(STranslateContext* pCxt, SNodeList* pList
...
@@ -995,7 +1050,8 @@ static int32_t checkExprListForGroupBy(STranslateContext* pCxt, SNodeList* pList
if
(
NULL
==
getGroupByList
(
pCxt
))
{
if
(
NULL
==
getGroupByList
(
pCxt
))
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
SCheckExprForGroupByCxt
cxt
=
{.
pTranslateCxt
=
pCxt
,
.
selectFuncNum
=
0
,
.
hasSelectValFunc
=
false
};
SCheckExprForGroupByCxt
cxt
=
{
.
pTranslateCxt
=
pCxt
,
.
selectFuncNum
=
0
,
.
hasSelectValFunc
=
false
,
.
hasOtherAggFunc
=
false
};
nodesRewriteExprs
(
pList
,
doCheckExprForGroupBy
,
&
cxt
);
nodesRewriteExprs
(
pList
,
doCheckExprForGroupBy
,
&
cxt
);
if
(
cxt
.
selectFuncNum
!=
1
&&
cxt
.
hasSelectValFunc
)
{
if
(
cxt
.
selectFuncNum
!=
1
&&
cxt
.
hasSelectValFunc
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
getGroupByErrorCode
(
pCxt
));
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
getGroupByErrorCode
(
pCxt
));
...
@@ -1008,7 +1064,7 @@ static EDealRes rewriteColsToSelectValFuncImpl(SNode** pNode, void* pContext) {
...
@@ -1008,7 +1064,7 @@ static EDealRes rewriteColsToSelectValFuncImpl(SNode** pNode, void* pContext) {
return
DEAL_RES_IGNORE_CHILD
;
return
DEAL_RES_IGNORE_CHILD
;
}
}
if
(
isScanPseudoColumnFunc
(
*
pNode
)
||
QUERY_NODE_COLUMN
==
nodeType
(
*
pNode
))
{
if
(
isScanPseudoColumnFunc
(
*
pNode
)
||
QUERY_NODE_COLUMN
==
nodeType
(
*
pNode
))
{
return
rewriteColToSelectValFunc
((
STranslateContext
*
)
pContext
,
NULL
,
pNode
);
return
rewriteColToSelectValFunc
((
STranslateContext
*
)
pContext
,
pNode
);
}
}
return
DEAL_RES_CONTINUE
;
return
DEAL_RES_CONTINUE
;
}
}
...
@@ -1027,11 +1083,16 @@ typedef struct CheckAggColCoexistCxt {
...
@@ -1027,11 +1083,16 @@ typedef struct CheckAggColCoexistCxt {
bool
existCol
;
bool
existCol
;
bool
existNonstdFunc
;
bool
existNonstdFunc
;
int32_t
selectFuncNum
;
int32_t
selectFuncNum
;
bool
existOtherAggFunc
;
}
CheckAggColCoexistCxt
;
}
CheckAggColCoexistCxt
;
static
EDealRes
doCheckAggColCoexist
(
SNode
*
pNode
,
void
*
pContext
)
{
static
EDealRes
doCheckAggColCoexist
(
SNode
*
pNode
,
void
*
pContext
)
{
CheckAggColCoexistCxt
*
pCxt
=
(
CheckAggColCoexistCxt
*
)
pContext
;
CheckAggColCoexistCxt
*
pCxt
=
(
CheckAggColCoexistCxt
*
)
pContext
;
pCxt
->
selectFuncNum
+=
isSelectFunc
(
pNode
)
?
1
:
0
;
if
(
isSelectFunc
(
pNode
))
{
++
(
pCxt
->
selectFuncNum
);
}
else
if
(
isAggFunc
(
pNode
))
{
pCxt
->
existOtherAggFunc
=
true
;
}
if
(
isAggFunc
(
pNode
))
{
if
(
isAggFunc
(
pNode
))
{
pCxt
->
existAggFunc
=
true
;
pCxt
->
existAggFunc
=
true
;
return
DEAL_RES_IGNORE_CHILD
;
return
DEAL_RES_IGNORE_CHILD
;
...
@@ -1050,13 +1111,17 @@ static int32_t checkAggColCoexist(STranslateContext* pCxt, SSelectStmt* pSelect)
...
@@ -1050,13 +1111,17 @@ static int32_t checkAggColCoexist(STranslateContext* pCxt, SSelectStmt* pSelect)
if
(
NULL
!=
pSelect
->
pGroupByList
)
{
if
(
NULL
!=
pSelect
->
pGroupByList
)
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
CheckAggColCoexistCxt
cxt
=
{
CheckAggColCoexistCxt
cxt
=
{.
pTranslateCxt
=
pCxt
,
.
pTranslateCxt
=
pCxt
,
.
existAggFunc
=
false
,
.
existCol
=
false
,
.
existNonstdFunc
=
false
};
.
existAggFunc
=
false
,
.
existCol
=
false
,
.
existNonstdFunc
=
false
,
.
selectFuncNum
=
0
,
.
existOtherAggFunc
=
false
};
nodesWalkExprs
(
pSelect
->
pProjectionList
,
doCheckAggColCoexist
,
&
cxt
);
nodesWalkExprs
(
pSelect
->
pProjectionList
,
doCheckAggColCoexist
,
&
cxt
);
if
(
!
pSelect
->
isDistinct
)
{
if
(
!
pSelect
->
isDistinct
)
{
nodesWalkExprs
(
pSelect
->
pOrderByList
,
doCheckAggColCoexist
,
&
cxt
);
nodesWalkExprs
(
pSelect
->
pOrderByList
,
doCheckAggColCoexist
,
&
cxt
);
}
}
if
(
1
==
cxt
.
selectFuncNum
)
{
if
(
1
==
cxt
.
selectFuncNum
&&
!
cxt
.
existOtherAggFunc
)
{
return
rewriteColsToSelectValFunc
(
pCxt
,
pSelect
);
return
rewriteColsToSelectValFunc
(
pCxt
,
pSelect
);
}
}
if
((
cxt
.
selectFuncNum
>
1
||
cxt
.
existAggFunc
||
NULL
!=
pSelect
->
pWindow
)
&&
cxt
.
existCol
)
{
if
((
cxt
.
selectFuncNum
>
1
||
cxt
.
existAggFunc
||
NULL
!=
pSelect
->
pWindow
)
&&
cxt
.
existCol
)
{
...
@@ -1230,18 +1295,6 @@ static int32_t createAllColumns(STranslateContext* pCxt, SNodeList** pCols) {
...
@@ -1230,18 +1295,6 @@ static int32_t createAllColumns(STranslateContext* pCxt, SNodeList** pCols) {
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
bool
isMultiResFunc
(
SNode
*
pNode
)
{
if
(
QUERY_NODE_FUNCTION
!=
nodeType
(
pNode
)
||
!
fmIsMultiResFunc
(((
SFunctionNode
*
)
pNode
)
->
funcId
))
{
return
false
;
}
SNodeList
*
pParameterList
=
((
SFunctionNode
*
)
pNode
)
->
pParameterList
;
if
(
LIST_LENGTH
(
pParameterList
)
>
1
)
{
return
true
;
}
SNode
*
pParam
=
nodesListGetNode
(
pParameterList
,
0
);
return
(
QUERY_NODE_COLUMN
==
nodeType
(
pParam
)
?
0
==
strcmp
(((
SColumnNode
*
)
pParam
)
->
colName
,
"*"
)
:
false
);
}
static
SNode
*
createMultiResFunc
(
SFunctionNode
*
pSrcFunc
,
SExprNode
*
pExpr
)
{
static
SNode
*
createMultiResFunc
(
SFunctionNode
*
pSrcFunc
,
SExprNode
*
pExpr
)
{
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
SFunctionNode
*
pFunc
=
nodesMakeNode
(
QUERY_NODE_FUNCTION
);
if
(
NULL
==
pFunc
)
{
if
(
NULL
==
pFunc
)
{
...
@@ -1872,7 +1925,7 @@ static SNode* createSetOperProject(const char* pTableAlias, SNode* pNode) {
...
@@ -1872,7 +1925,7 @@ static SNode* createSetOperProject(const char* pTableAlias, SNode* pNode) {
}
}
static
bool
dataTypeEqual
(
const
SDataType
*
l
,
const
SDataType
*
r
)
{
static
bool
dataTypeEqual
(
const
SDataType
*
l
,
const
SDataType
*
r
)
{
return
(
l
->
type
==
r
->
type
&&
l
->
bytes
==
l
->
bytes
&&
l
->
precision
==
r
->
precision
&&
l
->
scale
==
l
->
scale
);
return
(
l
->
type
==
r
->
type
&&
l
->
bytes
==
r
->
bytes
&&
l
->
precision
==
r
->
precision
&&
l
->
scale
==
r
->
scale
);
}
}
static
int32_t
createCastFunc
(
STranslateContext
*
pCxt
,
SNode
*
pExpr
,
SDataType
dt
,
SNode
**
pCast
)
{
static
int32_t
createCastFunc
(
STranslateContext
*
pCxt
,
SNode
*
pExpr
,
SDataType
dt
,
SNode
**
pCast
)
{
...
@@ -2726,8 +2779,11 @@ static int32_t buildCreateStbReq(STranslateContext* pCxt, SCreateTableStmt* pStm
...
@@ -2726,8 +2779,11 @@ static int32_t buildCreateStbReq(STranslateContext* pCxt, SCreateTableStmt* pStm
SName
tableName
;
SName
tableName
;
tNameExtractFullName
(
toName
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
tableName
),
pReq
->
name
);
tNameExtractFullName
(
toName
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
tableName
),
pReq
->
name
);
int32_t
code
=
collectUseTable
(
&
tableName
,
pCxt
->
pTables
);
return
buildRollupAst
(
pCxt
,
pStmt
,
pReq
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildRollupAst
(
pCxt
,
pStmt
,
pReq
);
}
return
code
;
}
}
static
int32_t
translateCreateSuperTable
(
STranslateContext
*
pCxt
,
SCreateTableStmt
*
pStmt
)
{
static
int32_t
translateCreateSuperTable
(
STranslateContext
*
pCxt
,
SCreateTableStmt
*
pStmt
)
{
...
@@ -4032,13 +4088,18 @@ static int32_t createValueFromFunction(STranslateContext* pCxt, SFunctionNode* p
...
@@ -4032,13 +4088,18 @@ static int32_t createValueFromFunction(STranslateContext* pCxt, SFunctionNode* p
return
scalarCalculateConstants
((
SNode
*
)
pFunc
,
(
SNode
**
)
pVal
);
return
scalarCalculateConstants
((
SNode
*
)
pFunc
,
(
SNode
**
)
pVal
);
}
}
static
int32_t
colDataBytesToValueDataBytes
(
uint8_t
type
,
int32_t
bytes
)
{
if
(
TSDB_DATA_TYPE_VARCHAR
==
type
||
TSDB_DATA_TYPE_BINARY
==
type
||
TSDB_DATA_TYPE_VARBINARY
==
type
)
{
return
bytes
-
VARSTR_HEADER_SIZE
;
}
else
if
(
TSDB_DATA_TYPE_NCHAR
==
type
)
{
return
(
bytes
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
;
}
return
bytes
;
}
static
SDataType
schemaToDataType
(
SSchema
*
pSchema
)
{
static
SDataType
schemaToDataType
(
SSchema
*
pSchema
)
{
SDataType
dt
=
{.
type
=
pSchema
->
type
,
.
bytes
=
pSchema
->
bytes
,
.
precision
=
0
,
.
scale
=
0
};
SDataType
dt
=
{.
type
=
pSchema
->
type
,
.
bytes
=
pSchema
->
bytes
,
.
precision
=
0
,
.
scale
=
0
};
if
(
TSDB_DATA_TYPE_VARCHAR
==
dt
.
type
||
TSDB_DATA_TYPE_BINARY
==
dt
.
type
||
TSDB_DATA_TYPE_VARBINARY
==
dt
.
type
)
{
dt
.
bytes
=
colDataBytesToValueDataBytes
(
pSchema
->
type
,
pSchema
->
bytes
);
dt
.
bytes
-=
VARSTR_HEADER_SIZE
;
}
else
if
(
TSDB_DATA_TYPE_NCHAR
==
dt
.
type
)
{
dt
.
bytes
=
(
dt
.
bytes
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
;
}
return
dt
;
return
dt
;
}
}
...
@@ -4440,7 +4501,8 @@ static int32_t buildUpdateColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt
...
@@ -4440,7 +4501,8 @@ static int32_t buildUpdateColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt
SSchema
*
pSchema
=
getColSchema
(
pTableMeta
,
pStmt
->
colName
);
SSchema
*
pSchema
=
getColSchema
(
pTableMeta
,
pStmt
->
colName
);
if
(
NULL
==
pSchema
)
{
if
(
NULL
==
pSchema
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_COLUMN
,
pStmt
->
colName
);
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_COLUMN
,
pStmt
->
colName
);
}
else
if
(
!
IS_VAR_DATA_TYPE
(
pSchema
->
type
)
||
pSchema
->
bytes
>=
pReq
->
colModBytes
)
{
}
else
if
(
!
IS_VAR_DATA_TYPE
(
pSchema
->
type
)
||
pSchema
->
type
!=
pStmt
->
dataType
.
type
||
pSchema
->
bytes
>=
pReq
->
colModBytes
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
}
}
...
...
source/libs/parser/src/sql.c
浏览文件 @
e00a9fa9
...
@@ -211,540 +211,538 @@ typedef union {
...
@@ -211,540 +211,538 @@ typedef union {
** yy_default[] Default action for each state.
** yy_default[] Default action for each state.
**
**
*********** Begin parsing tables **********************************************/
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (21
67
)
#define YY_ACTTAB_COUNT (21
54
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
383
,
76
,
384
,
1380
,
391
,
519
,
384
,
1380
,
1631
,
28
,
/* 0 */
1467
,
1777
,
1777
,
1646
,
383
,
1634
,
384
,
1380
,
292
,
11
,
/* 10 */
223
,
1467
,
35
,
33
,
113
,
1463
,
343
,
347
,
1646
,
1777
,
/* 10 */
10
,
343
,
35
,
33
,
1776
,
146
,
24
,
923
,
1774
,
1774
,
/* 20 */
301
,
1470
,
1159
,
1627
,
1635
,
1633
,
36
,
34
,
32
,
31
,
/* 20 */
301
,
391
,
1159
,
384
,
1380
,
1631
,
36
,
34
,
32
,
31
,
/* 30 */
30
,
1
729
,
1776
,
1478
,
94
,
522
,
1774
,
93
,
92
,
91
,
/* 30 */
30
,
1
662
,
26
,
36
,
34
,
32
,
31
,
30
,
518
,
503
,
/* 40 */
90
,
89
,
88
,
87
,
86
,
85
,
1662
,
1157
,
1523
,
29
2
,
/* 40 */
1627
,
1633
,
36
,
34
,
32
,
31
,
30
,
1157
,
1346
,
50
2
,
/* 50 */
32
,
31
,
30
,
503
,
291
,
1726
,
1777
,
479
,
14
,
1521
,
/* 50 */
1777
,
522
,
130
,
1617
,
1360
,
927
,
928
,
518
,
14
,
483
,
/* 60 */
35
,
33
,
1285
,
502
,
1165
,
518
,
1631
,
1617
,
301
,
14
5
,
/* 60 */
35
,
33
,
1285
,
145
,
1165
,
28
,
223
,
1774
,
301
,
167
5
,
/* 70 */
1159
,
349
,
274
,
1774
,
398
,
36
,
34
,
32
,
31
,
30
,
/* 70 */
1159
,
349
,
80
,
1647
,
505
,
1649
,
1650
,
501
,
77
,
522
,
/* 80 */
1
,
1627
,
1634
,
1633
,
1675
,
112
,
24
,
132
,
1647
,
505
,
/* 80 */
1
,
62
,
1715
,
1777
,
1181
,
519
,
273
,
1711
,
518
,
1261
,
/* 90 */
16
49
,
1650
,
501
,
522
,
522
,
1157
,
36
,
34
,
32
,
31
,
/* 90 */
16
34
,
113
,
398
,
309
,
108
,
1157
,
1775
,
104
,
1777
,
1470
,
/* 100 */
30
,
61
,
601
,
1247
,
271
,
483
,
14
,
519
,
35
,
33
,
/* 100 */
1774
,
1646
,
601
,
1473
,
419
,
271
,
14
,
317
,
35
,
33
,
/* 110 */
597
,
596
,
1165
,
1158
,
108
,
518
,
301
,
305
,
1159
,
104
,
/* 110 */
1631
,
147
,
1165
,
1158
,
1478
,
1774
,
301
,
38
,
1159
,
36
,
/* 120 */
1181
,
274
,
1473
,
110
,
939
,
128
,
419
,
130
,
2
,
1360
,
/* 120 */
34
,
32
,
31
,
30
,
388
,
1627
,
1633
,
56
,
2
,
1662
,
/* 130 */
54
,
484
,
1791
,
1480
,
1777
,
1478
,
519
,
69
,
212
,
1722
,
/* 130 */
1181
,
36
,
34
,
32
,
31
,
30
,
522
,
503
,
36
,
34
,
/* 140 */
478
,
1348
,
477
,
1157
,
1196
,
1777
,
1777
,
146
,
104
,
417
,
/* 140 */
32
,
31
,
30
,
1157
,
55
,
1523
,
1777
,
502
,
39
,
131
,
/* 150 */
601
,
1
774
,
1247
,
1248
,
14
,
424
,
1160
,
1471
,
147
,
177
5
,
/* 150 */
601
,
1
617
,
291
,
1435
,
14
,
1371
,
1160
,
1521
,
1662
,
14
5
,
/* 160 */
1165
,
1158
,
1774
,
1774
,
1478
,
103
,
102
,
101
,
100
,
99
,
/* 160 */
1165
,
1158
,
559
,
1774
,
1450
,
274
,
472
,
1675
,
140
,
1341
,
/* 170 */
98
,
97
,
96
,
95
,
1253
,
38
,
2
,
554
,
1163
,
1164
,
/* 170 */
132
,
1647
,
505
,
1649
,
1650
,
501
,
2
,
522
,
1163
,
1164
,
/* 180 */
54
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 180 */
1517
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 190 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
553
,
552
,
601
,
551
,
/* 190 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
1247
,
1410
,
601
,
519
,
/* 200 */
550
,
549
,
1248
,
495
,
1160
,
342
,
1309
,
341
,
148
,
1158
,
/* 200 */
1299
,
471
,
1183
,
55
,
1160
,
1617
,
1456
,
1196
,
148
,
1158
,
/* 210 */
27
,
299
,
1242
,
1243
,
1244
,
1245
,
1246
,
1250
,
1251
,
1252
,
/* 210 */
473
,
347
,
447
,
94
,
484
,
1791
,
93
,
92
,
91
,
90
,
/* 220 */
131
,
1183
,
506
,
1253
,
1435
,
304
,
1163
,
1164
,
156
8
,
1209
,
/* 220 */
89
,
88
,
87
,
86
,
85
,
1729
,
1163
,
1164
,
147
8
,
1209
,
/* 230 */
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
/* 230 */
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
/* 240 */
1226
,
1227
,
1228
,
1229
,
14
07
,
465
,
1307
,
1308
,
1310
,
1311
,
/* 240 */
1226
,
1227
,
1228
,
1229
,
14
54
,
148
,
1248
,
479
,
1523
,
1726
,
/* 250 */
55
,
54
,
1160
,
36
,
34
,
32
,
31
,
30
,
148
,
27
,
/* 250 */
1340
,
1777
,
1160
,
597
,
596
,
306
,
1309
,
433
,
432
,
55
,
/* 260 */
299
,
1242
,
1243
,
1244
,
1245
,
1246
,
1250
,
1251
,
1252
,
63
,
/* 260 */
1521
,
1523
,
431
,
398
,
145
,
109
,
428
,
1253
,
1774
,
427
,
/* 270 */
289
,
479
,
1284
,
188
,
1163
,
1164
,
1346
,
1209
,
1210
,
1212
,
/* 270 */
426
,
425
,
148
,
1522
,
1163
,
1164
,
112
,
1209
,
1210
,
1212
,
/* 280 */
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
1226
,
1227
,
/* 280 */
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
1226
,
1227
,
/* 290 */
1228
,
1229
,
35
,
33
,
36
,
34
,
32
,
31
,
30
,
112
,
/* 290 */
1228
,
1229
,
35
,
33
,
1349
,
465
,
1307
,
1308
,
1310
,
1311
,
/* 300 */
301
,
1456
,
1159
,
148
,
577
,
576
,
575
,
316
,
148
,
574
,
/* 300 */
301
,
556
,
1159
,
27
,
299
,
1242
,
1243
,
1244
,
1245
,
1246
,
/* 310 */
573
,
572
,
114
,
567
,
566
,
565
,
564
,
563
,
562
,
561
,
/* 310 */
1250
,
1251
,
1252
,
110
,
939
,
94
,
62
,
1469
,
93
,
92
,
/* 320 */
560
,
121
,
1299
,
1239
,
1523
,
313
,
54
,
1157
,
991
,
166
2
,
/* 320 */
91
,
90
,
89
,
88
,
87
,
86
,
85
,
1157
,
143
,
172
2
,
/* 330 */
306
,
1646
,
1559
,
1561
,
317
,
1521
,
472
,
110
,
140
,
311
,
/* 330 */
1723
,
148
,
1727
,
519
,
1184
,
519
,
479
,
1631
,
1474
,
417
,
/* 340 */
35
,
33
,
1230
,
473
,
1165
,
993
,
923
,
128
,
301
,
1517
,
/* 340 */
35
,
33
,
1230
,
506
,
1165
,
348
,
304
,
104
,
301
,
1568
,
/* 350 */
1159
,
481
,
142
,
1722
,
1723
,
1480
,
1727
,
26
,
398
,
1662
,
/* 350 */
1159
,
55
,
1627
,
1633
,
424
,
36
,
34
,
32
,
31
,
30
,
/* 360 */
8
,
36
,
34
,
32
,
31
,
30
,
503
,
36
,
34
,
32
,
/* 360 */
8
,
479
,
1478
,
522
,
1478
,
112
,
36
,
34
,
32
,
31
,
/* 370 */
3
1
,
30
,
471
,
468
,
1777
,
1157
,
502
,
1410
,
314
,
148
,
/* 370 */
3
0
,
1556
,
433
,
432
,
1635
,
1157
,
154
,
431
,
156
,
1646
,
/* 380 */
1617
,
556
,
601
,
462
,
927
,
928
,
128
,
145
,
35
,
33
,
/* 380 */
109
,
428
,
601
,
519
,
427
,
426
,
425
,
148
,
35
,
33
,
/* 390 */
334
,
1774
,
1165
,
1158
,
1480
,
518
,
301
,
1675
,
1159
,
5
3
,
/* 390 */
112
,
556
,
1165
,
1158
,
1631
,
358
,
301
,
305
,
1159
,
152
3
,
/* 400 */
268
,
1647
,
505
,
1649
,
1650
,
501
,
382
,
522
,
9
,
386
,
/* 400 */
60
,
274
,
110
,
59
,
1182
,
128
,
312
,
1662
,
9
,
1627
,
/* 410 */
336
,
332
,
1029
,
545
,
544
,
543
,
1033
,
542
,
1035
,
1036
,
/* 410 */
1633
,
1521
,
1478
,
1185
,
1480
,
503
,
481
,
142
,
1722
,
1723
,
/* 420 */
5
41
,
1038
,
538
,
1157
,
1044
,
535
,
1046
,
1047
,
532
,
529
,
/* 420 */
5
22
,
1727
,
468
,
1157
,
1196
,
502
,
342
,
110
,
341
,
1617
,
/* 430 */
601
,
36
,
34
,
32
,
31
,
30
,
1160
,
433
,
432
,
548
,
/* 430 */
601
,
313
,
1247
,
64
,
289
,
1397
,
1160
,
188
,
1559
,
1561
,
/* 440 */
1165
,
1158
,
431
,
474
,
469
,
109
,
428
,
1454
,
519
,
42
7
,
/* 440 */
1165
,
1158
,
144
,
1722
,
1723
,
1675
,
1727
,
548
,
263
,
164
7
,
/* 450 */
426
,
425
,
1185
,
1469
,
148
,
39
,
9
,
1729
,
1163
,
1164
,
/* 450 */
505
,
1649
,
1650
,
501
,
1370
,
522
,
9
,
434
,
1163
,
1164
,
/* 460 */
3
48
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 460 */
3
34
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 470 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
1478
,
1283
,
601
,
1292
,
/* 470 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
283
,
311
,
601
,
148
,
/* 480 */
1235
,
1725
,
433
,
432
,
1160
,
1183
,
1183
,
431
,
148
,
1158
,
/* 480 */
336
,
332
,
1248
,
1120
,
1160
,
128
,
475
,
455
,
148
,
1158
,
/* 490 */
109
,
428
,
1523
,
447
,
427
,
426
,
425
,
1341
,
312
,
1637
,
/* 490 */
373
,
1122
,
474
,
469
,
1480
,
1463
,
519
,
36
,
34
,
32
,
/* 500 */
1196
,
1159
,
1617
,
1521
,
556
,
455
,
1163
,
1164
,
30
9
,
1209
,
/* 500 */
31
,
30
,
1369
,
1253
,
1617
,
1465
,
1163
,
1164
,
35
9
,
1209
,
/* 510 */
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
/* 510 */
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
/* 520 */
1226
,
1227
,
1228
,
1229
,
154
,
1631
,
1157
,
36
,
34
,
32
,
/* 520 */
1226
,
1227
,
1228
,
1229
,
284
,
1478
,
282
,
281
,
1368
,
421
,
/* 530 */
31
,
30
,
1160
,
1777
,
390
,
1639
,
1523
,
386
,
388
,
1371
,
/* 530 */
558
,
1292
,
1160
,
423
,
158
,
157
,
456
,
1183
,
214
,
27
,
/* 540 */
1627
,
1634
,
1633
,
1165
,
1181
,
373
,
145
,
1522
,
59
,
1370
,
/* 540 */
299
,
1242
,
1243
,
1244
,
1245
,
1246
,
1250
,
1251
,
1252
,
1646
,
/* 550 */
1774
,
58
,
522
,
456
,
1163
,
1164
,
1646
,
1209
,
1210
,
1212
,
/* 550 */
382
,
1121
,
1617
,
386
,
1163
,
1164
,
422
,
1209
,
1210
,
1212
,
/* 560 */
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
1226
,
1227
,
/* 560 */
1213
,
1214
,
1215
,
1216
,
498
,
520
,
1224
,
1225
,
1226
,
1227
,
/* 570 */
1228
,
1229
,
35
,
33
,
270
,
519
,
1181
,
214
,
1340
,
61
,
/* 570 */
1228
,
1229
,
35
,
33
,
270
,
1777
,
1181
,
1662
,
1617
,
519
,
/* 580 */
301
,
601
,
1159
,
366
,
1662
,
519
,
378
,
358
,
1617
,
15
8
,
/* 580 */
301
,
314
,
1159
,
366
,
1249
,
482
,
378
,
1461
,
145
,
12
8
,
/* 590 */
157
,
503
,
1158
,
1777
,
128
,
1369
,
174
,
516
,
1617
,
1729
,
/* 590 */
554
,
397
,
1774
,
390
,
423
,
502
,
386
,
1235
,
1480
,
1617
,
/* 600 */
1474
,
502
,
1481
,
1478
,
379
,
1617
,
145
,
1157
,
139
,
519
,
/* 600 */
940
,
54
,
939
,
1183
,
379
,
1254
,
70
,
1157
,
1478
,
553
,
/* 610 */
1774
,
483
,
1368
,
1478
,
415
,
411
,
407
,
403
,
173
,
283
,
/* 610 */
552
,
1367
,
551
,
550
,
549
,
1675
,
1366
,
422
,
81
,
1647
,
/* 620 */
485
,
359
,
1675
,
1724
,
1165
,
259
,
1647
,
505
,
1649
,
1650
,
/* 620 */
505
,
1649
,
1650
,
501
,
1165
,
522
,
1365
,
1471
,
1715
,
941
,
/* 630 */
501
,
519
,
522
,
1120
,
940
,
1160
,
939
,
1478
,
479
,
445
,
/* 630 */
127
,
1186
,
294
,
1711
,
141
,
1407
,
32
,
31
,
30
,
191
,
/* 640 */
2
,
1122
,
62
,
397
,
1617
,
171
,
1367
,
1211
,
1211
,
11
,
/* 640 */
2
,
25
,
1029
,
545
,
544
,
543
,
1033
,
542
,
1035
,
1036
,
/* 650 */
10
,
1777
,
443
,
1366
,
430
,
429
,
7
,
1163
,
1164
,
1478
,
/* 650 */
541
,
1038
,
538
,
1743
,
1044
,
535
,
1046
,
1047
,
532
,
529
,
/* 660 */
127
,
1617
,
601
,
941
,
147
,
1365
,
112
,
284
,
1774
,
282
,
/* 660 */
497
,
1617
,
601
,
1364
,
1363
,
1362
,
1617
,
1359
,
1358
,
1357
,
/* 670 */
281
,
1184
,
421
,
1158
,
377
,
1364
,
423
,
372
,
371
,
370
,
/* 670 */
1356
,
1355
,
1354
,
1158
,
377
,
1353
,
1617
,
372
,
371
,
370
,
/* 680 */
369
,
368
,
365
,
364
,
363
,
362
,
361
,
357
,
356
,
355
,
/* 680 */
369
,
368
,
365
,
364
,
363
,
362
,
361
,
357
,
356
,
355
,
/* 690 */
354
,
353
,
352
,
351
,
350
,
1617
,
1183
,
519
,
519
,
422
,
/* 690 */
354
,
353
,
352
,
351
,
350
,
577
,
576
,
575
,
316
,
1211
,
/* 700 */
519
,
1121
,
1617
,
170
,
110
,
165
,
1455
,
167
,
479
,
1475
,
/* 700 */
574
,
573
,
572
,
114
,
567
,
566
,
565
,
564
,
563
,
562
,
/* 710 */
1597
,
1186
,
517
,
1249
,
1617
,
1363
,
1160
,
1362
,
1359
,
143
,
/* 710 */
561
,
560
,
121
,
1617
,
1617
,
1617
,
1160
,
1617
,
1617
,
1617
,
/* 720 */
1722
,
1723
,
487
,
1727
,
1617
,
1478
,
1478
,
163
,
1478
,
1261
,
/* 720 */
1617
,
1617
,
1617
,
1352
,
7
,
1617
,
128
,
1351
,
430
,
429
,
/* 730 */
1646
,
1358
,
1357
,
1356
,
1254
,
490
,
112
,
1355
,
1163
,
1164
,
/* 730 */
1646
,
571
,
569
,
1560
,
1561
,
1481
,
927
,
928
,
1163
,
1164
,
/* 740 */
1182
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 740 */
1729
,
1209
,
1210
,
1212
,
1213
,
1214
,
1215
,
1216
,
498
,
520
,
/* 750 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
519
,
246
,
1662
,
519
,
/* 750 */
1224
,
1225
,
1226
,
1227
,
1228
,
1229
,
199
,
129
,
1662
,
519
,
/* 760 */
1508
,
1354
,
1353
,
1352
,
1617
,
503
,
1617
,
1617
,
236
,
1556
,
/* 760 */
1284
,
1646
,
252
,
1729
,
1725
,
1211
,
503
,
991
,
1159
,
519
,
/* 770 */
25
,
315
,
571
,
569
,
110
,
502
,
156
,
927
,
928
,
1617
,
/* 770 */
1183
,
1475
,
1606
,
1617
,
250
,
53
,
502
,
1617
,
52
,
506
,
/* 780 */
1617
,
1617
,
1617
,
1351
,
1478
,
483
,
1617
,
1478
,
506
,
144
,
/* 780 */
1617
,
1597
,
1734
,
1280
,
993
,
1569
,
483
,
1724
,
1478
,
1662
,
/* 790 */
1722
,
1723
,
1606
,
1727
,
1569
,
559
,
1675
,
1450
,
554
,
79
,
/* 790 */
1144
,
1145
,
487
,
1157
,
479
,
159
,
1675
,
482
,
1478
,
80
,
/* 800 */
1647
,
505
,
1649
,
1650
,
501
,
1646
,
522
,
423
,
570
,
1715
,
/* 800 */
1647
,
505
,
1649
,
1650
,
501
,
246
,
522
,
502
,
1508
,
1715
,
/* 810 */
1617
,
1617
,
1617
,
273
,
1711
,
1560
,
1561
,
553
,
552
,
1397
,
/* 810 */
1165
,
1617
,
519
,
273
,
1711
,
570
,
454
,
324
,
179
,
55
,
/* 820 */
551
,
550
,
549
,
1734
,
1280
,
1777
,
1280
,
558
,
179
,
1392
,
/* 820 */
1168
,
177
,
485
,
112
,
516
,
1777
,
181
,
1675
,
490
,
180
,
/* 830 */
422
,
177
,
1617
,
1662
,
1144
,
1145
,
199
,
324
,
147
,
1465
,
/* 830 */
81
,
1647
,
505
,
1649
,
1650
,
501
,
1637
,
522
,
145
,
519
,
/* 840 */
503
,
434
,
1774
,
181
,
129
,
1390
,
180
,
1461
,
337
,
252
,
/* 840 */
1715
,
1478
,
1774
,
483
,
294
,
1711
,
141
,
183
,
601
,
185
,
/* 850 */
502
,
436
,
183
,
185
,
1617
,
182
,
184
,
118
,
1211
,
45
,
/* 850 */
182
,
517
,
184
,
445
,
495
,
337
,
79
,
1646
,
215
,
1158
,
/* 860 */
483
,
250
,
52
,
46
,
272
,
51
,
1646
,
439
,
202
,
11
,
/* 860 */
110
,
519
,
519
,
547
,
461
,
1742
,
443
,
964
,
1478
,
47
,
/* 870 */
10
,
1675
,
1343
,
1344
,
79
,
1647
,
505
,
1649
,
1650
,
501
,
/* 870 */
272
,
118
,
1639
,
236
,
315
,
212
,
1722
,
478
,
1392
,
477
,
/* 880 */
438
,
522
,
159
,
37
,
1715
,
37
,
191
,
37
,
273
,
1711
,
/* 880 */
11
,
10
,
1777
,
1390
,
965
,
1662
,
1171
,
58
,
57
,
346
,
/* 890 */
225
,
497
,
75
,
116
,
1662
,
446
,
547
,
457
,
454
,
1306
,
/* 890 */
1478
,
1478
,
153
,
503
,
1280
,
147
,
1361
,
340
,
46
,
1774
,
/* 900 */
1777
,
482
,
71
,
1361
,
117
,
1168
,
54
,
488
,
204
,
187
,
/* 900 */
436
,
1167
,
1160
,
502
,
202
,
439
,
37
,
1617
,
1436
,
269
,
/* 910 */
1436
,
502
,
118
,
145
,
1167
,
1617
,
1453
,
1774
,
218
,
1646
,
/* 910 */
37
,
457
,
330
,
37
,
326
,
322
,
150
,
225
,
1343
,
1344
,
/* 920 */
45
,
441
,
491
,
1255
,
209
,
1217
,
435
,
1115
,
466
,
1663
,
/* 920 */
1646
,
1455
,
116
,
1675
,
1163
,
1164
,
81
,
1647
,
505
,
1649
,
/* 930 */
227
,
186
,
1675
,
511
,
448
,
80
,
1647
,
505
,
1649
,
1650
,
/* 930 */
1650
,
501
,
1211
,
522
,
218
,
117
,
1715
,
466
,
1306
,
76
,
/* 940 */
501
,
527
,
522
,
78
,
233
,
1715
,
117
,
1662
,
1381
,
294
,
/* 940 */
294
,
1711
,
1790
,
448
,
204
,
118
,
1255
,
148
,
1662
,
72
,
/* 950 */
1711
,
141
,
1022
,
416
,
503
,
50
,
1518
,
480
,
49
,
1745
,
/* 950 */
1217
,
1749
,
1663
,
1115
,
1381
,
46
,
503
,
227
,
527
,
209
,
/* 960 */
245
,
217
,
220
,
215
,
502
,
118
,
3
,
1181
,
1617
,
461
,
/* 960 */
416
,
174
,
511
,
480
,
1518
,
1283
,
502
,
1170
,
1745
,
217
,
/* 970 */
1742
,
1171
,
1646
,
119
,
57
,
56
,
346
,
222
,
117
,
153
,
/* 970 */
1617
,
117
,
1646
,
139
,
1239
,
233
,
220
,
488
,
222
,
415
,
/* 980 */
1170
,
1050
,
319
,
323
,
340
,
1675
,
1054
,
964
,
263
,
1647
,
/* 980 */
411
,
407
,
403
,
173
,
118
,
1022
,
1675
,
119
,
117
,
81
,
/* 990 */
505
,
1649
,
1650
,
501
,
279
,
522
,
269
,
991
,
280
,
330
,
/* 990 */
1647
,
505
,
1649
,
1650
,
501
,
245
,
522
,
1453
,
1050
,
1715
,
/* 1000 */
1662
,
326
,
322
,
150
,
965
,
1061
,
241
,
482
,
554
,
1128
,
/* 1000 */
1662
,
3
,
1181
,
294
,
1711
,
1790
,
319
,
63
,
503
,
323
,
/* 1010 */
360
,
155
,
1558
,
1059
,
367
,
374
,
375
,
502
,
120
,
376
,
/* 1010 */
171
,
1054
,
991
,
554
,
1772
,
491
,
280
,
279
,
502
,
241
,
/* 1020 */
380
,
1617
,
1187
,
381
,
389
,
1190
,
475
,
553
,
552
,
392
,
/* 1020 */
1128
,
155
,
1617
,
360
,
1061
,
1558
,
367
,
1059
,
120
,
375
,
/* 1030 */
551
,
550
,
549
,
393
,
148
,
162
,
164
,
1189
,
1675
,
1349
,
/* 1030 */
374
,
1646
,
553
,
552
,
380
,
551
,
550
,
549
,
1675
,
1187
,
/* 1040 */
394
,
80
,
1647
,
505
,
1649
,
1650
,
501
,
1646
,
522
,
166
,
/* 1040 */
376
,
81
,
1647
,
505
,
1649
,
1650
,
501
,
438
,
522
,
381
,
/* 1050 */
395
,
1715
,
1188
,
396
,
169
,
294
,
1711
,
141
,
60
,
399
,
/* 1050 */
389
,
1715
,
1190
,
162
,
392
,
294
,
1711
,
1790
,
393
,
1662
,
/* 1060 */
94
,
172
,
420
,
93
,
92
,
91
,
90
,
89
,
88
,
87
,
/* 1060 */
1189
,
164
,
446
,
394
,
166
,
395
,
1733
,
503
,
170
,
1188
,
/* 1070 */
86
,
85
,
1468
,
418
,
288
,
1662
,
1743
,
1165
,
176
,
1464
,
/* 1070 */
165
,
396
,
167
,
399
,
169
,
61
,
187
,
502
,
418
,
172
,
/* 1080 */
1646
,
84
,
503
,
178
,
122
,
1601
,
123
,
242
,
189
,
1466
,
/* 1080 */
1165
,
1617
,
1646
,
420
,
1468
,
176
,
1464
,
483
,
441
,
554
,
/* 1090 */
1462
,
124
,
502
,
125
,
449
,
1186
,
1617
,
450
,
192
,
453
,
/* 1090 */
84
,
242
,
163
,
435
,
288
,
1601
,
178
,
1675
,
186
,
1646
,
/* 1100 */
1746
,
243
,
194
,
467
,
458
,
197
,
1756
,
509
,
1662
,
6
,
/* 1100 */
259
,
1647
,
505
,
1649
,
1650
,
501
,
122
,
522
,
553
,
552
,
/* 1110 */
459
,
1755
,
476
,
1675
,
1736
,
503
,
80
,
1647
,
505
,
1649
,
/* 1110 */
1662
,
551
,
550
,
549
,
123
,
1466
,
1462
,
124
,
503
,
125
,
/* 1120 */
1650
,
501
,
464
,
522
,
293
,
502
,
1715
,
200
,
470
,
1617
,
/* 1120 */
449
,
189
,
51
,
453
,
450
,
50
,
1777
,
1662
,
502
,
243
,
/* 1130 */
294
,
1711
,
1790
,
463
,
203
,
5
,
208
,
1280
,
135
,
210
,
/* 1130 */
458
,
192
,
1617
,
194
,
1186
,
503
,
197
,
459
,
483
,
147
,
/* 1140 */
111
,
1749
,
1646
,
1185
,
40
,
492
,
1675
,
295
,
1730
,
80
,
/* 1140 */
1746
,
467
,
509
,
1774
,
1756
,
502
,
6
,
200
,
1675
,
1617
,
/* 1150 */
1647
,
505
,
1649
,
1650
,
501
,
216
,
522
,
1567
,
489
,
1715
,
/* 1150 */
463
,
259
,
1647
,
505
,
1649
,
1650
,
501
,
1646
,
522
,
464
,
/* 1160 */
18
,
1566
,
211
,
294
,
1711
,
1790
,
512
,
229
,
507
,
244
,
/* 1160 */
476
,
5
,
1736
,
203
,
1755
,
1675
,
293
,
210
,
82
,
1647
,
/* 1170 */
1662
,
508
,
303
,
513
,
1772
,
514
,
70
,
503
,
231
,
1696
,
/* 1170 */
505
,
1649
,
1650
,
501
,
1280
,
522
,
111
,
1777
,
1715
,
470
,
/* 1180 */
68
,
525
,
1793
,
1479
,
247
,
1451
,
238
,
502
,
600
,
1611
,
/* 1180 */
208
,
1185
,
1714
,
1711
,
1348
,
1662
,
40
,
211
,
492
,
1646
,
/* 1190 */
290
,
1617
,
47
,
1773
,
249
,
134
,
1646
,
253
,
251
,
1610
,
/* 1190 */
145
,
1773
,
135
,
503
,
1774
,
1730
,
295
,
489
,
18
,
1567
,
/* 1200 */
486
,
219
,
260
,
318
,
221
,
1646
,
254
,
1607
,
1675
,
493
,
/* 1200 */
1793
,
507
,
508
,
502
,
1566
,
512
,
303
,
1617
,
103
,
102
,
/* 1210 */
320
,
80
,
1647
,
505
,
1649
,
1650
,
501
,
321
,
522
,
1153
,
/* 1210 */
101
,
100
,
99
,
98
,
97
,
96
,
95
,
1662
,
216
,
479
,
/* 1220 */
1154
,
1715
,
151
,
325
,
1662
,
294
,
1711
,
1790
,
1605
,
327
,
/* 1220 */
1696
,
513
,
229
,
1675
,
219
,
500
,
82
,
1647
,
505
,
1649
,
/* 1230 */
328
,
503
,
1604
,
1662
,
329
,
331
,
1733
,
1603
,
333
,
1602
,
/* 1230 */
1650
,
501
,
514
,
522
,
231
,
502
,
1715
,
69
,
486
,
1617
,
/* 1240 */
503
,
502
,
335
,
1587
,
152
,
1617
,
338
,
339
,
1131
,
1130
,
/* 1240 */
494
,
1711
,
1646
,
493
,
221
,
244
,
1479
,
71
,
112
,
525
,
/* 1250 */
502
,
1581
,
1580
,
344
,
1617
,
1579
,
345
,
1578
,
1098
,
1646
,
/* 1250 */
1451
,
247
,
600
,
238
,
48
,
1675
,
134
,
253
,
267
,
1647
,
/* 1260 */
483
,
1551
,
1675
,
1550
,
1549
,
132
,
1647
,
505
,
1649
,
1650
,
/* 1260 */
505
,
1649
,
1650
,
501
,
499
,
522
,
496
,
1687
,
483
,
290
,
/* 1270 */
501
,
1675
,
522
,
1548
,
259
,
1647
,
505
,
1649
,
1650
,
501
,
/* 1270 */
1662
,
260
,
249
,
254
,
251
,
1611
,
1610
,
318
,
503
,
1607
,
/* 1280 */
1547
,
522
,
1546
,
1545
,
1544
,
1543
,
1542
,
1662
,
1541
,
1540
,
/* 1280 */
320
,
321
,
1153
,
1154
,
151
,
110
,
325
,
1605
,
502
,
327
,
/* 1290 */
1539
,
1538
,
1537
,
1536
,
503
,
1535
,
1534
,
1533
,
115
,
1646
,
/* 1290 */
328
,
329
,
1617
,
1604
,
331
,
1603
,
333
,
1602
,
335
,
1646
,
/* 1300 */
1777
,
1532
,
1531
,
1530
,
502
,
1529
,
1528
,
1527
,
1617
,
1100
,
/* 1300 */
212
,
1722
,
478
,
1587
,
477
,
152
,
339
,
1777
,
1675
,
338
,
/* 1310 */
1792
,
1526
,
1525
,
145
,
1524
,
1409
,
1377
,
1774
,
1646
,
160
,
/* 1310 */
1131
,
82
,
1647
,
505
,
1649
,
1650
,
501
,
1581
,
522
,
1130
,
/* 1320 */
1376
,
385
,
138
,
401
,
930
,
1675
,
1595
,
1662
,
81
,
1647
,
/* 1320 */
145
,
1715
,
1580
,
344
,
1774
,
345
,
1712
,
1662
,
604
,
1579
,
/* 1330 */
505
,
1649
,
1650
,
501
,
503
,
522
,
106
,
929
,
1715
,
405
,
/* 1330 */
1578
,
1551
,
1098
,
1550
,
1549
,
503
,
1548
,
1547
,
1546
,
1545
,
/* 1340 */
1402
,
107
,
1714
,
1711
,
502
,
1589
,
1662
,
1573
,
1617
,
1564
,
/* 1340 */
1544
,
1543
,
240
,
1100
,
115
,
502
,
1646
,
1542
,
1541
,
1617
,
/* 1350 */
1457
,
161
,
387
,
500
,
168
,
1408
,
1406
,
958
,
402
,
1404
,
/* 1350 */
1540
,
1539
,
462
,
1538
,
105
,
1537
,
1536
,
1535
,
1534
,
1533
,
/* 1360 */
1400
,
406
,
410
,
502
,
414
,
1675
,
400
,
1617
,
81
,
1647
,
/* 1360 */
593
,
589
,
585
,
581
,
239
,
1675
,
1532
,
1531
,
268
,
1647
,
/* 1370 */
505
,
1649
,
1650
,
501
,
1646
,
522
,
404
,
408
,
1715
,
409
,
/* 1370 */
505
,
1649
,
1650
,
501
,
1662
,
522
,
1530
,
1529
,
1528
,
1527
,
/* 1380 */
412
,
413
,
494
,
1711
,
1675
,
1389
,
1388
,
267
,
1647
,
505
,
/* 1380 */
1526
,
1525
,
503
,
1524
,
1409
,
1646
,
1377
,
138
,
78
,
160
,
/* 1390 */
1649
,
1650
,
501
,
499
,
522
,
496
,
1687
,
1375
,
1459
,
1065
,
/* 1390 */
1376
,
234
,
502
,
1595
,
1589
,
1573
,
1617
,
106
,
385
,
930
,
/* 1400 */
1064
,
1458
,
1662
,
604
,
990
,
989
,
568
,
83
,
988
,
503
,
/* 1400 */
161
,
929
,
107
,
1564
,
1457
,
387
,
168
,
1408
,
1406
,
401
,
/* 1410 */
987
,
570
,
1398
,
984
,
983
,
175
,
285
,
240
,
982
,
502
,
/* 1410 */
400
,
958
,
1675
,
1662
,
1404
,
132
,
1647
,
505
,
1649
,
1650
,
/* 1420 */
437
,
286
,
1391
,
1617
,
1393
,
287
,
440
,
1374
,
442
,
105
,
/* 1420 */
501
,
503
,
522
,
1402
,
1400
,
515
,
402
,
1389
,
406
,
404
,
/* 1430 */
1373
,
444
,
1594
,
1646
,
82
,
593
,
589
,
585
,
581
,
239
,
/* 1430 */
1388
,
502
,
175
,
405
,
410
,
1617
,
1646
,
414
,
298
,
408
,
/* 1440 */
1675
,
1588
,
1138
,
81
,
1647
,
505
,
1649
,
1650
,
501
,
1572
,
/* 1440 */
1375
,
409
,
1459
,
1458
,
413
,
412
,
1398
,
1064
,
1065
,
990
,
/* 1450 */
522
,
451
,
1571
,
1715
,
1563
,
64
,
196
,
4
,
1712
,
37
,
/* 1450 */
460
,
1675
,
989
,
195
,
268
,
1647
,
505
,
1649
,
1650
,
501
,
/* 1460 */
15
,
1662
,
201
,
77
,
43
,
207
,
234
,
48
,
503
,
1305
,
/* 1460 */
1792
,
522
,
45
,
988
,
1662
,
1646
,
987
,
568
,
1393
,
570
,
/* 1470 */
133
,
205
,
22
,
41
,
1298
,
206
,
452
,
193
,
502
,
1637
,
/* 1470 */
285
,
1136
,
500
,
190
,
286
,
1391
,
984
,
287
,
983
,
1374
,
/* 1480 */
65
,
198
,
1617
,
23
,
16
,
298
,
1277
,
1646
,
1276
,
213
,
/* 1480 */
982
,
440
,
502
,
437
,
442
,
1373
,
1617
,
444
,
1594
,
83
,
/* 1490 */
136
,
308
,
307
,
126
,
42
,
1329
,
1334
,
17
,
1323
,
1675
,
/* 1490 */
1588
,
1138
,
451
,
1662
,
1572
,
1571
,
126
,
1646
,
1563
,
4
,
/* 1500 */
515
,
1173
,
268
,
1647
,
505
,
1649
,
1650
,
501
,
1328
,
522
,
/* 1500 */
65
,
503
,
1675
,
196
,
37
,
267
,
1647
,
505
,
1649
,
1650
,
/* 1510 */
296
,
1333
,
13
,
1332
,
297
,
1662
,
10
,
1646
,
19
,
1219
,
/* 1510 */
501
,
502
,
522
,
49
,
1688
,
1617
,
452
,
193
,
300
,
15
,
/* 1520 */
1240
,
1218
,
500
,
29
,
137
,
460
,
1166
,
12
,
195
,
149
,
/* 1520 */
201
,
43
,
1305
,
206
,
41
,
1662
,
1298
,
133
,
207
,
205
,
/* 1530 */
20
,
1204
,
502
,
504
,
1562
,
21
,
1617
,
230
,
224
,
1303
,
/* 1530 */
22
,
1675
,
23
,
503
,
268
,
1647
,
505
,
1649
,
1650
,
501
,
/* 1540 */
226
,
71
,
228
,
1165
,
1175
,
1662
,
1136
,
510
,
190
,
66
,
/* 1540 */
1637
,
522
,
1277
,
502
,
66
,
213
,
198
,
1617
,
1276
,
42
,
/* 1550 */
1646
,
232
,
503
,
1675
,
67
,
1636
,
267
,
1647
,
505
,
1649
,
/* 1550 */
302
,
136
,
1334
,
1646
,
16
,
17
,
13
,
1323
,
1329
,
10
,
/* 1560 */
1650
,
501
,
502
,
522
,
235
,
1688
,
1617
,
1678
,
521
,
300
,
/* 1560 */
1328
,
19
,
296
,
1675
,
1333
,
1332
,
268
,
1647
,
505
,
1649
,
/* 1570 */
1221
,
44
,
524
,
1051
,
526
,
310
,
528
,
530
,
1662
,
1048
,
/* 1570 */
1650
,
501
,
297
,
522
,
1219
,
137
,
149
,
29
,
1204
,
510
,
/* 1580 */
1646
,
523
,
531
,
1675
,
1045
,
503
,
268
,
1647
,
505
,
1649
,
/* 1580 */
1218
,
1662
,
12
,
20
,
1646
,
21
,
226
,
1240
,
1562
,
503
,
/* 1590 */
1650
,
501
,
1169
,
522
,
533
,
502
,
1039
,
534
,
536
,
1617
,
/* 1590 */
504
,
224
,
230
,
232
,
72
,
1636
,
235
,
1303
,
1175
,
502
,
/* 1600 */
1037
,
537
,
302
,
539
,
540
,
1028
,
1060
,
1058
,
1662
,
1043
,
/* 1600 */
1221
,
228
,
67
,
1617
,
68
,
526
,
1678
,
521
,
44
,
310
,
/* 1610 */
1646
,
1042
,
479
,
72
,
1041
,
503
,
1675
,
1040
,
546
,
268
,
/* 1610 */
1051
,
1048
,
1662
,
1646
,
524
,
528
,
530
,
531
,
533
,
1675
,
/* 1620 */
1647
,
505
,
1649
,
1650
,
501
,
502
,
522
,
1057
,
73
,
1617
,
/* 1620 */
503
,
1045
,
255
,
1647
,
505
,
1649
,
1650
,
501
,
534
,
522
,
/* 1630 */
74
,
1056
,
956
,
555
,
997
,
1174
,
557
,
237
,
1662
,
978
,
/* 1630 */
502
,
1039
,
536
,
537
,
1617
,
1037
,
539
,
1043
,
1042
,
540
,
/* 1640 */
112
,
977
,
976
,
973
,
975
,
503
,
1675
,
974
,
972
,
255
,
/* 1640 */
1041
,
1662
,
1040
,
1028
,
73
,
74
,
1060
,
75
,
1057
,
503
,
/* 1650 */
1647
,
505
,
1649
,
1650
,
501
,
502
,
522
,
1177
,
971
,
1617
,
/* 1650 */
1675
,
1056
,
546
,
262
,
1647
,
505
,
1649
,
1650
,
501
,
502
,
/* 1660 */
483
,
1646
,
994
,
992
,
968
,
967
,
966
,
963
,
520
,
1224
,
/* 1660 */
522
,
956
,
1646
,
1617
,
555
,
557
,
237
,
997
,
308
,
307
,
/* 1670 */
1225
,
962
,
961
,
1405
,
578
,
579
,
1675
,
1646
,
110
,
262
,
/* 1670 */
978
,
977
,
973
,
1646
,
1058
,
976
,
994
,
975
,
1173
,
1675
,
/* 1680 */
1647
,
505
,
1649
,
1650
,
501
,
580
,
522
,
1403
,
582
,
1662
,
/* 1680 */
974
,
972
,
264
,
1647
,
505
,
1649
,
1650
,
501
,
971
,
522
,
/* 1690 */
583
,
584
,
1401
,
212
,
1722
,
478
,
503
,
477
,
586
,
588
,
/* 1690 */
1662
,
992
,
968
,
967
,
966
,
963
,
962
,
1405
,
503
,
961
,
/* 1700 */
1777
,
1399
,
587
,
591
,
592
,
1662
,
502
,
590
,
1387
,
595
,
/* 1700 */
578
,
1662
,
579
,
1166
,
580
,
1403
,
582
,
583
,
502
,
503
,
/* 1710 */
1617
,
594
,
503
,
145
,
1386
,
1372
,
598
,
1774
,
599
,
1347
,
/* 1710 */
584
,
1401
,
1617
,
586
,
587
,
588
,
1399
,
590
,
592
,
502
,
/* 1720 */
1161
,
248
,
502
,
602
,
1646
,
603
,
1617
,
1675
,
1347
,
1347
,
/* 1720 */
1165
,
591
,
1387
,
1617
,
1646
,
1386
,
594
,
1372
,
1675
,
595
,
/* 1730 */
264
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
1347
,
1347
,
/* 1730 */
598
,
256
,
1647
,
505
,
1649
,
1650
,
501
,
1161
,
522
,
1675
,
/* 1740 */
1347
,
1347
,
1646
,
1675
,
1347
,
1347
,
256
,
1647
,
505
,
1649
,
/* 1740 */
599
,
603
,
265
,
1647
,
505
,
1649
,
1650
,
501
,
248
,
522
,
/* 1750 */
1650
,
501
,
1662
,
522
,
1347
,
1347
,
1347
,
1646
,
1347
,
503
,
/* 1750 */
602
,
1347
,
1662
,
1646
,
1347
,
1347
,
1347
,
1347
,
523
,
1347
,
/* 1760 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
/* 1760 */
503
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1169
,
/* 1770 */
1662
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
503
,
1347
,
1347
,
/* 1770 */
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1780 */
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
1347
,
502
,
1347
,
1347
,
/* 1780 */
1347
,
1662
,
1347
,
1347
,
1347
,
1646
,
1347
,
1347
,
1347
,
503
,
/* 1790 */
1675
,
1617
,
503
,
265
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
/* 1790 */
1675
,
1347
,
1347
,
257
,
1647
,
505
,
1649
,
1650
,
501
,
502
,
/* 1800 */
522
,
1347
,
502
,
1347
,
1646
,
1347
,
1617
,
1347
,
1675
,
1347
,
/* 1800 */
522
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1810 */
1347
,
257
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
1347
,
/* 1810 */
1347
,
1347
,
1174
,
1662
,
1347
,
1347
,
1347
,
1347
,
1347
,
1675
,
/* 1820 */
1646
,
1347
,
1347
,
1675
,
1347
,
1347
,
266
,
1647
,
505
,
1649
,
/* 1820 */
1347
,
503
,
266
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
/* 1830 */
1650
,
501
,
1662
,
522
,
1347
,
1347
,
1347
,
1347
,
1347
,
503
,
/* 1830 */
1347
,
502
,
1347
,
1347
,
1177
,
1617
,
1347
,
1347
,
1347
,
1347
,
/* 1840 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
502
,
/* 1840 */
1347
,
1646
,
1347
,
1347
,
1347
,
520
,
1224
,
1225
,
1347
,
1347
,
/* 1850 */
1347
,
1347
,
1347
,
1617
,
1347
,
503
,
1347
,
1347
,
1347
,
1347
,
/* 1850 */
1347
,
1675
,
1347
,
1347
,
258
,
1647
,
505
,
1649
,
1650
,
501
,
/* 1860 */
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
1347
,
1646
,
1347
,
1617
,
/* 1860 */
1347
,
522
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
/* 1870 */
1675
,
1347
,
1347
,
258
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
/* 1870 */
1347
,
1347
,
1646
,
1347
,
1347
,
1347
,
1347
,
503
,
1347
,
1347
,
/* 1880 */
522
,
1347
,
1347
,
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
1658
,
/* 1880 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
1347
,
1347
,
/* 1890 */
1647
,
505
,
1649
,
1650
,
501
,
1662
,
522
,
1646
,
1347
,
1347
,
/* 1890 */
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1900 */
1347
,
1347
,
503
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1900 */
1662
,
1646
,
1347
,
1347
,
1347
,
1347
,
1347
,
1675
,
503
,
1347
,
/* 1910 */
1347
,
1347
,
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
/* 1910 */
1658
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
502
,
1347
,
/* 1920 */
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
/* 1920 */
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
/* 1930 */
1347
,
1347
,
503
,
1675
,
1347
,
1347
,
1657
,
1647
,
505
,
1649
,
/* 1930 */
1347
,
1347
,
1646
,
1347
,
1347
,
1347
,
1347
,
503
,
1675
,
1347
,
/* 1940 */
1650
,
501
,
502
,
522
,
1347
,
1347
,
1617
,
1646
,
1347
,
1347
,
/* 1940 */
1347
,
1657
,
1647
,
505
,
1649
,
1650
,
501
,
502
,
522
,
1347
,
/* 1950 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1950 */
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1960 */
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
1656
,
1647
,
505
,
1649
,
/* 1960 */
1662
,
1646
,
1347
,
1347
,
1347
,
1347
,
1347
,
1675
,
503
,
1347
,
/* 1970 */
1650
,
501
,
1347
,
522
,
1347
,
1662
,
1347
,
1646
,
1347
,
1347
,
/* 1970 */
1656
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
502
,
1347
,
/* 1980 */
1347
,
1347
,
503
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 1980 */
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
/* 1990 */
1347
,
1347
,
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
/* 1990 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
503
,
1675
,
1347
,
/* 2000 */
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
/* 2000 */
1347
,
277
,
1647
,
505
,
1649
,
1650
,
501
,
502
,
522
,
1347
,
/* 2010 */
1347
,
1347
,
503
,
1675
,
1347
,
1347
,
277
,
1647
,
505
,
1649
,
/* 2010 */
1347
,
1617
,
1646
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 2020 */
1650
,
501
,
502
,
522
,
1347
,
1347
,
1617
,
1646
,
1347
,
1347
,
/* 2020 */
1347
,
1347
,
1347
,
1646
,
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
/* 2030 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1646
,
1347
,
1347
,
1347
,
/* 2030 */
276
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
1347
,
1347
,
/* 2040 */
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
276
,
1647
,
505
,
1649
,
/* 2040 */
1662
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
503
,
1347
,
/* 2050 */
1650
,
501
,
1347
,
522
,
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
/* 2050 */
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
503
,
/* 2060 */
1347
,
1347
,
503
,
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 2060 */
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
/* 2070 */
1347
,
503
,
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
/* 2070 */
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1646
,
1675
,
1347
,
/* 2080 */
1347
,
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
1347
,
1347
,
/* 2080 */
1347
,
278
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
1675
,
/* 2090 */
1646
,
1347
,
1347
,
1675
,
1347
,
1347
,
278
,
1647
,
505
,
1649
,
/* 2090 */
1347
,
1347
,
275
,
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
/* 2100 */
1650
,
501
,
1675
,
522
,
1347
,
275
,
1647
,
505
,
1649
,
1650
,
/* 2100 */
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
1347
,
1347
,
1347
,
1347
,
/* 2110 */
501
,
1347
,
522
,
1347
,
1347
,
1347
,
1347
,
1347
,
1662
,
1347
,
/* 2110 */
1347
,
1347
,
1347
,
503
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 2120 */
1347
,
1347
,
1347
,
1347
,
1347
,
503
,
1347
,
1347
,
1347
,
1347
,
/* 2120 */
1347
,
1347
,
1347
,
502
,
1347
,
1347
,
1347
,
1617
,
1347
,
1347
,
/* 2130 */
1347
,
1347
,
1347
,
1347
,
1347
,
502
,
1347
,
1347
,
1347
,
1617
,
/* 2130 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 2140 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
/* 2140 */
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
261
,
1647
,
505
,
1649
,
/* 2150 */
1347
,
1347
,
1347
,
1347
,
1347
,
1347
,
1675
,
1347
,
1347
,
261
,
/* 2150 */
1650
,
501
,
1347
,
522
,
/* 2160 */
1647
,
505
,
1649
,
1650
,
501
,
1347
,
522
,
};
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
2
44
,
251
,
246
,
247
,
244
,
248
,
246
,
247
,
290
,
32
1
,
/* 0 */
2
70
,
336
,
336
,
241
,
244
,
271
,
246
,
247
,
274
,
1
,
/* 10 */
322
,
270
,
12
,
13
,
264
,
270
,
296
,
260
,
241
,
336
,
/* 10 */
2
,
297
,
12
,
13
,
349
,
349
,
2
,
4
,
353
,
353
,
/* 20 */
20
,
2
71
,
22
,
305
,
306
,
307
,
12
,
13
,
14
,
15
,
/* 20 */
20
,
2
44
,
22
,
246
,
247
,
291
,
12
,
13
,
14
,
15
,
/* 30 */
16
,
308
,
349
,
276
,
21
,
317
,
353
,
24
,
25
,
26
,
/* 30 */
16
,
269
,
2
,
12
,
13
,
14
,
15
,
16
,
20
,
277
,
/* 40 */
27
,
28
,
29
,
30
,
31
,
32
,
269
,
47
,
269
,
273
,
/* 40 */
306
,
307
,
12
,
13
,
14
,
15
,
16
,
47
,
238
,
287
,
/* 50 */
14
,
15
,
16
,
276
,
275
,
332
,
336
,
248
,
58
,
280
,
/* 50 */
336
,
317
,
240
,
291
,
242
,
42
,
43
,
20
,
58
,
297
,
/* 60 */
12
,
13
,
14
,
286
,
64
,
20
,
290
,
290
,
20
,
349
,
/* 60 */
12
,
13
,
14
,
349
,
64
,
321
,
322
,
353
,
20
,
307
,
/* 70 */
22
,
248
,
58
,
353
,
57
,
12
,
13
,
14
,
15
,
16
,
/* 70 */
22
,
248
,
310
,
311
,
312
,
313
,
314
,
315
,
251
,
317
,
/* 80 */
80
,
305
,
306
,
307
,
307
,
276
,
2
,
310
,
311
,
312
,
/* 80 */
80
,
253
,
320
,
336
,
20
,
248
,
324
,
325
,
20
,
81
,
/* 90 */
313
,
314
,
315
,
317
,
317
,
47
,
12
,
13
,
14
,
15
,
/* 90 */
271
,
264
,
57
,
274
,
266
,
47
,
349
,
260
,
336
,
272
,
/* 100 */
16
,
253
,
102
,
89
,
281
,
296
,
58
,
248
,
12
,
13
,
/* 100 */
353
,
241
,
102
,
275
,
267
,
282
,
58
,
297
,
12
,
13
,
/* 110 */
2
49
,
250
,
64
,
113
,
266
,
20
,
20
,
261
,
22
,
260
,
/* 110 */
2
91
,
349
,
64
,
113
,
277
,
353
,
20
,
80
,
22
,
12
,
/* 120 */
20
,
58
,
274
,
314
,
22
,
269
,
267
,
240
,
80
,
242
,
/* 120 */
13
,
14
,
15
,
16
,
14
,
306
,
307
,
4
,
80
,
269
,
/* 130 */
80
,
354
,
355
,
277
,
336
,
276
,
248
,
251
,
329
,
330
,
/* 130 */
20
,
12
,
13
,
14
,
15
,
16
,
317
,
277
,
12
,
13
,
/* 140 */
331
,
0
,
333
,
47
,
81
,
336
,
336
,
349
,
260
,
47
,
/* 140 */
14
,
15
,
16
,
47
,
80
,
269
,
336
,
287
,
80
,
254
,
/* 150 */
102
,
353
,
89
,
139
,
58
,
267
,
156
,
271
,
34
9
,
349
,
/* 150 */
102
,
291
,
276
,
258
,
58
,
241
,
156
,
281
,
26
9
,
349
,
/* 160 */
64
,
113
,
353
,
353
,
276
,
24
,
25
,
26
,
27
,
2
8
,
/* 160 */
64
,
113
,
257
,
353
,
259
,
58
,
277
,
307
,
268
,
14
8
,
/* 170 */
29
,
30
,
31
,
32
,
160
,
80
,
80
,
92
,
178
,
179
,
/* 170 */
310
,
311
,
312
,
313
,
314
,
315
,
80
,
317
,
178
,
179
,
/* 180 */
80
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 180 */
2
80
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 190 */
190
,
191
,
192
,
193
,
194
,
195
,
111
,
112
,
102
,
114
,
/* 190 */
190
,
191
,
192
,
193
,
194
,
195
,
89
,
0
,
102
,
248
,
/* 200 */
115
,
116
,
139
,
58
,
156
,
155
,
178
,
157
,
208
,
113
,
/* 200 */
81
,
312
,
20
,
80
,
156
,
291
,
0
,
81
,
208
,
113
,
/* 210 */
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
/* 210 */
20
,
260
,
297
,
21
,
354
,
355
,
24
,
25
,
26
,
27
,
/* 220 */
254
,
20
,
286
,
160
,
258
,
289
,
178
,
179
,
292
,
181
,
/* 220 */
28
,
29
,
30
,
31
,
32
,
308
,
178
,
179
,
277
,
181
,
/* 230 */
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 230 */
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 240 */
192
,
193
,
194
,
195
,
0
,
2
17
,
218
,
219
,
220
,
221
,
/* 240 */
192
,
193
,
194
,
195
,
0
,
2
08
,
139
,
248
,
269
,
332
,
/* 250 */
4
,
80
,
156
,
12
,
13
,
14
,
15
,
16
,
208
,
196
,
/* 250 */
229
,
336
,
156
,
249
,
250
,
276
,
178
,
60
,
61
,
80
,
/* 260 */
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
165
,
/* 260 */
281
,
269
,
65
,
57
,
349
,
68
,
69
,
160
,
353
,
72
,
/* 270 */
166
,
248
,
4
,
169
,
178
,
179
,
238
,
181
,
182
,
183
,
/* 270 */
73
,
74
,
208
,
281
,
178
,
179
,
277
,
181
,
182
,
183
,
/* 280 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 280 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 290 */
194
,
195
,
12
,
13
,
12
,
13
,
14
,
15
,
16
,
276
,
/* 290 */
194
,
195
,
12
,
13
,
0
,
217
,
218
,
219
,
220
,
221
,
/* 300 */
20
,
0
,
22
,
208
,
60
,
61
,
62
,
63
,
208
,
65
,
/* 300 */
20
,
57
,
22
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
/* 310 */
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
7
5
,
/* 310 */
203
,
204
,
205
,
314
,
22
,
21
,
253
,
271
,
24
,
2
5
,
/* 320 */
76
,
77
,
81
,
178
,
269
,
278
,
80
,
47
,
47
,
269
,
/* 320 */
26
,
27
,
28
,
29
,
30
,
31
,
32
,
47
,
329
,
330
,
/* 330 */
275
,
241
,
285
,
286
,
296
,
280
,
276
,
314
,
268
,
261
,
/* 330 */
331
,
208
,
333
,
248
,
20
,
248
,
248
,
291
,
275
,
47
,
/* 340 */
12
,
13
,
14
,
20
,
64
,
64
,
4
,
269
,
20
,
279
,
/* 340 */
12
,
13
,
14
,
287
,
64
,
260
,
290
,
260
,
20
,
293
,
/* 350 */
22
,
328
,
329
,
330
,
331
,
277
,
333
,
2
,
57
,
269
,
/* 350 */
22
,
80
,
306
,
307
,
267
,
12
,
13
,
14
,
15
,
16
,
/* 360 */
80
,
12
,
13
,
14
,
15
,
16
,
276
,
12
,
13
,
14
,
/* 360 */
80
,
248
,
277
,
317
,
277
,
277
,
12
,
13
,
14
,
15
,
/* 370 */
1
5
,
16
,
312
,
143
,
336
,
47
,
286
,
0
,
261
,
208
,
/* 370 */
1
6
,
277
,
60
,
61
,
271
,
47
,
55
,
65
,
284
,
241
,
/* 380 */
290
,
57
,
102
,
293
,
42
,
43
,
269
,
349
,
12
,
13
,
/* 380 */
68
,
69
,
102
,
248
,
72
,
73
,
74
,
208
,
12
,
13
,
/* 390 */
151
,
353
,
64
,
113
,
277
,
20
,
20
,
307
,
22
,
3
,
/* 390 */
277
,
57
,
64
,
113
,
291
,
260
,
20
,
261
,
22
,
269
,
/* 400 */
310
,
311
,
312
,
313
,
314
,
315
,
245
,
317
,
80
,
248
,
/* 400 */
79
,
58
,
314
,
82
,
20
,
269
,
276
,
269
,
80
,
306
,
/* 410 */
171
,
172
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
/* 410 */
307
,
281
,
277
,
20
,
278
,
277
,
328
,
329
,
330
,
331
,
/* 420 */
101
,
102
,
103
,
47
,
105
,
106
,
107
,
108
,
109
,
110
,
/* 420 */
317
,
333
,
143
,
47
,
81
,
287
,
155
,
314
,
157
,
291
,
/* 430 */
102
,
12
,
13
,
14
,
15
,
16
,
156
,
60
,
61
,
91
,
/* 430 */
102
,
279
,
89
,
165
,
166
,
0
,
156
,
169
,
286
,
287
,
/* 440 */
64
,
113
,
65
,
213
,
214
,
68
,
69
,
0
,
248
,
72
,
/* 440 */
64
,
113
,
329
,
330
,
331
,
307
,
333
,
91
,
310
,
311
,
/* 450 */
73
,
74
,
20
,
241
,
208
,
80
,
80
,
308
,
178
,
179
,
/* 450 */
312
,
313
,
314
,
315
,
241
,
317
,
80
,
22
,
178
,
179
,
/* 460 */
260
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 460 */
151
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 470 */
190
,
191
,
192
,
193
,
194
,
195
,
276
,
209
,
102
,
14
,
/* 470 */
190
,
191
,
192
,
193
,
194
,
195
,
35
,
261
,
102
,
208
,
/* 480 */
14
,
332
,
60
,
61
,
156
,
20
,
20
,
65
,
208
,
113
,
/* 480 */
171
,
172
,
139
,
79
,
156
,
269
,
348
,
248
,
208
,
113
,
/* 490 */
68
,
69
,
269
,
296
,
72
,
73
,
74
,
148
,
275
,
4
4
,
/* 490 */
75
,
87
,
213
,
214
,
278
,
270
,
248
,
12
,
13
,
1
4
,
/* 500 */
81
,
22
,
290
,
280
,
57
,
248
,
178
,
179
,
273
,
181
,
/* 500 */
15
,
16
,
241
,
160
,
291
,
270
,
178
,
179
,
260
,
181
,
/* 510 */
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 510 */
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 520 */
192
,
193
,
194
,
195
,
55
,
290
,
47
,
12
,
13
,
14
,
/* 520 */
192
,
193
,
194
,
195
,
83
,
277
,
85
,
86
,
241
,
88
,
/* 530 */
15
,
16
,
156
,
336
,
245
,
80
,
269
,
248
,
14
,
241
,
/* 530 */
64
,
14
,
156
,
92
,
119
,
120
,
297
,
20
,
145
,
196
,
/* 540 */
305
,
306
,
307
,
64
,
20
,
75
,
349
,
280
,
79
,
241
,
/* 540 */
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
241
,
/* 550 */
353
,
82
,
317
,
296
,
178
,
179
,
241
,
181
,
182
,
183
,
/* 550 */
245
,
147
,
291
,
248
,
178
,
179
,
115
,
181
,
182
,
183
,
/* 560 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 560 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 570 */
194
,
195
,
12
,
13
,
18
,
248
,
20
,
145
,
229
,
253
,
/* 570 */
194
,
195
,
12
,
13
,
18
,
336
,
20
,
269
,
291
,
248
,
/* 580 */
20
,
102
,
22
,
27
,
269
,
248
,
30
,
260
,
290
,
11
9
,
/* 580 */
20
,
261
,
22
,
27
,
139
,
277
,
30
,
270
,
349
,
26
9
,
/* 590 */
120
,
276
,
113
,
336
,
269
,
241
,
33
,
260
,
290
,
308
,
/* 590 */
92
,
260
,
353
,
245
,
92
,
287
,
248
,
14
,
278
,
291
,
/* 600 */
274
,
286
,
277
,
276
,
48
,
290
,
349
,
47
,
45
,
248
,
/* 600 */
20
,
3
,
22
,
20
,
48
,
160
,
251
,
47
,
277
,
111
,
/* 610 */
353
,
296
,
241
,
276
,
51
,
52
,
53
,
54
,
55
,
35
,
/* 610 */
112
,
241
,
114
,
115
,
116
,
307
,
241
,
115
,
310
,
311
,
/* 620 */
224
,
260
,
307
,
332
,
64
,
310
,
311
,
312
,
313
,
314
,
/* 620 */
312
,
313
,
314
,
315
,
64
,
317
,
241
,
272
,
320
,
49
,
/* 630 */
315
,
248
,
317
,
79
,
20
,
156
,
22
,
276
,
248
,
21
,
/* 630 */
145
,
20
,
324
,
325
,
326
,
0
,
14
,
15
,
16
,
270
,
/* 640 */
80
,
87
,
79
,
260
,
290
,
82
,
241
,
182
,
182
,
1
,
/* 640 */
80
,
196
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
/* 650 */
2
,
336
,
34
,
241
,
255
,
256
,
37
,
178
,
179
,
276
,
/* 650 */
101
,
102
,
103
,
345
,
105
,
106
,
107
,
108
,
109
,
110
,
/* 660 */
145
,
290
,
102
,
49
,
349
,
241
,
276
,
83
,
353
,
85
,
/* 660 */
270
,
291
,
102
,
241
,
241
,
241
,
291
,
241
,
241
,
241
,
/* 670 */
86
,
20
,
88
,
113
,
118
,
241
,
92
,
121
,
122
,
123
,
/* 670 */
241
,
241
,
241
,
113
,
118
,
241
,
291
,
121
,
122
,
123
,
/* 680 */
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
/* 680 */
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
/* 690 */
134
,
135
,
136
,
137
,
138
,
290
,
20
,
248
,
248
,
115
,
/* 690 */
134
,
135
,
136
,
137
,
138
,
60
,
61
,
62
,
63
,
182
,
/* 700 */
248
,
147
,
290
,
140
,
314
,
142
,
0
,
144
,
248
,
260
,
/* 700 */
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
/* 710 */
260
,
20
,
260
,
139
,
290
,
241
,
156
,
241
,
241
,
329
,
/* 710 */
75
,
76
,
77
,
291
,
291
,
291
,
156
,
291
,
291
,
291
,
/* 720 */
330
,
331
,
41
,
333
,
290
,
276
,
276
,
164
,
276
,
81
,
/* 720 */
291
,
291
,
291
,
241
,
37
,
291
,
269
,
241
,
255
,
256
,
/* 730 */
241
,
241
,
241
,
241
,
160
,
41
,
276
,
241
,
178
,
179
,
/* 730 */
241
,
255
,
256
,
286
,
287
,
278
,
42
,
43
,
178
,
179
,
/* 740 */
20
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 740 */
308
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 750 */
190
,
191
,
192
,
193
,
194
,
195
,
248
,
262
,
269
,
248
,
/* 750 */
190
,
191
,
192
,
193
,
194
,
195
,
145
,
18
,
269
,
248
,
/* 760 */
265
,
241
,
241
,
241
,
290
,
276
,
290
,
290
,
260
,
276
,
/* 760 */
4
,
241
,
23
,
308
,
332
,
182
,
277
,
47
,
22
,
248
,
/* 770 */
196
,
260
,
255
,
256
,
314
,
286
,
283
,
42
,
43
,
290
,
/* 770 */
20
,
260
,
0
,
291
,
35
,
36
,
287
,
291
,
39
,
287
,
/* 780 */
290
,
290
,
290
,
241
,
276
,
296
,
290
,
276
,
286
,
329
,
/* 780 */
291
,
260
,
206
,
207
,
64
,
293
,
297
,
332
,
277
,
269
,
/* 790 */
330
,
331
,
0
,
333
,
292
,
257
,
307
,
259
,
92
,
310
,
/* 790 */
167
,
168
,
41
,
47
,
248
,
56
,
307
,
277
,
277
,
310
,
/* 800 */
311
,
312
,
313
,
314
,
315
,
241
,
317
,
92
,
41
,
320
,
/* 800 */
311
,
312
,
313
,
314
,
315
,
262
,
317
,
287
,
265
,
320
,
/* 810 */
290
,
290
,
290
,
324
,
325
,
285
,
286
,
111
,
112
,
0
,
/* 810 */
64
,
291
,
248
,
324
,
325
,
41
,
300
,
45
,
84
,
80
,
/* 820 */
114
,
115
,
116
,
206
,
207
,
336
,
207
,
64
,
84
,
0
,
/* 820 */
47
,
87
,
224
,
277
,
260
,
336
,
84
,
307
,
41
,
87
,
/* 830 */
115
,
87
,
290
,
269
,
167
,
168
,
145
,
45
,
349
,
270
,
/* 830 */
310
,
311
,
312
,
313
,
314
,
315
,
44
,
317
,
349
,
248
,
/* 840 */
276
,
22
,
353
,
84
,
18
,
0
,
87
,
270
,
81
,
23
,
/* 840 */
320
,
277
,
353
,
297
,
324
,
325
,
326
,
84
,
102
,
84
,
/* 850 */
286
,
22
,
84
,
84
,
290
,
87
,
87
,
41
,
182
,
41
,
/* 850 */
87
,
260
,
87
,
21
,
58
,
81
,
117
,
241
,
338
,
113
,
/* 860 */
296
,
35
,
36
,
145
,
146
,
39
,
241
,
22
,
41
,
1
,
/* 860 */
314
,
248
,
248
,
270
,
344
,
345
,
34
,
47
,
277
,
145
,
/* 870 */
2
,
307
,
193
,
194
,
310
,
311
,
312
,
313
,
314
,
315
,
/* 870 */
146
,
41
,
80
,
260
,
260
,
329
,
330
,
331
,
0
,
333
,
/* 880 */
4
,
317
,
56
,
41
,
320
,
41
,
270
,
41
,
324
,
325
,
/* 880 */
1
,
2
,
336
,
0
,
64
,
269
,
113
,
148
,
149
,
150
,
/* 890 */
41
,
270
,
80
,
41
,
269
,
19
,
270
,
81
,
299
,
81
,
/* 890 */
277
,
277
,
153
,
277
,
207
,
349
,
242
,
158
,
41
,
353
,
/* 900 */
336
,
276
,
90
,
242
,
41
,
47
,
80
,
226
,
81
,
33
,
/* 900 */
22
,
47
,
156
,
287
,
41
,
22
,
41
,
291
,
258
,
170
,
/* 910 */
258
,
286
,
41
,
349
,
47
,
290
,
0
,
353
,
356
,
241
,
/* 910 */
41
,
81
,
173
,
41
,
175
,
176
,
177
,
41
,
193
,
194
,
/* 920 */
41
,
45
,
228
,
81
,
341
,
81
,
50
,
81
,
347
,
269
,
/* 920 */
241
,
0
,
41
,
307
,
178
,
179
,
310
,
311
,
312
,
313
,
/* 930 */
81
,
55
,
307
,
81
,
303
,
310
,
311
,
312
,
313
,
314
,
/* 930 */
314
,
315
,
182
,
317
,
356
,
41
,
320
,
347
,
81
,
80
,
/* 940 */
315
,
41
,
317
,
117
,
81
,
320
,
41
,
269
,
247
,
324
,
/* 940 */
324
,
325
,
326
,
304
,
81
,
41
,
81
,
208
,
269
,
90
,
/* 950 */
325
,
326
,
81
,
249
,
276
,
79
,
279
,
334
,
82
,
309
,
/* 950 */
81
,
335
,
269
,
81
,
247
,
41
,
277
,
81
,
41
,
341
,
/* 960 */
81
,
350
,
350
,
338
,
286
,
41
,
337
,
20
,
290
,
344
,
/* 960 */
249
,
33
,
81
,
334
,
280
,
209
,
287
,
113
,
309
,
350
,
/* 970 */
345
,
113
,
241
,
41
,
148
,
149
,
150
,
350
,
41
,
153
,
/* 970 */
291
,
41
,
241
,
45
,
178
,
81
,
350
,
226
,
350
,
51
,
/* 980 */
113
,
81
,
248
,
45
,
158
,
307
,
81
,
47
,
310
,
311
,
/* 980 */
52
,
53
,
54
,
55
,
41
,
81
,
307
,
41
,
41
,
310
,
/* 990 */
312
,
313
,
314
,
315
,
304
,
317
,
170
,
47
,
255
,
173
,
/* 990 */
311
,
312
,
313
,
314
,
315
,
81
,
317
,
0
,
81
,
320
,
/* 1000 */
269
,
175
,
176
,
177
,
64
,
81
,
297
,
276
,
92
,
154
,
/* 1000 */
269
,
337
,
20
,
324
,
325
,
326
,
248
,
79
,
277
,
45
,
/* 1010 */
248
,
40
,
248
,
81
,
284
,
282
,
139
,
286
,
81
,
282
,
/* 1010 */
82
,
81
,
47
,
92
,
335
,
228
,
255
,
305
,
287
,
298
,
/* 1020 */
248
,
290
,
20
,
243
,
243
,
20
,
348
,
111
,
112
,
301
,
/* 1020 */
154
,
40
,
291
,
248
,
81
,
248
,
285
,
81
,
81
,
139
,
/* 1030 */
114
,
115
,
116
,
286
,
208
,
253
,
253
,
20
,
307
,
0
,
/* 1030 */
283
,
241
,
111
,
112
,
248
,
114
,
115
,
116
,
307
,
20
,
/* 1040 */
294
,
310
,
311
,
312
,
313
,
314
,
315
,
241
,
317
,
253
,
/* 1040 */
283
,
310
,
311
,
312
,
313
,
314
,
315
,
4
,
317
,
243
,
/* 1050 */
276
,
320
,
20
,
287
,
253
,
324
,
325
,
326
,
253
,
248
,
/* 1050 */
243
,
320
,
20
,
253
,
302
,
324
,
325
,
326
,
287
,
269
,
/* 1060 */
21
,
253
,
269
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
/* 1060 */
20
,
253
,
19
,
295
,
253
,
277
,
335
,
277
,
140
,
20
,
/* 1070 */
31
,
32
,
269
,
243
,
243
,
269
,
345
,
64
,
269
,
269
,
/* 1070 */
142
,
288
,
144
,
248
,
253
,
253
,
33
,
287
,
243
,
253
,
/* 1080 */
241
,
248
,
276
,
269
,
269
,
290
,
269
,
301
,
251
,
269
,
/* 1080 */
64
,
291
,
241
,
269
,
269
,
269
,
269
,
297
,
45
,
92
,
/* 1090 */
269
,
269
,
286
,
269
,
163
,
20
,
290
,
300
,
251
,
286
,
/* 1090 */
248
,
302
,
164
,
50
,
243
,
291
,
269
,
307
,
55
,
241
,
/* 1100 */
309
,
294
,
251
,
216
,
276
,
251
,
346
,
215
,
269
,
223
,
/* 1100 */
310
,
311
,
312
,
313
,
314
,
315
,
269
,
317
,
111
,
112
,
/* 1110 */
287
,
346
,
222
,
307
,
343
,
276
,
310
,
311
,
312
,
313
,
/* 1110 */
269
,
114
,
115
,
116
,
269
,
269
,
269
,
269
,
277
,
269
,
/* 1120 */
314
,
315
,
290
,
317
,
290
,
286
,
320
,
291
,
290
,
290
,
/* 1120 */
163
,
251
,
79
,
287
,
301
,
82
,
336
,
269
,
287
,
295
,
/* 1130 */
324
,
325
,
326
,
211
,
291
,
210
,
342
,
207
,
340
,
339
,
/* 1130 */
277
,
251
,
291
,
251
,
20
,
277
,
251
,
288
,
297
,
349
,
/* 1140 */
276
,
335
,
241
,
20
,
40
,
227
,
307
,
230
,
308
,
310
,
/* 1140 */
309
,
216
,
215
,
353
,
346
,
287
,
223
,
292
,
307
,
291
,
/* 1150 */
311
,
312
,
313
,
314
,
315
,
351
,
317
,
291
,
225
,
320
,
/* 1150 */
211
,
310
,
311
,
312
,
313
,
314
,
315
,
241
,
317
,
291
,
/* 1160 */
80
,
291
,
327
,
324
,
325
,
326
,
142
,
276
,
290
,
265
,
/* 1160 */
222
,
210
,
343
,
292
,
346
,
307
,
291
,
339
,
310
,
311
,
/* 1170 */
269
,
290
,
290
,
288
,
335
,
287
,
80
,
276
,
251
,
323
,
/* 1170 */
312
,
313
,
314
,
315
,
207
,
317
,
277
,
336
,
320
,
291
,
/* 1180 */
251
,
272
,
357
,
276
,
248
,
259
,
251
,
286
,
243
,
0
,
/* 1180 */
342
,
20
,
324
,
325
,
0
,
269
,
40
,
327
,
227
,
241
,
/* 1190 */
295
,
290
,
298
,
352
,
252
,
302
,
241
,
263
,
239
,
0
,
/* 1190 */
349
,
352
,
340
,
277
,
353
,
308
,
230
,
225
,
80
,
292
,
/* 1200 */
352
,
351
,
263
,
72
,
351
,
241
,
263
,
0
,
307
,
352
,
/* 1200 */
357
,
291
,
291
,
287
,
292
,
142
,
291
,
291
,
24
,
25
,
/* 1210 */
47
,
310
,
311
,
312
,
313
,
314
,
315
,
174
,
317
,
47
,
/* 1210 */
26
,
27
,
28
,
29
,
30
,
31
,
32
,
269
,
351
,
248
,
/* 1220 */
47
,
320
,
47
,
174
,
269
,
324
,
325
,
326
,
0
,
47
,
/* 1220 */
323
,
289
,
277
,
307
,
351
,
277
,
310
,
311
,
312
,
313
,
/* 1230 */
47
,
276
,
0
,
269
,
174
,
47
,
335
,
0
,
47
,
0
,
/* 1230 */
314
,
315
,
288
,
317
,
251
,
287
,
320
,
251
,
352
,
291
,
/* 1240 */
276
,
286
,
47
,
0
,
80
,
290
,
160
,
159
,
113
,
156
,
/* 1240 */
324
,
325
,
241
,
352
,
351
,
265
,
277
,
80
,
277
,
273
,
/* 1250 */
286
,
0
,
0
,
152
,
290
,
0
,
151
,
0
,
44
,
241
,
/* 1250 */
259
,
248
,
243
,
251
,
299
,
307
,
303
,
263
,
310
,
311
,
/* 1260 */
296
,
0
,
307
,
0
,
0
,
310
,
311
,
312
,
313
,
314
,
/* 1260 */
312
,
313
,
314
,
315
,
316
,
317
,
318
,
319
,
297
,
296
,
/* 1270 */
315
,
307
,
317
,
0
,
310
,
311
,
312
,
313
,
314
,
315
,
/* 1270 */
269
,
263
,
252
,
263
,
239
,
0
,
0
,
72
,
277
,
0
,
/* 1280 */
0
,
317
,
0
,
0
,
0
,
0
,
0
,
269
,
0
,
0
,
/* 1280 */
47
,
174
,
47
,
47
,
47
,
314
,
174
,
0
,
287
,
47
,
/* 1290 */
0
,
0
,
0
,
0
,
276
,
0
,
0
,
0
,
40
,
241
,
/* 1290 */
47
,
174
,
291
,
0
,
47
,
0
,
47
,
0
,
47
,
241
,
/* 1300 */
336
,
0
,
0
,
0
,
286
,
0
,
0
,
0
,
290
,
22
,
/* 1300 */
329
,
330
,
331
,
0
,
333
,
80
,
159
,
336
,
307
,
160
,
/* 1310 */
355
,
0
,
0
,
349
,
0
,
0
,
0
,
353
,
241
,
40
,
/* 1310 */
113
,
310
,
311
,
312
,
313
,
314
,
315
,
0
,
317
,
156
,
/* 1320 */
0
,
44
,
41
,
45
,
14
,
307
,
0
,
269
,
310
,
311
,
/* 1320 */
349
,
320
,
0
,
152
,
353
,
151
,
325
,
269
,
19
,
0
,
/* 1330 */
312
,
313
,
314
,
315
,
276
,
317
,
37
,
14
,
320
,
45
,
/* 1330 */
0
,
0
,
44
,
0
,
0
,
277
,
0
,
0
,
0
,
0
,
/* 1340 */
0
,
37
,
324
,
325
,
286
,
0
,
269
,
0
,
290
,
0
,
/* 1340 */
0
,
0
,
33
,
22
,
40
,
287
,
241
,
0
,
0
,
291
,
/* 1350 */
0
,
38
,
44
,
276
,
37
,
0
,
0
,
59
,
37
,
0
,
/* 1350 */
0
,
0
,
294
,
0
,
45
,
0
,
0
,
0
,
0
,
0
,
/* 1360 */
0
,
37
,
37
,
286
,
37
,
307
,
47
,
290
,
310
,
311
,
/* 1360 */
51
,
52
,
53
,
54
,
55
,
307
,
0
,
0
,
310
,
311
,
/* 1370 */
312
,
313
,
314
,
315
,
241
,
317
,
47
,
47
,
320
,
45
,
/* 1370 */
312
,
313
,
314
,
315
,
269
,
317
,
0
,
0
,
0
,
0
,
/* 1380 */
47
,
45
,
324
,
325
,
307
,
0
,
0
,
310
,
311
,
312
,
/* 1380 */
0
,
0
,
277
,
0
,
0
,
241
,
0
,
41
,
79
,
40
,
/* 1390 */
313
,
314
,
315
,
316
,
317
,
318
,
319
,
0
,
0
,
47
,
/* 1390 */
0
,
82
,
287
,
0
,
0
,
0
,
291
,
37
,
44
,
14
,
/* 1400 */
22
,
0
,
269
,
19
,
47
,
47
,
41
,
89
,
47
,
276
,
/* 1400 */
38
,
14
,
37
,
0
,
0
,
44
,
37
,
0
,
0
,
45
,
/* 1410 */
47
,
41
,
0
,
47
,
47
,
87
,
22
,
33
,
47
,
286
,
/* 1410 */
47
,
59
,
307
,
269
,
0
,
310
,
311
,
312
,
313
,
314
,
/* 1420 */
48
,
22
,
0
,
290
,
0
,
22
,
47
,
0
,
22
,
45
,
/* 1420 */
315
,
277
,
317
,
0
,
0
,
116
,
37
,
0
,
37
,
47
,
/* 1430 */
0
,
22
,
0
,
241
,
20
,
51
,
52
,
53
,
54
,
55
,
/* 1430 */
0
,
287
,
87
,
45
,
37
,
291
,
241
,
37
,
294
,
47
,
/* 1440 */
307
,
0
,
47
,
310
,
311
,
312
,
313
,
314
,
315
,
0
,
/* 1440 */
0
,
45
,
0
,
0
,
45
,
47
,
0
,
22
,
47
,
47
,
/* 1450 */
317
,
22
,
0
,
320
,
0
,
80
,
37
,
41
,
325
,
41
,
/* 1450 */
141
,
307
,
47
,
144
,
310
,
311
,
312
,
313
,
314
,
315
,
/* 1460 */
212
,
269
,
81
,
79
,
41
,
44
,
82
,
145
,
276
,
81
,
/* 1460 */
355
,
317
,
89
,
47
,
269
,
241
,
47
,
41
,
0
,
41
,
/* 1470 */
80
,
80
,
80
,
206
,
81
,
41
,
145
,
142
,
286
,
44
,
/* 1470 */
22
,
162
,
277
,
164
,
22
,
0
,
47
,
22
,
47
,
0
,
/* 1480 */
80
,
140
,
290
,
41
,
212
,
293
,
81
,
241
,
81
,
44
,
/* 1480 */
47
,
47
,
287
,
48
,
22
,
0
,
291
,
22
,
0
,
20
,
/* 1490 */
44
,
12
,
13
,
161
,
41
,
47
,
81
,
41
,
81
,
307
,
/* 1490 */
0
,
47
,
22
,
269
,
0
,
0
,
161
,
241
,
0
,
41
,
/* 1500 */
116
,
22
,
310
,
311
,
312
,
313
,
314
,
315
,
47
,
317
,
/* 1500 */
80
,
277
,
307
,
37
,
41
,
310
,
311
,
312
,
313
,
314
,
/* 1510 */
47
,
47
,
212
,
47
,
47
,
269
,
2
,
241
,
41
,
81
,
/* 1510 */
315
,
287
,
317
,
145
,
319
,
291
,
145
,
142
,
294
,
212
,
/* 1520 */
178
,
81
,
276
,
80
,
44
,
141
,
47
,
80
,
144
,
44
,
/* 1520 */
81
,
41
,
81
,
41
,
206
,
269
,
81
,
80
,
44
,
80
,
/* 1530 */
80
,
22
,
286
,
180
,
0
,
80
,
290
,
37
,
81
,
81
,
/* 1530 */
80
,
307
,
41
,
277
,
310
,
311
,
312
,
313
,
314
,
315
,
/* 1540 */
80
,
90
,
80
,
64
,
22
,
269
,
162
,
143
,
164
,
80
,
/* 1540 */
44
,
317
,
81
,
287
,
80
,
44
,
140
,
291
,
81
,
41
,
/* 1550 */
241
,
140
,
276
,
307
,
80
,
44
,
310
,
311
,
312
,
313
,
/* 1550 */
294
,
44
,
81
,
241
,
212
,
41
,
212
,
81
,
47
,
2
,
/* 1560 */
314
,
315
,
286
,
317
,
44
,
319
,
290
,
80
,
80
,
293
,
/* 1560 */
47
,
41
,
47
,
307
,
47
,
47
,
310
,
311
,
312
,
313
,
/* 1570 */
81
,
80
,
91
,
81
,
47
,
47
,
80
,
47
,
269
,
81
,
/* 1570 */
314
,
315
,
47
,
317
,
81
,
44
,
44
,
80
,
22
,
143
,
/* 1580 */
241
,
102
,
80
,
307
,
81
,
276
,
310
,
311
,
312
,
313
,
/* 1580 */
81
,
269
,
80
,
80
,
241
,
80
,
80
,
178
,
0
,
277
,
/* 1590 */
314
,
315
,
113
,
317
,
47
,
286
,
81
,
80
,
47
,
290
,
/* 1590 */
180
,
81
,
37
,
140
,
90
,
44
,
44
,
81
,
22
,
287
,
/* 1600 */
81
,
80
,
293
,
47
,
80
,
22
,
47
,
113
,
269
,
104
,
/* 1600 */
81
,
80
,
80
,
291
,
80
,
47
,
80
,
80
,
80
,
47
,
/* 1610 */
241
,
104
,
248
,
80
,
104
,
276
,
307
,
104
,
92
,
310
,
/* 1610 */
81
,
81
,
269
,
241
,
91
,
80
,
47
,
80
,
47
,
307
,
/* 1620 */
311
,
312
,
313
,
314
,
315
,
286
,
317
,
47
,
80
,
290
,
/* 1620 */
277
,
81
,
310
,
311
,
312
,
313
,
314
,
315
,
80
,
317
,
/* 1630 */
80
,
22
,
59
,
58
,
64
,
156
,
78
,
41
,
269
,
47
,
/* 1630 */
287
,
81
,
47
,
80
,
291
,
81
,
47
,
104
,
104
,
80
,
/* 1640 */
276
,
47
,
47
,
22
,
47
,
276
,
307
,
47
,
47
,
310
,
/* 1640 */
104
,
269
,
104
,
22
,
80
,
80
,
47
,
80
,
47
,
277
,
/* 1650 */
311
,
312
,
313
,
314
,
315
,
286
,
317
,
178
,
47
,
290
,
/* 1650 */
307
,
22
,
92
,
310
,
311
,
312
,
313
,
314
,
315
,
287
,
/* 1660 */
296
,
241
,
64
,
47
,
47
,
47
,
47
,
47
,
189
,
190
,
/* 1660 */
317
,
59
,
241
,
291
,
58
,
78
,
41
,
64
,
12
,
13
,
/* 1670 */
191
,
47
,
47
,
0
,
47
,
45
,
307
,
241
,
314
,
310
,
/* 1670 */
47
,
47
,
22
,
241
,
113
,
47
,
64
,
47
,
22
,
307
,
/* 1680 */
311
,
312
,
313
,
314
,
315
,
37
,
317
,
0
,
47
,
269
,
/* 1680 */
47
,
47
,
310
,
311
,
312
,
313
,
314
,
315
,
47
,
317
,
/* 1690 */
45
,
37
,
0
,
329
,
330
,
331
,
276
,
333
,
47
,
37
,
/* 1690 */
269
,
47
,
47
,
47
,
47
,
47
,
47
,
0
,
277
,
47
,
/* 1700 */
336
,
0
,
45
,
45
,
37
,
269
,
286
,
47
,
0
,
46
,
/* 1700 */
47
,
269
,
45
,
47
,
37
,
0
,
47
,
45
,
287
,
277
,
/* 1710 */
290
,
47
,
276
,
349
,
0
,
0
,
22
,
353
,
21
,
358
,
/* 1710 */
37
,
0
,
291
,
47
,
45
,
37
,
0
,
47
,
37
,
287
,
/* 1720 */
22
,
22
,
286
,
21
,
241
,
20
,
290
,
307
,
358
,
358
,
/* 1720 */
64
,
45
,
0
,
291
,
241
,
0
,
47
,
0
,
307
,
46
,
/* 1730 */
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
358
,
358
,
/* 1730 */
22
,
310
,
311
,
312
,
313
,
314
,
315
,
22
,
317
,
307
,
/* 1740 */
358
,
358
,
241
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 1740 */
21
,
20
,
310
,
311
,
312
,
313
,
314
,
315
,
22
,
317
,
/* 1750 */
314
,
315
,
269
,
317
,
358
,
358
,
358
,
241
,
358
,
276
,
/* 1750 */
21
,
358
,
269
,
241
,
358
,
358
,
358
,
358
,
102
,
358
,
/* 1760 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
286
,
/* 1760 */
277
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
113
,
/* 1770 */
269
,
358
,
358
,
290
,
358
,
358
,
358
,
276
,
358
,
358
,
/* 1770 */
287
,
358
,
358
,
358
,
291
,
358
,
358
,
358
,
358
,
358
,
/* 1780 */
358
,
358
,
358
,
358
,
358
,
269
,
358
,
286
,
358
,
358
,
/* 1780 */
358
,
269
,
358
,
358
,
358
,
241
,
358
,
358
,
358
,
277
,
/* 1790 */
307
,
290
,
276
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
/* 1790 */
307
,
358
,
358
,
310
,
311
,
312
,
313
,
314
,
315
,
287
,
/* 1800 */
317
,
358
,
286
,
358
,
241
,
358
,
290
,
358
,
307
,
358
,
/* 1800 */
317
,
358
,
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1810 */
358
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
358
,
/* 1810 */
358
,
358
,
156
,
269
,
358
,
358
,
358
,
358
,
358
,
307
,
/* 1820 */
241
,
358
,
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 1820 */
358
,
277
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
/* 1830 */
314
,
315
,
269
,
317
,
358
,
358
,
358
,
358
,
358
,
276
,
/* 1830 */
358
,
287
,
358
,
358
,
178
,
291
,
358
,
358
,
358
,
358
,
/* 1840 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
269
,
286
,
/* 1840 */
358
,
241
,
358
,
358
,
358
,
189
,
190
,
191
,
358
,
358
,
/* 1850 */
358
,
358
,
358
,
290
,
358
,
276
,
358
,
358
,
358
,
358
,
/* 1850 */
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
314
,
315
,
/* 1860 */
358
,
358
,
358
,
358
,
358
,
286
,
358
,
241
,
358
,
290
,
/* 1860 */
358
,
317
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
269
,
/* 1870 */
307
,
358
,
358
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
/* 1870 */
358
,
358
,
241
,
358
,
358
,
358
,
358
,
277
,
358
,
358
,
/* 1880 */
317
,
358
,
358
,
358
,
358
,
358
,
307
,
358
,
358
,
310
,
/* 1880 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
287
,
358
,
358
,
/* 1890 */
311
,
312
,
313
,
314
,
315
,
269
,
317
,
241
,
358
,
358
,
/* 1890 */
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1900 */
358
,
358
,
276
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1900 */
269
,
241
,
358
,
358
,
358
,
358
,
358
,
307
,
277
,
358
,
/* 1910 */
358
,
358
,
286
,
358
,
358
,
358
,
290
,
358
,
358
,
358
,
/* 1910 */
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
287
,
358
,
/* 1920 */
358
,
358
,
358
,
358
,
358
,
269
,
358
,
358
,
358
,
358
,
/* 1920 */
358
,
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
269
,
/* 1930 */
358
,
358
,
276
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 1930 */
358
,
358
,
241
,
358
,
358
,
358
,
358
,
277
,
307
,
358
,
/* 1940 */
314
,
315
,
286
,
317
,
358
,
358
,
290
,
241
,
358
,
358
,
/* 1940 */
358
,
310
,
311
,
312
,
313
,
314
,
315
,
287
,
317
,
358
,
/* 1950 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1950 */
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1960 */
358
,
358
,
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 1960 */
269
,
241
,
358
,
358
,
358
,
358
,
358
,
307
,
277
,
358
,
/* 1970 */
314
,
315
,
358
,
317
,
358
,
269
,
358
,
241
,
358
,
358
,
/* 1970 */
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
287
,
358
,
/* 1980 */
358
,
358
,
276
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 1980 */
358
,
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
269
,
/* 1990 */
358
,
358
,
286
,
358
,
358
,
358
,
290
,
358
,
358
,
358
,
/* 1990 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
277
,
307
,
358
,
/* 2000 */
358
,
358
,
358
,
358
,
358
,
269
,
358
,
358
,
358
,
358
,
/* 2000 */
358
,
310
,
311
,
312
,
313
,
314
,
315
,
287
,
317
,
358
,
/* 2010 */
358
,
358
,
276
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 2010 */
358
,
291
,
241
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 2020 */
314
,
315
,
286
,
317
,
358
,
358
,
290
,
241
,
358
,
358
,
/* 2020 */
358
,
358
,
358
,
241
,
358
,
358
,
358
,
307
,
358
,
358
,
/* 2030 */
358
,
358
,
358
,
358
,
358
,
358
,
241
,
358
,
358
,
358
,
/* 2030 */
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
358
,
358
,
/* 2040 */
358
,
358
,
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 2040 */
269
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
277
,
358
,
/* 2050 */
314
,
315
,
358
,
317
,
358
,
269
,
358
,
358
,
358
,
358
,
/* 2050 */
358
,
269
,
358
,
358
,
358
,
358
,
358
,
358
,
287
,
277
,
/* 2060 */
358
,
358
,
276
,
358
,
269
,
358
,
358
,
358
,
358
,
358
,
/* 2060 */
358
,
358
,
291
,
358
,
358
,
358
,
358
,
358
,
358
,
287
,
/* 2070 */
358
,
276
,
286
,
358
,
358
,
358
,
290
,
358
,
358
,
358
,
/* 2070 */
358
,
358
,
358
,
291
,
358
,
358
,
358
,
241
,
307
,
358
,
/* 2080 */
358
,
286
,
358
,
358
,
358
,
290
,
358
,
358
,
358
,
358
,
/* 2080 */
358
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
307
,
/* 2090 */
241
,
358
,
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 2090 */
358
,
358
,
310
,
311
,
312
,
313
,
314
,
315
,
358
,
317
,
/* 2100 */
314
,
315
,
307
,
317
,
358
,
310
,
311
,
312
,
313
,
314
,
/* 2100 */
358
,
358
,
358
,
358
,
358
,
269
,
358
,
358
,
358
,
358
,
/* 2110 */
315
,
358
,
317
,
358
,
358
,
358
,
358
,
358
,
269
,
358
,
/* 2110 */
358
,
358
,
358
,
277
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 2120 */
358
,
358
,
358
,
358
,
358
,
276
,
358
,
358
,
358
,
358
,
/* 2120 */
358
,
358
,
358
,
287
,
358
,
358
,
358
,
291
,
358
,
358
,
/* 2130 */
358
,
358
,
358
,
358
,
358
,
286
,
358
,
358
,
358
,
290
,
/* 2130 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 2140 */
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
358
,
/* 2140 */
358
,
358
,
358
,
307
,
358
,
358
,
310
,
311
,
312
,
313
,
/* 2150 */
358
,
358
,
358
,
358
,
358
,
358
,
307
,
358
,
358
,
310
,
/* 2150 */
314
,
315
,
358
,
317
,
/* 2160 */
311
,
312
,
313
,
314
,
315
,
358
,
317
,
};
};
#define YY_SHIFT_COUNT (604)
#define YY_SHIFT_COUNT (604)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (17
15
)
#define YY_SHIFT_MAX (17
29
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
826
,
0
,
0
,
48
,
96
,
96
,
96
,
96
,
280
,
280
,
/* 0 */
739
,
0
,
0
,
48
,
96
,
96
,
96
,
96
,
280
,
280
,
/* 10 */
96
,
96
,
328
,
376
,
560
,
376
,
376
,
376
,
376
,
376
,
/* 10 */
96
,
96
,
328
,
376
,
560
,
376
,
376
,
376
,
376
,
376
,
/* 20 */
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
/* 20 */
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
/* 30 */
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
95
,
95
,
/* 30 */
376
,
376
,
376
,
376
,
376
,
376
,
376
,
376
,
37
,
37
,
/* 40 */
375
,
375
,
375
,
1479
,
1479
,
1479
,
100
,
50
,
171
,
45
,
/* 40 */
68
,
68
,
68
,
1656
,
1656
,
1656
,
1656
,
64
,
271
,
179
,
/* 50 */
45
,
342
,
342
,
246
,
171
,
171
,
45
,
45
,
45
,
45
,
/* 50 */
18
,
18
,
13
,
13
,
123
,
179
,
179
,
18
,
18
,
18
,
/* 60 */
45
,
45
,
17
,
45
,
201
,
323
,
651
,
201
,
45
,
45
,
/* 60 */
18
,
18
,
18
,
35
,
18
,
182
,
190
,
314
,
182
,
18
,
/* 70 */
201
,
45
,
201
,
201
,
651
,
201
,
45
,
324
,
556
,
63
,
/* 70 */
18
,
182
,
18
,
182
,
182
,
314
,
182
,
18
,
334
,
556
,
/* 80 */
14
,
14
,
13
,
479
,
422
,
479
,
479
,
479
,
479
,
479
,
/* 80 */
343
,
107
,
107
,
192
,
312
,
746
,
746
,
746
,
746
,
746
,
/* 90 */
479
,
479
,
479
,
479
,
479
,
479
,
479
,
479
,
479
,
479
,
/* 90 */
746
,
746
,
746
,
746
,
746
,
746
,
746
,
746
,
746
,
746
,
/* 100 */
479
,
479
,
479
,
479
,
584
,
614
,
524
,
524
,
301
,
281
,
/* 100 */
746
,
746
,
746
,
746
,
441
,
580
,
110
,
110
,
206
,
720
,
/* 110 */
432
,
432
,
432
,
447
,
281
,
720
,
651
,
201
,
201
,
651
,
/* 110 */
393
,
393
,
393
,
244
,
720
,
384
,
314
,
182
,
182
,
314
,
/* 120 */
3
48
,
763
,
319
,
319
,
319
,
319
,
319
,
319
,
319
,
1384
,
/* 120 */
3
56
,
466
,
549
,
549
,
549
,
549
,
549
,
549
,
549
,
1309
,
/* 130 */
1039
,
377
,
349
,
28
,
104
,
230
,
465
,
466
,
735
,
10
2
,
/* 130 */
294
,
197
,
21
,
78
,
268
,
279
,
517
,
583
,
694
,
29
2
,
/* 140 */
715
,
691
,
617
,
619
,
617
,
396
,
396
,
396
,
268
,
676
,
/* 140 */
502
,
611
,
576
,
687
,
576
,
598
,
598
,
598
,
756
,
750
,
/* 150 */
9
47
,
938
,
950
,
855
,
947
,
947
,
971
,
877
,
877
,
947
,
/* 150 */
9
82
,
964
,
965
,
866
,
982
,
982
,
981
,
890
,
890
,
982
,
/* 160 */
10
02
,
1002
,
1005
,
17
,
651
,
17
,
1017
,
17
,
720
,
1032
,
/* 160 */
10
19
,
1019
,
1032
,
35
,
314
,
35
,
1040
,
35
,
384
,
1049
,
/* 170 */
17
,
17
,
947
,
17
,
1002
,
201
,
201
,
201
,
201
,
201
,
/* 170 */
35
,
35
,
982
,
35
,
1019
,
182
,
182
,
182
,
182
,
182
,
/* 180 */
201
,
201
,
201
,
201
,
201
,
201
,
947
,
1002
,
1013
,
1005
,
/* 180 */
182
,
182
,
182
,
182
,
182
,
182
,
982
,
1019
,
1016
,
1032
,
/* 190 */
3
24
,
931
,
651
,
324
,
1017
,
324
,
720
,
1032
,
324
,
1075
,
/* 190 */
3
34
,
957
,
314
,
334
,
1040
,
334
,
384
,
1049
,
334
,
1114
,
/* 200 */
887
,
892
,
1013
,
887
,
892
,
1013
,
1013
,
201
,
886
,
890
,
/* 200 */
925
,
927
,
1016
,
925
,
927
,
1016
,
1016
,
182
,
923
,
938
,
/* 210 */
9
22
,
925
,
930
,
720
,
1123
,
1104
,
918
,
933
,
917
,
918
,
/* 210 */
9
39
,
951
,
967
,
384
,
1161
,
1146
,
961
,
972
,
966
,
961
,
/* 220 */
9
33
,
918
,
933
,
1080
,
892
,
1013
,
1013
,
892
,
1013
,
1024
,
/* 220 */
9
72
,
961
,
972
,
1118
,
927
,
1016
,
1016
,
927
,
1016
,
1063
,
/* 230 */
720
,
1032
,
324
,
348
,
324
,
720
,
1096
,
763
,
947
,
32
4
,
/* 230 */
384
,
1049
,
334
,
356
,
334
,
384
,
1167
,
466
,
982
,
33
4
,
/* 240 */
10
02
,
2167
,
2167
,
2167
,
2167
,
2167
,
2167
,
2167
,
2167
,
244
,
/* 240 */
10
19
,
2154
,
2154
,
2154
,
2154
,
2154
,
2154
,
2154
,
2154
,
635
,
/* 250 */
563
,
141
,
876
,
706
,
916
,
241
,
84
,
355
,
515
,
419
,
/* 250 */
928
,
1184
,
1043
,
921
,
997
,
119
,
14
,
30
,
485
,
126
,
/* 260 */
85
,
282
,
282
,
282
,
282
,
282
,
282
,
282
,
282
,
23
9
,
/* 260 */
498
,
354
,
354
,
354
,
354
,
354
,
354
,
354
,
354
,
30
9
,
/* 270 */
469
,
470
,
554
,
648
,
574
,
36
,
36
,
36
,
36
,
79
2
,
/* 270 */
321
,
415
,
404
,
8
,
445
,
622
,
622
,
622
,
622
,
77
2
,
/* 280 */
7
67
,
744
,
759
,
768
,
769
,
819
,
829
,
845
,
618
,
667
,
/* 280 */
7
74
,
734
,
742
,
763
,
765
,
435
,
878
,
883
,
832
,
623
,
/* 290 */
7
18
,
816
,
818
,
827
,
868
,
679
,
681
,
694
,
842
,
145
,
/* 290 */
7
24
,
830
,
857
,
863
,
879
,
725
,
751
,
787
,
865
,
796
,
/* 300 */
8
44
,
455
,
846
,
849
,
852
,
863
,
871
,
858
,
867
,
879
,
/* 300 */
8
69
,
792
,
872
,
876
,
881
,
894
,
904
,
773
,
854
,
914
,
/* 310 */
9
00
,
905
,
924
,
932
,
937
,
812
,
940
,
1189
,
1199
,
1131
,
/* 310 */
9
17
,
930
,
943
,
946
,
947
,
859
,
820
,
1275
,
1276
,
1205
,
/* 320 */
12
07
,
1163
,
1043
,
1172
,
1173
,
1175
,
1049
,
1228
,
1182
,
118
3
,
/* 320 */
12
79
,
1233
,
1107
,
1235
,
1236
,
1237
,
1112
,
1287
,
1242
,
124
3
,
/* 330 */
1
060
,
1232
,
1188
,
1237
,
1191
,
1239
,
1195
,
1243
,
1164
,
1086
,
/* 330 */
1
117
,
1293
,
1247
,
1295
,
1249
,
1297
,
1251
,
1303
,
1225
,
1149
,
/* 340 */
1
088
,
1135
,
1093
,
1251
,
1252
,
1101
,
1105
,
1255
,
1257
,
1214
,
/* 340 */
1
147
,
1197
,
1163
,
1317
,
1322
,
1171
,
1174
,
1329
,
1330
,
1288
,
/* 350 */
1
261
,
1263
,
1264
,
1273
,
1280
,
1282
,
1283
,
1284
,
1285
,
1286
,
/* 350 */
1
331
,
1333
,
1334
,
1336
,
1337
,
1338
,
1339
,
1340
,
1341
,
1347
,
/* 360 */
1
288
,
1289
,
1290
,
1291
,
1292
,
1293
,
1295
,
1296
,
1258
,
1297
,
/* 360 */
1
348
,
1350
,
1351
,
1353
,
1355
,
1356
,
1357
,
1358
,
1304
,
1359
,
/* 370 */
13
01
,
1302
,
1303
,
1305
,
1306
,
1287
,
1307
,
1311
,
1312
,
1314
,
/* 370 */
13
66
,
1367
,
1376
,
1377
,
1378
,
1321
,
1379
,
1380
,
1381
,
1383
,
/* 380 */
13
15
,
1316
,
1279
,
1299
,
1281
,
1310
,
1277
,
1323
,
1308
,
132
0
,
/* 380 */
13
84
,
1386
,
1349
,
1360
,
1346
,
1385
,
1354
,
1387
,
1361
,
139
0
,
/* 390 */
13
13
,
1304
,
1326
,
1345
,
1347
,
1349
,
1317
,
1350
,
1298
,
1355
,
/* 390 */
13
62
,
1365
,
1393
,
1394
,
1395
,
1403
,
1369
,
1404
,
1352
,
1407
,
/* 400 */
1
356
,
1319
,
1278
,
1321
,
1359
,
1329
,
1294
,
1324
,
1340
,
1330
,
/* 400 */
1
408
,
1363
,
1364
,
1389
,
1414
,
1382
,
1388
,
1391
,
1423
,
1392
,
/* 410 */
13
34
,
1325
,
1360
,
1333
,
1336
,
1327
,
1385
,
1386
,
1397
,
1398
,
/* 410 */
13
96
,
1397
,
1424
,
1398
,
1399
,
1400
,
1427
,
1430
,
1440
,
1442
,
/* 420 */
13
18
,
1328
,
1352
,
1378
,
1401
,
1357
,
1358
,
1361
,
1363
,
1365
,
/* 420 */
13
73
,
1345
,
1401
,
1425
,
1443
,
1402
,
1405
,
1416
,
1419
,
1426
,
/* 430 */
1
370
,
1366
,
1367
,
1371
,
1412
,
1394
,
1424
,
1399
,
1372
,
1422
,
/* 430 */
1
428
,
1429
,
1431
,
1433
,
1446
,
1448
,
1468
,
1452
,
1435
,
1475
,
/* 440 */
14
03
,
1379
,
1427
,
1406
,
1430
,
1409
,
1414
,
1432
,
1322
,
1395
,
/* 440 */
14
55
,
1434
,
1479
,
1462
,
1485
,
1465
,
1469
,
1488
,
1368
,
1444
,
/* 450 */
14
41
,
1332
,
1429
,
1331
,
1335
,
1449
,
1452
,
1454
,
1375
,
1419
,
/* 450 */
14
90
,
1335
,
1470
,
1371
,
1375
,
1494
,
1495
,
1498
,
1420
,
1466
,
/* 460 */
1
341
,
1416
,
1418
,
1248
,
1381
,
1423
,
1388
,
1390
,
1391
,
1392
,
/* 460 */
1
406
,
1458
,
1463
,
1307
,
1439
,
1480
,
1441
,
1447
,
1449
,
1450
,
/* 470 */
1
393
,
1434
,
1421
,
1435
,
1400
,
1442
,
1272
,
1405
,
1407
,
1445
,
/* 470 */
1
445
,
1482
,
1484
,
1496
,
1464
,
1491
,
1342
,
1461
,
1467
,
1501
,
/* 480 */
1
267
,
1453
,
1446
,
1415
,
1456
,
1300
,
1417
,
1448
,
1461
,
1463
,
/* 480 */
1
318
,
1508
,
1507
,
1471
,
1514
,
1344
,
1476
,
1511
,
1513
,
1515
,
/* 490 */
1
464
,
1466
,
1467
,
1417
,
1514
,
1342
,
1477
,
1438
,
1443
,
1440
,
/* 490 */
1
517
,
1518
,
1525
,
1476
,
1557
,
1409
,
1520
,
1493
,
1497
,
1499
,
/* 500 */
1
480
,
1447
,
1450
,
1485
,
1509
,
1353
,
1455
,
1457
,
1458
,
1460
,
/* 500 */
1
531
,
1502
,
1503
,
1532
,
1556
,
1410
,
1505
,
1510
,
1516
,
1506
,
/* 510 */
1
462
,
1404
,
1469
,
1534
,
1500
,
1411
,
1474
,
1451
,
1511
,
1520
,
/* 510 */
1
521
,
1436
,
1522
,
1588
,
1555
,
1453
,
1524
,
1504
,
1551
,
1552
,
/* 520 */
1
487
,
1489
,
1488
,
1522
,
1491
,
1481
,
1492
,
1527
,
1528
,
1496
,
/* 520 */
1
526
,
1519
,
1527
,
1576
,
1528
,
1523
,
1529
,
1558
,
1562
,
1535
,
/* 530 */
1
498
,
1530
,
1502
,
1503
,
1547
,
1517
,
1515
,
1551
,
1521
,
1519
,
/* 530 */
1
530
,
1569
,
1537
,
1540
,
1571
,
1548
,
1550
,
1585
,
1553
,
1554
,
/* 540 */
15
56
,
1524
,
1505
,
1507
,
1510
,
1513
,
1583
,
1526
,
1533
,
1548
,
/* 540 */
15
89
,
1559
,
1533
,
1534
,
1536
,
1538
,
1621
,
1560
,
1564
,
1565
,
/* 550 */
15
59
,
1550
,
1494
,
1580
,
1609
,
1573
,
1575
,
1570
,
1558
,
1596
,
/* 550 */
15
99
,
1567
,
1561
,
1601
,
1629
,
1602
,
1606
,
1603
,
1587
,
1625
,
/* 560 */
1
592
,
1594
,
1595
,
1597
,
1600
,
1621
,
1601
,
1611
,
1598
,
1365
,
/* 560 */
1
623
,
1624
,
1628
,
1630
,
1633
,
1650
,
1634
,
1641
,
1612
,
1426
,
/* 570 */
16
16
,
1370
,
1617
,
1618
,
1619
,
1620
,
1624
,
1625
,
1673
,
1627
,
/* 570 */
16
44
,
1428
,
1645
,
1646
,
1647
,
1648
,
1649
,
1652
,
1697
,
1653
,
/* 580 */
16
30
,
1648
,
1687
,
1641
,
1645
,
1654
,
1692
,
1651
,
1657
,
1662
,
/* 580 */
16
57
,
1667
,
1705
,
1659
,
1662
,
1673
,
1711
,
1666
,
1669
,
1678
,
/* 590 */
17
01
,
1660
,
1658
,
1667
,
1708
,
1664
,
1663
,
1714
,
1715
,
1694
,
/* 590 */
17
16
,
1670
,
1676
,
1681
,
1722
,
1679
,
1683
,
1725
,
1727
,
1708
,
/* 600 */
1
697
,
1698
,
1699
,
1702
,
1705
,
/* 600 */
1
719
,
1715
,
1726
,
1729
,
1721
,
};
};
#define YY_REDUCE_COUNT (248)
#define YY_REDUCE_COUNT (248)
#define YY_REDUCE_MIN (-3
17
)
#define YY_REDUCE_MIN (-3
35
)
#define YY_REDUCE_MAX (18
49
)
#define YY_REDUCE_MAX (18
36
)
static
const
short
yy_reduce_ofst
[]
=
{
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
38
,
489
,
564
,
625
,
731
,
806
,
839
,
901
,
315
,
964
,
/* 0 */
-
190
,
-
238
,
489
,
520
,
308
,
616
,
679
,
731
,
790
,
841
,
/* 10 */
1018
,
1058
,
1077
,
-
223
,
1133
,
90
,
678
,
955
,
1192
,
1246
,
/* 10 */
858
,
916
,
948
,
-
140
,
1001
,
1058
,
138
,
1105
,
1144
,
1195
,
/* 20 */
12
76
,
1309
,
1339
,
1369
,
1420
,
1436
,
1483
,
1501
,
1516
,
1563
,
/* 20 */
12
24
,
1256
,
1312
,
1343
,
1372
,
1421
,
1432
,
1483
,
1512
,
1544
,
/* 30 */
1
579
,
1626
,
1656
,
1706
,
1736
,
1786
,
1795
,
1849
,
-
191
,
1364
,
/* 30 */
1
600
,
1631
,
1660
,
1691
,
1720
,
1771
,
1782
,
1836
,
546
,
971
,
/* 40 */
23
,
390
,
460
,
-
224
,
235
,
-
282
,
257
,
-
280
,
197
,
-
141
,
/* 40 */
88
,
-
1
,
113
,
-
266
,
-
181
,
46
,
103
,
239
,
-
286
,
-
85
,
/* 50 */
-
1
12
,
-
244
,
-
240
,
-
317
,
-
202
,
-
190
,
-
243
,
200
,
327
,
361
,
/* 50 */
-
1
63
,
87
,
-
240
,
-
223
,
-
335
,
-
334
,
-
253
,
-
49
,
85
,
135
,
/* 60 */
383
,
449
,
-
152
,
450
,
-
221
,
60
,
-
64
,
-
144
,
337
,
452
,
/* 60 */
248
,
331
,
511
,
-
172
,
521
,
-
124
,
-
111
,
56
,
136
,
564
,
/* 70 */
55
,
508
,
78
,
223
,
47
,
117
,
511
,
-
250
,
-
177
,
-
312
,
/* 70 */
591
,
-
21
,
613
,
216
,
130
,
152
,
320
,
614
,
-
173
,
-
177
,
/* 80 */
-
312
,
-
312
,
-
113
,
212
,
-
34
,
298
,
308
,
354
,
371
,
405
,
/* 80 */
-
256
,
-
256
,
-
256
,
-
188
,
-
105
,
-
86
,
213
,
261
,
287
,
370
,
/* 90 */
412
,
424
,
434
,
474
,
476
,
477
,
490
,
491
,
492
,
496
,
/* 90 */
375
,
385
,
422
,
423
,
424
,
426
,
427
,
428
,
429
,
430
,
/* 100 */
520
,
521
,
522
,
542
,
70
,
-
139
,
161
,
289
,
326
,
399
,
/* 100 */
431
,
434
,
482
,
486
,
-
100
,
4
,
305
,
348
,
63
,
473
,
/* 110 */
-
277
,
149
,
291
,
-
114
,
517
,
493
,
502
,
325
,
267
,
530
,
/* 110 */
-
83
,
432
,
455
,
355
,
476
,
94
,
492
,
457
,
-
8
,
447
,
/* 120 */
495
,
538
,
-
259
,
-
255
,
569
,
577
,
616
,
621
,
626
,
599
,
/* 120 */
543
,
-
95
,
-
270
,
225
,
235
,
317
,
369
,
390
,
593
,
516
,
/* 130 */
6
61
,
652
,
562
,
581
,
631
,
583
,
660
,
660
,
701
,
704
,
/* 130 */
6
54
,
650
,
578
,
590
,
639
,
618
,
683
,
683
,
707
,
711
,
/* 140 */
6
77
,
650
,
623
,
623
,
623
,
611
,
612
,
627
,
629
,
660
,
/* 140 */
6
84
,
659
,
629
,
629
,
629
,
619
,
626
,
628
,
664
,
683
,
/* 150 */
7
34
,
690
,
743
,
709
,
762
,
764
,
730
,
733
,
737
,
772
,
/* 150 */
7
58
,
712
,
761
,
721
,
775
,
777
,
741
,
747
,
757
,
786
,
/* 160 */
780
,
781
,
728
,
782
,
747
,
783
,
746
,
796
,
774
,
766
,
/* 160 */
806
,
807
,
752
,
800
,
771
,
808
,
768
,
811
,
788
,
783
,
/* 170 */
8
01
,
805
,
811
,
808
,
830
,
793
,
803
,
809
,
810
,
814
,
/* 170 */
8
21
,
822
,
825
,
826
,
835
,
814
,
815
,
816
,
817
,
827
,
/* 180 */
8
15
,
817
,
820
,
821
,
822
,
824
,
833
,
831
,
795
,
786
,
/* 180 */
8
37
,
845
,
846
,
847
,
848
,
850
,
842
,
851
,
804
,
789
,
/* 190 */
8
37
,
797
,
813
,
847
,
807
,
851
,
828
,
823
,
854
,
79
1
,
/* 190 */
8
70
,
823
,
836
,
880
,
834
,
882
,
853
,
849
,
885
,
83
1
,
/* 200 */
7
60
,
836
,
832
,
765
,
843
,
834
,
838
,
660
,
771
,
794
,
/* 200 */
7
98
,
855
,
868
,
818
,
871
,
875
,
888
,
683
,
819
,
838
,
/* 210 */
798
,
800
,
623
,
864
,
840
,
835
,
841
,
804
,
825
,
848
,
/* 210 */
852
,
828
,
629
,
899
,
887
,
860
,
839
,
867
,
843
,
886
,
/* 220 */
8
50
,
857
,
853
,
856
,
866
,
878
,
881
,
870
,
882
,
885
,
/* 220 */
8
73
,
891
,
893
,
897
,
907
,
910
,
911
,
912
,
915
,
932
,
/* 230 */
891
,
888
,
927
,
904
,
929
,
907
,
909
,
926
,
936
,
935
,
/* 230 */
945
,
944
,
983
,
980
,
986
,
969
,
976
,
991
,
1003
,
1002
,
/* 240 */
945
,
894
,
893
,
895
,
934
,
939
,
943
,
942
,
959
,
/* 240 */
1009
,
955
,
953
,
973
,
994
,
1008
,
1010
,
1020
,
1035
,
};
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 0 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
...
@@ -753,9 +751,9 @@ static const YYACTIONTYPE yy_default[] = {
...
@@ -753,9 +751,9 @@ static const YYACTIONTYPE yy_default[] = {
/* 30 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 30 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 40 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 40 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 50 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 50 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 60 */
1345
,
1345
,
1
414
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 60 */
1345
,
1345
,
1
345
,
1414
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 70 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1
412
,
1552
,
1345
,
/* 70 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1
345
,
1412
,
1552
,
/* 80 */
1
717
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 80 */
1
345
,
1717
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 90 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 90 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 100 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1414
,
1345
,
/* 100 */
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
1414
,
1345
,
/* 110 */
1728
,
1728
,
1728
,
1412
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
/* 110 */
1728
,
1728
,
1728
,
1412
,
1345
,
1345
,
1345
,
1345
,
1345
,
1345
,
...
@@ -1423,42 +1421,42 @@ static const char *const yyTokenName[] = {
...
@@ -1423,42 +1421,42 @@ static const char *const yyTokenName[] = {
/* 268 */
"alter_table_options"
,
/* 268 */
"alter_table_options"
,
/* 269 */
"column_name"
,
/* 269 */
"column_name"
,
/* 270 */
"type_name"
,
/* 270 */
"type_name"
,
/* 271 */
"
create_subtable_clause
"
,
/* 271 */
"
signed_literal
"
,
/* 272 */
"
specific_tags_opt
"
,
/* 272 */
"
create_subtable_clause
"
,
/* 273 */
"
literal_lis
t"
,
/* 273 */
"
specific_tags_op
t"
,
/* 274 */
"
drop_table_clause
"
,
/* 274 */
"
literal_list
"
,
/* 275 */
"
col_name_list
"
,
/* 275 */
"
drop_table_clause
"
,
/* 276 */
"
table_name
"
,
/* 276 */
"
col_name_list
"
,
/* 277 */
"
column_def
"
,
/* 277 */
"
table_name
"
,
/* 278 */
"
func_name_list
"
,
/* 278 */
"
column_def
"
,
/* 279 */
"
alter_table_option
"
,
/* 279 */
"
func_name_list
"
,
/* 280 */
"
col_name
"
,
/* 280 */
"
alter_table_option
"
,
/* 281 */
"
db_name_cond_opt
"
,
/* 281 */
"
col_name
"
,
/* 282 */
"
like_pattern
_opt"
,
/* 282 */
"
db_name_cond
_opt"
,
/* 283 */
"
table_name_cond
"
,
/* 283 */
"
like_pattern_opt
"
,
/* 284 */
"
from_db_opt
"
,
/* 284 */
"
table_name_cond
"
,
/* 285 */
"f
unc_name
"
,
/* 285 */
"f
rom_db_opt
"
,
/* 286 */
"func
tion
_name"
,
/* 286 */
"func_name"
,
/* 287 */
"
index
_name"
,
/* 287 */
"
function
_name"
,
/* 288 */
"index_
options
"
,
/* 288 */
"index_
name
"
,
/* 289 */
"
func_list
"
,
/* 289 */
"
index_options
"
,
/* 290 */
"
duration_literal
"
,
/* 290 */
"
func_list
"
,
/* 291 */
"
sliding_opt
"
,
/* 291 */
"
duration_literal
"
,
/* 292 */
"
func
"
,
/* 292 */
"
sliding_opt
"
,
/* 293 */
"
expression_list
"
,
/* 293 */
"
func
"
,
/* 294 */
"
topic_name
"
,
/* 294 */
"
expression_list
"
,
/* 295 */
"topic_
options
"
,
/* 295 */
"topic_
name
"
,
/* 296 */
"
query_expression
"
,
/* 296 */
"
topic_options
"
,
/* 297 */
"
analyze_opt
"
,
/* 297 */
"
query_expression
"
,
/* 298 */
"
explain_options
"
,
/* 298 */
"
analyze_opt
"
,
/* 299 */
"
agg_func_opt
"
,
/* 299 */
"
explain_options
"
,
/* 300 */
"
bufsize
_opt"
,
/* 300 */
"
agg_func
_opt"
,
/* 301 */
"
stream_name
"
,
/* 301 */
"
bufsize_opt
"
,
/* 302 */
"stream_
options
"
,
/* 302 */
"stream_
name
"
,
/* 303 */
"
into_opt
"
,
/* 303 */
"
stream_options
"
,
/* 304 */
"
dnode_lis
t"
,
/* 304 */
"
into_op
t"
,
/* 305 */
"
signed
"
,
/* 305 */
"
dnode_list
"
,
/* 306 */
"signed
_literal
"
,
/* 306 */
"signed"
,
/* 307 */
"literal_func"
,
/* 307 */
"literal_func"
,
/* 308 */
"table_alias"
,
/* 308 */
"table_alias"
,
/* 309 */
"column_alias"
,
/* 309 */
"column_alias"
,
...
@@ -1638,7 +1636,7 @@ static const char *const yyRuleName[] = {
...
@@ -1638,7 +1636,7 @@ static const char *const yyRuleName[] = {
/* 118 */
"alter_table_clause ::= full_table_name DROP TAG column_name"
,
/* 118 */
"alter_table_clause ::= full_table_name DROP TAG column_name"
,
/* 119 */
"alter_table_clause ::= full_table_name MODIFY TAG column_name type_name"
,
/* 119 */
"alter_table_clause ::= full_table_name MODIFY TAG column_name type_name"
,
/* 120 */
"alter_table_clause ::= full_table_name RENAME TAG column_name column_name"
,
/* 120 */
"alter_table_clause ::= full_table_name RENAME TAG column_name column_name"
,
/* 121 */
"alter_table_clause ::= full_table_name SET TAG column_name NK_EQ literal"
,
/* 121 */
"alter_table_clause ::= full_table_name SET TAG column_name NK_EQ
signed_
literal"
,
/* 122 */
"multi_create_clause ::= create_subtable_clause"
,
/* 122 */
"multi_create_clause ::= create_subtable_clause"
,
/* 123 */
"multi_create_clause ::= multi_create_clause create_subtable_clause"
,
/* 123 */
"multi_create_clause ::= multi_create_clause create_subtable_clause"
,
/* 124 */
"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"
,
/* 124 */
"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"
,
...
@@ -2104,26 +2102,26 @@ static void yy_destructor(
...
@@ -2104,26 +2102,26 @@ static void yy_destructor(
case
263
:
/* table_options */
case
263
:
/* table_options */
case
267
:
/* alter_table_clause */
case
267
:
/* alter_table_clause */
case
268
:
/* alter_table_options */
case
268
:
/* alter_table_options */
case
271
:
/*
create_subtable_clause
*/
case
271
:
/*
signed_literal
*/
case
27
4
:
/* drop_
table_clause */
case
27
2
:
/* create_sub
table_clause */
case
27
7
:
/* column_def
*/
case
27
5
:
/* drop_table_clause
*/
case
2
80
:
/* col_name
*/
case
2
78
:
/* column_def
*/
case
281
:
/*
db_name_cond_opt
*/
case
281
:
/*
col_name
*/
case
282
:
/*
like_pattern
_opt */
case
282
:
/*
db_name_cond
_opt */
case
283
:
/*
table_name_cond
*/
case
283
:
/*
like_pattern_opt
*/
case
284
:
/*
from_db_opt
*/
case
284
:
/*
table_name_cond
*/
case
285
:
/* f
unc_name
*/
case
285
:
/* f
rom_db_opt
*/
case
28
8
:
/* index_options
*/
case
28
6
:
/* func_name
*/
case
2
90
:
/* duration_literal
*/
case
2
89
:
/* index_options
*/
case
291
:
/*
sliding_opt
*/
case
291
:
/*
duration_literal
*/
case
292
:
/*
func
*/
case
292
:
/*
sliding_opt
*/
case
29
5
:
/* topic_options
*/
case
29
3
:
/* func
*/
case
296
:
/*
query_expression
*/
case
296
:
/*
topic_options
*/
case
29
8
:
/* explain_options
*/
case
29
7
:
/* query_expression
*/
case
302
:
/* stream
_options */
case
299
:
/* explain
_options */
case
303
:
/*
into_opt
*/
case
303
:
/*
stream_options
*/
case
30
5
:
/* signed
*/
case
30
4
:
/* into_opt
*/
case
306
:
/* signed
_literal
*/
case
306
:
/* signed */
case
307
:
/* literal_func */
case
307
:
/* literal_func */
case
310
:
/* expression */
case
310
:
/* expression */
case
311
:
/* pseudo_column */
case
311
:
/* pseudo_column */
...
@@ -2161,7 +2159,7 @@ static void yy_destructor(
...
@@ -2161,7 +2159,7 @@ static void yy_destructor(
case
239
:
/* account_options */
case
239
:
/* account_options */
case
240
:
/* alter_account_options */
case
240
:
/* alter_account_options */
case
242
:
/* alter_account_option */
case
242
:
/* alter_account_option */
case
30
0
:
/* bufsize_opt */
case
30
1
:
/* bufsize_opt */
{
{
}
}
...
@@ -2172,11 +2170,11 @@ static void yy_destructor(
...
@@ -2172,11 +2170,11 @@ static void yy_destructor(
case
249
:
/* dnode_endpoint */
case
249
:
/* dnode_endpoint */
case
250
:
/* dnode_host_name */
case
250
:
/* dnode_host_name */
case
269
:
/* column_name */
case
269
:
/* column_name */
case
27
6
:
/* table_name */
case
27
7
:
/* table_name */
case
28
6
:
/* function_name */
case
28
7
:
/* function_name */
case
28
7
:
/* index_name */
case
28
8
:
/* index_name */
case
29
4
:
/* topic_name */
case
29
5
:
/* topic_name */
case
30
1
:
/* stream_name */
case
30
2
:
/* stream_name */
case
308
:
/* table_alias */
case
308
:
/* table_alias */
case
309
:
/* column_alias */
case
309
:
/* column_alias */
case
315
:
/* star_func */
case
315
:
/* star_func */
...
@@ -2195,8 +2193,8 @@ static void yy_destructor(
...
@@ -2195,8 +2193,8 @@ static void yy_destructor(
break
;
break
;
case
251
:
/* not_exists_opt */
case
251
:
/* not_exists_opt */
case
253
:
/* exists_opt */
case
253
:
/* exists_opt */
case
29
7
:
/* analyze_opt */
case
29
8
:
/* analyze_opt */
case
299
:
/* agg_func_opt */
case
300
:
/* agg_func_opt */
case
337
:
/* set_quantifier_opt */
case
337
:
/* set_quantifier_opt */
{
{
...
@@ -2210,13 +2208,13 @@ static void yy_destructor(
...
@@ -2210,13 +2208,13 @@ static void yy_destructor(
case
264
:
/* multi_create_clause */
case
264
:
/* multi_create_clause */
case
265
:
/* tags_def */
case
265
:
/* tags_def */
case
266
:
/* multi_drop_clause */
case
266
:
/* multi_drop_clause */
case
27
2
:
/* specific_tags_opt */
case
27
3
:
/* specific_tags_opt */
case
27
3
:
/* literal_list */
case
27
4
:
/* literal_list */
case
27
5
:
/* col_name_list */
case
27
6
:
/* col_name_list */
case
27
8
:
/* func_name_list */
case
27
9
:
/* func_name_list */
case
2
89
:
/* func_list */
case
2
90
:
/* func_list */
case
29
3
:
/* expression_list */
case
29
4
:
/* expression_list */
case
30
4
:
/* dnode_list */
case
30
5
:
/* dnode_list */
case
316
:
/* star_func_para_list */
case
316
:
/* star_func_para_list */
case
318
:
/* other_para_list */
case
318
:
/* other_para_list */
case
338
:
/* select_list */
case
338
:
/* select_list */
...
@@ -2231,7 +2229,7 @@ static void yy_destructor(
...
@@ -2231,7 +2229,7 @@ static void yy_destructor(
}
}
break
;
break
;
case
258
:
/* alter_db_option */
case
258
:
/* alter_db_option */
case
2
79
:
/* alter_table_option */
case
2
80
:
/* alter_table_option */
{
{
}
}
...
@@ -2682,21 +2680,21 @@ static const struct {
...
@@ -2682,21 +2680,21 @@ static const struct {
{
267
,
-
4
},
/* (118) alter_table_clause ::= full_table_name DROP TAG column_name */
{
267
,
-
4
},
/* (118) alter_table_clause ::= full_table_name DROP TAG column_name */
{
267
,
-
5
},
/* (119) alter_table_clause ::= full_table_name MODIFY TAG column_name type_name */
{
267
,
-
5
},
/* (119) alter_table_clause ::= full_table_name MODIFY TAG column_name type_name */
{
267
,
-
5
},
/* (120) alter_table_clause ::= full_table_name RENAME TAG column_name column_name */
{
267
,
-
5
},
/* (120) alter_table_clause ::= full_table_name RENAME TAG column_name column_name */
{
267
,
-
6
},
/* (121) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ literal */
{
267
,
-
6
},
/* (121) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ
signed_
literal */
{
264
,
-
1
},
/* (122) multi_create_clause ::= create_subtable_clause */
{
264
,
-
1
},
/* (122) multi_create_clause ::= create_subtable_clause */
{
264
,
-
2
},
/* (123) multi_create_clause ::= multi_create_clause create_subtable_clause */
{
264
,
-
2
},
/* (123) multi_create_clause ::= multi_create_clause create_subtable_clause */
{
27
1
,
-
10
},
/* (124) 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 */
{
27
2
,
-
10
},
/* (124) 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 */
{
266
,
-
1
},
/* (125) multi_drop_clause ::= drop_table_clause */
{
266
,
-
1
},
/* (125) multi_drop_clause ::= drop_table_clause */
{
266
,
-
2
},
/* (126) multi_drop_clause ::= multi_drop_clause drop_table_clause */
{
266
,
-
2
},
/* (126) multi_drop_clause ::= multi_drop_clause drop_table_clause */
{
27
4
,
-
2
},
/* (127) drop_table_clause ::= exists_opt full_table_name */
{
27
5
,
-
2
},
/* (127) drop_table_clause ::= exists_opt full_table_name */
{
27
2
,
0
},
/* (128) specific_tags_opt ::= */
{
27
3
,
0
},
/* (128) specific_tags_opt ::= */
{
27
2
,
-
3
},
/* (129) specific_tags_opt ::= NK_LP col_name_list NK_RP */
{
27
3
,
-
3
},
/* (129) specific_tags_opt ::= NK_LP col_name_list NK_RP */
{
260
,
-
1
},
/* (130) full_table_name ::= table_name */
{
260
,
-
1
},
/* (130) full_table_name ::= table_name */
{
260
,
-
3
},
/* (131) full_table_name ::= db_name NK_DOT table_name */
{
260
,
-
3
},
/* (131) full_table_name ::= db_name NK_DOT table_name */
{
261
,
-
1
},
/* (132) column_def_list ::= column_def */
{
261
,
-
1
},
/* (132) column_def_list ::= column_def */
{
261
,
-
3
},
/* (133) column_def_list ::= column_def_list NK_COMMA column_def */
{
261
,
-
3
},
/* (133) column_def_list ::= column_def_list NK_COMMA column_def */
{
27
7
,
-
2
},
/* (134) column_def ::= column_name type_name */
{
27
8
,
-
2
},
/* (134) column_def ::= column_name type_name */
{
27
7
,
-
4
},
/* (135) column_def ::= column_name type_name COMMENT NK_STRING */
{
27
8
,
-
4
},
/* (135) column_def ::= column_name type_name COMMENT NK_STRING */
{
270
,
-
1
},
/* (136) type_name ::= BOOL */
{
270
,
-
1
},
/* (136) type_name ::= BOOL */
{
270
,
-
1
},
/* (137) type_name ::= TINYINT */
{
270
,
-
1
},
/* (137) type_name ::= TINYINT */
{
270
,
-
1
},
/* (138) type_name ::= SMALLINT */
{
270
,
-
1
},
/* (138) type_name ::= SMALLINT */
...
@@ -2732,11 +2730,11 @@ static const struct {
...
@@ -2732,11 +2730,11 @@ static const struct {
{
263
,
-
5
},
/* (168) table_options ::= table_options SMA NK_LP col_name_list NK_RP */
{
263
,
-
5
},
/* (168) table_options ::= table_options SMA NK_LP col_name_list NK_RP */
{
268
,
-
1
},
/* (169) alter_table_options ::= alter_table_option */
{
268
,
-
1
},
/* (169) alter_table_options ::= alter_table_option */
{
268
,
-
2
},
/* (170) alter_table_options ::= alter_table_options alter_table_option */
{
268
,
-
2
},
/* (170) alter_table_options ::= alter_table_options alter_table_option */
{
2
79
,
-
2
},
/* (171) alter_table_option ::= COMMENT NK_STRING */
{
2
80
,
-
2
},
/* (171) alter_table_option ::= COMMENT NK_STRING */
{
2
79
,
-
2
},
/* (172) alter_table_option ::= TTL NK_INTEGER */
{
2
80
,
-
2
},
/* (172) alter_table_option ::= TTL NK_INTEGER */
{
27
5
,
-
1
},
/* (173) col_name_list ::= col_name */
{
27
6
,
-
1
},
/* (173) col_name_list ::= col_name */
{
27
5
,
-
3
},
/* (174) col_name_list ::= col_name_list NK_COMMA col_name */
{
27
6
,
-
3
},
/* (174) col_name_list ::= col_name_list NK_COMMA col_name */
{
28
0
,
-
1
},
/* (175) col_name ::= column_name */
{
28
1
,
-
1
},
/* (175) col_name ::= column_name */
{
238
,
-
2
},
/* (176) cmd ::= SHOW DNODES */
{
238
,
-
2
},
/* (176) cmd ::= SHOW DNODES */
{
238
,
-
2
},
/* (177) cmd ::= SHOW USERS */
{
238
,
-
2
},
/* (177) cmd ::= SHOW USERS */
{
238
,
-
2
},
/* (178) cmd ::= SHOW DATABASES */
{
238
,
-
2
},
/* (178) cmd ::= SHOW DATABASES */
...
@@ -2765,64 +2763,64 @@ static const struct {
...
@@ -2765,64 +2763,64 @@ static const struct {
{
238
,
-
2
},
/* (201) cmd ::= SHOW SNODES */
{
238
,
-
2
},
/* (201) cmd ::= SHOW SNODES */
{
238
,
-
2
},
/* (202) cmd ::= SHOW CLUSTER */
{
238
,
-
2
},
/* (202) cmd ::= SHOW CLUSTER */
{
238
,
-
2
},
/* (203) cmd ::= SHOW TRANSACTIONS */
{
238
,
-
2
},
/* (203) cmd ::= SHOW TRANSACTIONS */
{
28
1
,
0
},
/* (204) db_name_cond_opt ::= */
{
28
2
,
0
},
/* (204) db_name_cond_opt ::= */
{
28
1
,
-
2
},
/* (205) db_name_cond_opt ::= db_name NK_DOT */
{
28
2
,
-
2
},
/* (205) db_name_cond_opt ::= db_name NK_DOT */
{
28
2
,
0
},
/* (206) like_pattern_opt ::= */
{
28
3
,
0
},
/* (206) like_pattern_opt ::= */
{
28
2
,
-
2
},
/* (207) like_pattern_opt ::= LIKE NK_STRING */
{
28
3
,
-
2
},
/* (207) like_pattern_opt ::= LIKE NK_STRING */
{
28
3
,
-
1
},
/* (208) table_name_cond ::= table_name */
{
28
4
,
-
1
},
/* (208) table_name_cond ::= table_name */
{
28
4
,
0
},
/* (209) from_db_opt ::= */
{
28
5
,
0
},
/* (209) from_db_opt ::= */
{
28
4
,
-
2
},
/* (210) from_db_opt ::= FROM db_name */
{
28
5
,
-
2
},
/* (210) from_db_opt ::= FROM db_name */
{
27
8
,
-
1
},
/* (211) func_name_list ::= func_name */
{
27
9
,
-
1
},
/* (211) func_name_list ::= func_name */
{
27
8
,
-
3
},
/* (212) func_name_list ::= func_name_list NK_COMMA func_name */
{
27
9
,
-
3
},
/* (212) func_name_list ::= func_name_list NK_COMMA func_name */
{
28
5
,
-
1
},
/* (213) func_name ::= function_name */
{
28
6
,
-
1
},
/* (213) func_name ::= function_name */
{
238
,
-
8
},
/* (214) cmd ::= CREATE SMA INDEX not_exists_opt index_name ON table_name index_options */
{
238
,
-
8
},
/* (214) cmd ::= CREATE SMA INDEX not_exists_opt index_name ON table_name index_options */
{
238
,
-
10
},
/* (215) cmd ::= CREATE FULLTEXT INDEX not_exists_opt index_name ON table_name NK_LP col_name_list NK_RP */
{
238
,
-
10
},
/* (215) cmd ::= CREATE FULLTEXT INDEX not_exists_opt index_name ON table_name NK_LP col_name_list NK_RP */
{
238
,
-
6
},
/* (216) cmd ::= DROP INDEX exists_opt index_name ON table_name */
{
238
,
-
6
},
/* (216) cmd ::= DROP INDEX exists_opt index_name ON table_name */
{
28
8
,
0
},
/* (217) index_options ::= */
{
28
9
,
0
},
/* (217) index_options ::= */
{
28
8
,
-
9
},
/* (218) index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt */
{
28
9
,
-
9
},
/* (218) index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt */
{
28
8
,
-
11
},
/* (219) index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt */
{
28
9
,
-
11
},
/* (219) index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt */
{
2
89
,
-
1
},
/* (220) func_list ::= func */
{
2
90
,
-
1
},
/* (220) func_list ::= func */
{
2
89
,
-
3
},
/* (221) func_list ::= func_list NK_COMMA func */
{
2
90
,
-
3
},
/* (221) func_list ::= func_list NK_COMMA func */
{
29
2
,
-
4
},
/* (222) func ::= function_name NK_LP expression_list NK_RP */
{
29
3
,
-
4
},
/* (222) func ::= function_name NK_LP expression_list NK_RP */
{
238
,
-
7
},
/* (223) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS query_expression */
{
238
,
-
7
},
/* (223) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS query_expression */
{
238
,
-
7
},
/* (224) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS db_name */
{
238
,
-
7
},
/* (224) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS db_name */
{
238
,
-
4
},
/* (225) cmd ::= DROP TOPIC exists_opt topic_name */
{
238
,
-
4
},
/* (225) cmd ::= DROP TOPIC exists_opt topic_name */
{
29
5
,
0
},
/* (226) topic_options ::= */
{
29
6
,
0
},
/* (226) topic_options ::= */
{
29
5
,
-
3
},
/* (227) topic_options ::= topic_options WITH TABLE */
{
29
6
,
-
3
},
/* (227) topic_options ::= topic_options WITH TABLE */
{
29
5
,
-
3
},
/* (228) topic_options ::= topic_options WITH SCHEMA */
{
29
6
,
-
3
},
/* (228) topic_options ::= topic_options WITH SCHEMA */
{
29
5
,
-
3
},
/* (229) topic_options ::= topic_options WITH TAG */
{
29
6
,
-
3
},
/* (229) topic_options ::= topic_options WITH TAG */
{
238
,
-
2
},
/* (230) cmd ::= DESC full_table_name */
{
238
,
-
2
},
/* (230) cmd ::= DESC full_table_name */
{
238
,
-
2
},
/* (231) cmd ::= DESCRIBE full_table_name */
{
238
,
-
2
},
/* (231) cmd ::= DESCRIBE full_table_name */
{
238
,
-
3
},
/* (232) cmd ::= RESET QUERY CACHE */
{
238
,
-
3
},
/* (232) cmd ::= RESET QUERY CACHE */
{
238
,
-
4
},
/* (233) cmd ::= EXPLAIN analyze_opt explain_options query_expression */
{
238
,
-
4
},
/* (233) cmd ::= EXPLAIN analyze_opt explain_options query_expression */
{
29
7
,
0
},
/* (234) analyze_opt ::= */
{
29
8
,
0
},
/* (234) analyze_opt ::= */
{
29
7
,
-
1
},
/* (235) analyze_opt ::= ANALYZE */
{
29
8
,
-
1
},
/* (235) analyze_opt ::= ANALYZE */
{
29
8
,
0
},
/* (236) explain_options ::= */
{
29
9
,
0
},
/* (236) explain_options ::= */
{
29
8
,
-
3
},
/* (237) explain_options ::= explain_options VERBOSE NK_BOOL */
{
29
9
,
-
3
},
/* (237) explain_options ::= explain_options VERBOSE NK_BOOL */
{
29
8
,
-
3
},
/* (238) explain_options ::= explain_options RATIO NK_FLOAT */
{
29
9
,
-
3
},
/* (238) explain_options ::= explain_options RATIO NK_FLOAT */
{
238
,
-
6
},
/* (239) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */
{
238
,
-
6
},
/* (239) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */
{
238
,
-
10
},
/* (240) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */
{
238
,
-
10
},
/* (240) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */
{
238
,
-
4
},
/* (241) cmd ::= DROP FUNCTION exists_opt function_name */
{
238
,
-
4
},
/* (241) cmd ::= DROP FUNCTION exists_opt function_name */
{
299
,
0
},
/* (242) agg_func_opt ::= */
{
300
,
0
},
/* (242) agg_func_opt ::= */
{
299
,
-
1
},
/* (243) agg_func_opt ::= AGGREGATE */
{
300
,
-
1
},
/* (243) agg_func_opt ::= AGGREGATE */
{
30
0
,
0
},
/* (244) bufsize_opt ::= */
{
30
1
,
0
},
/* (244) bufsize_opt ::= */
{
30
0
,
-
2
},
/* (245) bufsize_opt ::= BUFSIZE NK_INTEGER */
{
30
1
,
-
2
},
/* (245) bufsize_opt ::= BUFSIZE NK_INTEGER */
{
238
,
-
8
},
/* (246) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */
{
238
,
-
8
},
/* (246) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */
{
238
,
-
4
},
/* (247) cmd ::= DROP STREAM exists_opt stream_name */
{
238
,
-
4
},
/* (247) cmd ::= DROP STREAM exists_opt stream_name */
{
30
3
,
0
},
/* (248) into_opt ::= */
{
30
4
,
0
},
/* (248) into_opt ::= */
{
30
3
,
-
2
},
/* (249) into_opt ::= INTO full_table_name */
{
30
4
,
-
2
},
/* (249) into_opt ::= INTO full_table_name */
{
30
2
,
0
},
/* (250) stream_options ::= */
{
30
3
,
0
},
/* (250) stream_options ::= */
{
30
2
,
-
3
},
/* (251) stream_options ::= stream_options TRIGGER AT_ONCE */
{
30
3
,
-
3
},
/* (251) stream_options ::= stream_options TRIGGER AT_ONCE */
{
30
2
,
-
3
},
/* (252) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */
{
30
3
,
-
3
},
/* (252) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */
{
30
2
,
-
3
},
/* (253) stream_options ::= stream_options WATERMARK duration_literal */
{
30
3
,
-
3
},
/* (253) stream_options ::= stream_options WATERMARK duration_literal */
{
238
,
-
3
},
/* (254) cmd ::= KILL CONNECTION NK_INTEGER */
{
238
,
-
3
},
/* (254) cmd ::= KILL CONNECTION NK_INTEGER */
{
238
,
-
3
},
/* (255) cmd ::= KILL QUERY NK_INTEGER */
{
238
,
-
3
},
/* (255) cmd ::= KILL QUERY NK_INTEGER */
{
238
,
-
3
},
/* (256) cmd ::= KILL TRANSACTION NK_INTEGER */
{
238
,
-
3
},
/* (256) cmd ::= KILL TRANSACTION NK_INTEGER */
{
238
,
-
4
},
/* (257) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */
{
238
,
-
4
},
/* (257) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */
{
238
,
-
4
},
/* (258) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */
{
238
,
-
4
},
/* (258) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */
{
238
,
-
3
},
/* (259) cmd ::= SPLIT VGROUP NK_INTEGER */
{
238
,
-
3
},
/* (259) cmd ::= SPLIT VGROUP NK_INTEGER */
{
30
4
,
-
2
},
/* (260) dnode_list ::= DNODE NK_INTEGER */
{
30
5
,
-
2
},
/* (260) dnode_list ::= DNODE NK_INTEGER */
{
30
4
,
-
3
},
/* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */
{
30
5
,
-
3
},
/* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */
{
238
,
-
3
},
/* (262) cmd ::= SYNCDB db_name REPLICA */
{
238
,
-
3
},
/* (262) cmd ::= SYNCDB db_name REPLICA */
{
238
,
-
1
},
/* (263) cmd ::= query_expression */
{
238
,
-
1
},
/* (263) cmd ::= query_expression */
{
241
,
-
1
},
/* (264) literal ::= NK_INTEGER */
{
241
,
-
1
},
/* (264) literal ::= NK_INTEGER */
...
@@ -2833,32 +2831,32 @@ static const struct {
...
@@ -2833,32 +2831,32 @@ static const struct {
{
241
,
-
1
},
/* (269) literal ::= duration_literal */
{
241
,
-
1
},
/* (269) literal ::= duration_literal */
{
241
,
-
1
},
/* (270) literal ::= NULL */
{
241
,
-
1
},
/* (270) literal ::= NULL */
{
241
,
-
1
},
/* (271) literal ::= NK_QUESTION */
{
241
,
-
1
},
/* (271) literal ::= NK_QUESTION */
{
29
0
,
-
1
},
/* (272) duration_literal ::= NK_VARIABLE */
{
29
1
,
-
1
},
/* (272) duration_literal ::= NK_VARIABLE */
{
30
5
,
-
1
},
/* (273) signed ::= NK_INTEGER */
{
30
6
,
-
1
},
/* (273) signed ::= NK_INTEGER */
{
30
5
,
-
2
},
/* (274) signed ::= NK_PLUS NK_INTEGER */
{
30
6
,
-
2
},
/* (274) signed ::= NK_PLUS NK_INTEGER */
{
30
5
,
-
2
},
/* (275) signed ::= NK_MINUS NK_INTEGER */
{
30
6
,
-
2
},
/* (275) signed ::= NK_MINUS NK_INTEGER */
{
30
5
,
-
1
},
/* (276) signed ::= NK_FLOAT */
{
30
6
,
-
1
},
/* (276) signed ::= NK_FLOAT */
{
30
5
,
-
2
},
/* (277) signed ::= NK_PLUS NK_FLOAT */
{
30
6
,
-
2
},
/* (277) signed ::= NK_PLUS NK_FLOAT */
{
30
5
,
-
2
},
/* (278) signed ::= NK_MINUS NK_FLOAT */
{
30
6
,
-
2
},
/* (278) signed ::= NK_MINUS NK_FLOAT */
{
306
,
-
1
},
/* (279) signed_literal ::= signed */
{
271
,
-
1
},
/* (279) signed_literal ::= signed */
{
306
,
-
1
},
/* (280) signed_literal ::= NK_STRING */
{
271
,
-
1
},
/* (280) signed_literal ::= NK_STRING */
{
306
,
-
1
},
/* (281) signed_literal ::= NK_BOOL */
{
271
,
-
1
},
/* (281) signed_literal ::= NK_BOOL */
{
306
,
-
2
},
/* (282) signed_literal ::= TIMESTAMP NK_STRING */
{
271
,
-
2
},
/* (282) signed_literal ::= TIMESTAMP NK_STRING */
{
306
,
-
1
},
/* (283) signed_literal ::= duration_literal */
{
271
,
-
1
},
/* (283) signed_literal ::= duration_literal */
{
306
,
-
1
},
/* (284) signed_literal ::= NULL */
{
271
,
-
1
},
/* (284) signed_literal ::= NULL */
{
306
,
-
1
},
/* (285) signed_literal ::= literal_func */
{
271
,
-
1
},
/* (285) signed_literal ::= literal_func */
{
27
3
,
-
1
},
/* (286) literal_list ::= signed_literal */
{
27
4
,
-
1
},
/* (286) literal_list ::= signed_literal */
{
27
3
,
-
3
},
/* (287) literal_list ::= literal_list NK_COMMA signed_literal */
{
27
4
,
-
3
},
/* (287) literal_list ::= literal_list NK_COMMA signed_literal */
{
248
,
-
1
},
/* (288) db_name ::= NK_ID */
{
248
,
-
1
},
/* (288) db_name ::= NK_ID */
{
27
6
,
-
1
},
/* (289) table_name ::= NK_ID */
{
27
7
,
-
1
},
/* (289) table_name ::= NK_ID */
{
269
,
-
1
},
/* (290) column_name ::= NK_ID */
{
269
,
-
1
},
/* (290) column_name ::= NK_ID */
{
28
6
,
-
1
},
/* (291) function_name ::= NK_ID */
{
28
7
,
-
1
},
/* (291) function_name ::= NK_ID */
{
308
,
-
1
},
/* (292) table_alias ::= NK_ID */
{
308
,
-
1
},
/* (292) table_alias ::= NK_ID */
{
309
,
-
1
},
/* (293) column_alias ::= NK_ID */
{
309
,
-
1
},
/* (293) column_alias ::= NK_ID */
{
243
,
-
1
},
/* (294) user_name ::= NK_ID */
{
243
,
-
1
},
/* (294) user_name ::= NK_ID */
{
28
7
,
-
1
},
/* (295) index_name ::= NK_ID */
{
28
8
,
-
1
},
/* (295) index_name ::= NK_ID */
{
29
4
,
-
1
},
/* (296) topic_name ::= NK_ID */
{
29
5
,
-
1
},
/* (296) topic_name ::= NK_ID */
{
30
1
,
-
1
},
/* (297) stream_name ::= NK_ID */
{
30
2
,
-
1
},
/* (297) stream_name ::= NK_ID */
{
310
,
-
1
},
/* (298) expression ::= literal */
{
310
,
-
1
},
/* (298) expression ::= literal */
{
310
,
-
1
},
/* (299) expression ::= pseudo_column */
{
310
,
-
1
},
/* (299) expression ::= pseudo_column */
{
310
,
-
1
},
/* (300) expression ::= column_reference */
{
310
,
-
1
},
/* (300) expression ::= column_reference */
...
@@ -2873,8 +2871,8 @@ static const struct {
...
@@ -2873,8 +2871,8 @@ static const struct {
{
310
,
-
3
},
/* (309) expression ::= expression NK_SLASH expression */
{
310
,
-
3
},
/* (309) expression ::= expression NK_SLASH expression */
{
310
,
-
3
},
/* (310) expression ::= expression NK_REM expression */
{
310
,
-
3
},
/* (310) expression ::= expression NK_REM expression */
{
310
,
-
3
},
/* (311) expression ::= column_reference NK_ARROW NK_STRING */
{
310
,
-
3
},
/* (311) expression ::= column_reference NK_ARROW NK_STRING */
{
29
3
,
-
1
},
/* (312) expression_list ::= expression */
{
29
4
,
-
1
},
/* (312) expression_list ::= expression */
{
29
3
,
-
3
},
/* (313) expression_list ::= expression_list NK_COMMA expression */
{
29
4
,
-
3
},
/* (313) expression_list ::= expression_list NK_COMMA expression */
{
312
,
-
1
},
/* (314) column_reference ::= column_name */
{
312
,
-
1
},
/* (314) column_reference ::= column_name */
{
312
,
-
3
},
/* (315) column_reference ::= table_name NK_DOT column_name */
{
312
,
-
3
},
/* (315) column_reference ::= table_name NK_DOT column_name */
{
311
,
-
1
},
/* (316) pseudo_column ::= ROWTS */
{
311
,
-
1
},
/* (316) pseudo_column ::= ROWTS */
...
@@ -2970,8 +2968,8 @@ static const struct {
...
@@ -2970,8 +2968,8 @@ static const struct {
{
341
,
-
4
},
/* (406) twindow_clause_opt ::= STATE_WINDOW NK_LP expression NK_RP */
{
341
,
-
4
},
/* (406) twindow_clause_opt ::= STATE_WINDOW NK_LP expression NK_RP */
{
341
,
-
6
},
/* (407) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
{
341
,
-
6
},
/* (407) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */
{
341
,
-
8
},
/* (408) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
{
341
,
-
8
},
/* (408) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */
{
29
1
,
0
},
/* (409) sliding_opt ::= */
{
29
2
,
0
},
/* (409) sliding_opt ::= */
{
29
1
,
-
4
},
/* (410) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
{
29
2
,
-
4
},
/* (410) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */
{
346
,
0
},
/* (411) fill_opt ::= */
{
346
,
0
},
/* (411) fill_opt ::= */
{
346
,
-
4
},
/* (412) fill_opt ::= FILL NK_LP fill_mode NK_RP */
{
346
,
-
4
},
/* (412) fill_opt ::= FILL NK_LP fill_mode NK_RP */
{
346
,
-
6
},
/* (413) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
{
346
,
-
6
},
/* (413) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */
...
@@ -2986,7 +2984,7 @@ static const struct {
...
@@ -2986,7 +2984,7 @@ static const struct {
{
348
,
-
3
},
/* (422) group_by_list ::= group_by_list NK_COMMA expression */
{
348
,
-
3
},
/* (422) group_by_list ::= group_by_list NK_COMMA expression */
{
343
,
0
},
/* (423) having_clause_opt ::= */
{
343
,
0
},
/* (423) having_clause_opt ::= */
{
343
,
-
2
},
/* (424) having_clause_opt ::= HAVING search_condition */
{
343
,
-
2
},
/* (424) having_clause_opt ::= HAVING search_condition */
{
29
6
,
-
4
},
/* (425) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
29
7
,
-
4
},
/* (425) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
349
,
-
1
},
/* (426) query_expression_body ::= query_primary */
{
349
,
-
1
},
/* (426) query_expression_body ::= query_primary */
{
349
,
-
4
},
/* (427) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
349
,
-
4
},
/* (427) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
349
,
-
3
},
/* (428) query_expression_body ::= query_expression_body UNION query_expression_body */
{
349
,
-
3
},
/* (428) query_expression_body ::= query_expression_body UNION query_expression_body */
...
@@ -3501,8 +3499,8 @@ static YYACTIONTYPE yy_reduce(
...
@@ -3501,8 +3499,8 @@ static YYACTIONTYPE yy_reduce(
{
yylhsminor
.
yy172
=
createAlterTableRenameCol
(
pCxt
,
yymsp
[
-
4
].
minor
.
yy172
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
&
yymsp
[
-
1
].
minor
.
yy105
,
&
yymsp
[
0
].
minor
.
yy105
);
}
{
yylhsminor
.
yy172
=
createAlterTableRenameCol
(
pCxt
,
yymsp
[
-
4
].
minor
.
yy172
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
&
yymsp
[
-
1
].
minor
.
yy105
,
&
yymsp
[
0
].
minor
.
yy105
);
}
yymsp
[
-
4
].
minor
.
yy172
=
yylhsminor
.
yy172
;
yymsp
[
-
4
].
minor
.
yy172
=
yylhsminor
.
yy172
;
break
;
break
;
case
121
:
/* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ literal */
case
121
:
/* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ
signed_
literal */
{
yylhsminor
.
yy172
=
createAlterTableSetTag
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy172
,
&
yymsp
[
-
2
].
minor
.
yy105
,
releaseRawExprNode
(
pCxt
,
yymsp
[
0
].
minor
.
yy172
)
);
}
{
yylhsminor
.
yy172
=
createAlterTableSetTag
(
pCxt
,
yymsp
[
-
5
].
minor
.
yy172
,
&
yymsp
[
-
2
].
minor
.
yy105
,
yymsp
[
0
].
minor
.
yy172
);
}
yymsp
[
-
5
].
minor
.
yy172
=
yylhsminor
.
yy172
;
yymsp
[
-
5
].
minor
.
yy172
=
yylhsminor
.
yy172
;
break
;
break
;
case
123
:
/* multi_create_clause ::= multi_create_clause create_subtable_clause */
case
123
:
/* multi_create_clause ::= multi_create_clause create_subtable_clause */
...
...
source/libs/parser/test/parSelectTest.cpp
浏览文件 @
e00a9fa9
...
@@ -239,6 +239,10 @@ TEST_F(ParserSelectTest, semanticError) {
...
@@ -239,6 +239,10 @@ TEST_F(ParserSelectTest, semanticError) {
// TSDB_CODE_PAR_WRONG_VALUE_TYPE
// TSDB_CODE_PAR_WRONG_VALUE_TYPE
run
(
"SELECT timestamp '2010a' FROM t1"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
PARSER_STAGE_TRANSLATE
);
run
(
"SELECT timestamp '2010a' FROM t1"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
PARSER_STAGE_TRANSLATE
);
run
(
"SELECT LAST(*) + SUM(c1) FROM t1"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
PARSER_STAGE_TRANSLATE
);
run
(
"SELECT CEIL(LAST(ts, c1)) FROM t1"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
PARSER_STAGE_TRANSLATE
);
// TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION
// TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION
run
(
"SELECT c2 FROM t1 tt1 join t1 tt2 on COUNT(*) > 0"
,
TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION
,
run
(
"SELECT c2 FROM t1 tt1 join t1 tt2 on COUNT(*) > 0"
,
TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION
,
PARSER_STAGE_TRANSLATE
);
PARSER_STAGE_TRANSLATE
);
...
...
source/libs/planner/src/planSpliter.c
浏览文件 @
e00a9fa9
...
@@ -248,6 +248,7 @@ static SLogicSubplan* unionCreateSubplan(SSplitContext* pCxt, SLogicNode* pNode)
...
@@ -248,6 +248,7 @@ static SLogicSubplan* unionCreateSubplan(SSplitContext* pCxt, SLogicNode* pNode)
pSubplan
->
id
.
groupId
=
pCxt
->
groupId
;
pSubplan
->
id
.
groupId
=
pCxt
->
groupId
;
pSubplan
->
subplanType
=
SUBPLAN_TYPE_SCAN
;
pSubplan
->
subplanType
=
SUBPLAN_TYPE_SCAN
;
pSubplan
->
pNode
=
pNode
;
pSubplan
->
pNode
=
pNode
;
pNode
->
pParent
=
NULL
;
return
pSubplan
;
return
pSubplan
;
}
}
...
@@ -408,17 +409,30 @@ static const SSplitRule splitRuleSet[] = {{.pName = "SuperTableScan", .splitFunc
...
@@ -408,17 +409,30 @@ static const SSplitRule splitRuleSet[] = {{.pName = "SuperTableScan", .splitFunc
static
const
int32_t
splitRuleNum
=
(
sizeof
(
splitRuleSet
)
/
sizeof
(
SSplitRule
));
static
const
int32_t
splitRuleNum
=
(
sizeof
(
splitRuleSet
)
/
sizeof
(
SSplitRule
));
static
void
dumpLogicSubplan
(
const
char
*
pRuleName
,
SLogicSubplan
*
pSubplan
)
{
char
*
pStr
=
NULL
;
nodesNodeToString
(
pSubplan
,
false
,
&
pStr
,
NULL
);
qDebugL
(
"apply %s rule: %s"
,
pRuleName
,
pStr
);
taosMemoryFree
(
pStr
);
}
static
int32_t
applySplitRule
(
SLogicSubplan
*
pSubplan
)
{
static
int32_t
applySplitRule
(
SLogicSubplan
*
pSubplan
)
{
SSplitContext
cxt
=
{.
queryId
=
pSubplan
->
id
.
queryId
,
.
groupId
=
pSubplan
->
id
.
groupId
+
1
,
.
split
=
false
};
SSplitContext
cxt
=
{.
queryId
=
pSubplan
->
id
.
queryId
,
.
groupId
=
pSubplan
->
id
.
groupId
+
1
,
.
split
=
false
};
bool
split
=
false
;
do
{
do
{
cxt
.
split
=
false
;
split
=
false
;
for
(
int32_t
i
=
0
;
i
<
splitRuleNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
splitRuleNum
;
++
i
)
{
cxt
.
split
=
false
;
int32_t
code
=
splitRuleSet
[
i
].
splitFunc
(
&
cxt
,
pSubplan
);
int32_t
code
=
splitRuleSet
[
i
].
splitFunc
(
&
cxt
,
pSubplan
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
return
code
;
return
code
;
}
}
if
(
cxt
.
split
)
{
split
=
true
;
dumpLogicSubplan
(
splitRuleSet
[
i
].
pName
,
pSubplan
);
}
}
}
}
while
(
cxt
.
split
);
}
while
(
split
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
...
source/libs/planner/test/planSetOpTest.cpp
浏览文件 @
e00a9fa9
...
@@ -23,7 +23,12 @@ class PlanSetOpTest : public PlannerTestBase {};
...
@@ -23,7 +23,12 @@ class PlanSetOpTest : public PlannerTestBase {};
TEST_F
(
PlanSetOpTest
,
unionAll
)
{
TEST_F
(
PlanSetOpTest
,
unionAll
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
// sql 1: single UNION ALL operator
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 UNION ALL SELECT c1, c2 FROM t1 WHERE c1 > 20"
);
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 UNION ALL SELECT c1, c2 FROM t1 WHERE c1 > 20"
);
// sql 2: multi UNION ALL operator
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 "
"UNION ALL SELECT c1, c2 FROM t1 WHERE c1 > 20 "
"UNION ALL SELECT c1, c2 FROM t1 WHERE c1 > 30"
);
}
}
TEST_F
(
PlanSetOpTest
,
unionAllSubquery
)
{
TEST_F
(
PlanSetOpTest
,
unionAllSubquery
)
{
...
@@ -44,7 +49,12 @@ TEST_F(PlanSetOpTest, unionAllWithSubquery) {
...
@@ -44,7 +49,12 @@ TEST_F(PlanSetOpTest, unionAllWithSubquery) {
TEST_F
(
PlanSetOpTest
,
union
)
{
TEST_F
(
PlanSetOpTest
,
union
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
// single UNION operator
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 UNION SELECT c1, c2 FROM t1 WHERE c1 > 20"
);
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 UNION SELECT c1, c2 FROM t1 WHERE c1 > 20"
);
// multi UNION operator
run
(
"SELECT c1, c2 FROM t1 WHERE c1 > 10 "
"UNION SELECT c1, c2 FROM t1 WHERE c1 > 20 "
"UNION SELECT c1, c2 FROM t1 WHERE c1 > 30"
);
}
}
TEST_F
(
PlanSetOpTest
,
unionContainJoin
)
{
TEST_F
(
PlanSetOpTest
,
unionContainJoin
)
{
...
@@ -62,3 +72,12 @@ TEST_F(PlanSetOpTest, unionSubquery) {
...
@@ -62,3 +72,12 @@ TEST_F(PlanSetOpTest, unionSubquery) {
run
(
"SELECT * FROM (SELECT c1, c2 FROM t1 UNION SELECT c1, c2 FROM t1)"
);
run
(
"SELECT * FROM (SELECT c1, c2 FROM t1 UNION SELECT c1, c2 FROM t1)"
);
}
}
TEST_F
(
PlanSetOpTest
,
bug001
)
{
useDb
(
"root"
,
"test"
);
run
(
"SELECT c2 FROM t1 WHERE c1 IS NOT NULL GROUP BY c2 "
"UNION "
"SELECT 'abcdefghijklmnopqrstuvwxyz' FROM t1 "
"WHERE 'abcdefghijklmnopqrstuvwxyz' IS NOT NULL GROUP BY 'abcdefghijklmnopqrstuvwxyz'"
);
}
source/libs/planner/test/planSubqueryTest.cpp
浏览文件 @
e00a9fa9
...
@@ -23,9 +23,7 @@ class PlanSubqeuryTest : public PlannerTestBase {};
...
@@ -23,9 +23,7 @@ class PlanSubqeuryTest : public PlannerTestBase {};
TEST_F
(
PlanSubqeuryTest
,
basic
)
{
TEST_F
(
PlanSubqeuryTest
,
basic
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
if
(
0
==
g_skipSql
)
{
run
(
"SELECT * FROM (SELECT * FROM t1)"
);
run
(
"SELECT * FROM (SELECT * FROM t1)"
);
}
run
(
"SELECT LAST(c1) FROM (SELECT * FROM t1)"
);
run
(
"SELECT LAST(c1) FROM (SELECT * FROM t1)"
);
}
}
...
...
source/libs/planner/test/planTestMain.cpp
浏览文件 @
e00a9fa9
...
@@ -35,18 +35,19 @@ class PlannerEnv : public testing::Environment {
...
@@ -35,18 +35,19 @@ class PlannerEnv : public testing::Environment {
private:
private:
void
initLog
(
const
char
*
path
)
{
void
initLog
(
const
char
*
path
)
{
dDebugFlag
=
143
;
int32_t
logLevel
=
getLogLevel
();
vDebugFlag
=
0
;
dDebugFlag
=
logLevel
;
mDebugFlag
=
143
;
vDebugFlag
=
logLevel
;
cDebugFlag
=
0
;
mDebugFlag
=
logLevel
;
jniDebugFlag
=
0
;
cDebugFlag
=
logLevel
;
tmrDebugFlag
=
135
;
jniDebugFlag
=
logLevel
;
uDebugFlag
=
135
;
tmrDebugFlag
=
logLevel
;
rpcDebugFlag
=
143
;
uDebugFlag
=
logLevel
;
qDebugFlag
=
143
;
rpcDebugFlag
=
logLevel
;
wDebugFlag
=
0
;
qDebugFlag
=
logLevel
;
sDebugFlag
=
0
;
wDebugFlag
=
logLevel
;
tsdbDebugFlag
=
0
;
sDebugFlag
=
logLevel
;
tsdbDebugFlag
=
logLevel
;
tsLogEmbedded
=
1
;
tsLogEmbedded
=
1
;
tsAsyncLog
=
0
;
tsAsyncLog
=
0
;
...
@@ -60,17 +61,26 @@ class PlannerEnv : public testing::Environment {
...
@@ -60,17 +61,26 @@ class PlannerEnv : public testing::Environment {
};
};
static
void
parseArg
(
int
argc
,
char
*
argv
[])
{
static
void
parseArg
(
int
argc
,
char
*
argv
[])
{
int
opt
=
0
;
int
opt
=
0
;
const
char
*
optstring
=
""
;
const
char
*
optstring
=
""
;
// clang-format off
static
struct
option
long_options
[]
=
{
static
struct
option
long_options
[]
=
{
{
"dump"
,
optional_argument
,
NULL
,
'd'
},
{
"skipSql"
,
optional_argument
,
NULL
,
's'
},
{
0
,
0
,
0
,
0
}};
{
"dump"
,
optional_argument
,
NULL
,
'd'
},
{
"skipSql"
,
required_argument
,
NULL
,
's'
},
{
"log"
,
required_argument
,
NULL
,
'l'
},
{
0
,
0
,
0
,
0
}
};
// clang-format on
while
((
opt
=
getopt_long
(
argc
,
argv
,
optstring
,
long_options
,
NULL
))
!=
-
1
)
{
while
((
opt
=
getopt_long
(
argc
,
argv
,
optstring
,
long_options
,
NULL
))
!=
-
1
)
{
switch
(
opt
)
{
switch
(
opt
)
{
case
'd'
:
case
'd'
:
setDumpModule
(
optarg
);
setDumpModule
(
optarg
);
break
;
break
;
case
's'
:
case
's'
:
g_skipSql
=
1
;
setSkipSqlNum
(
optarg
);
break
;
case
'l'
:
setLogLevel
(
optarg
);
break
;
break
;
default:
default:
break
;
break
;
...
...
source/libs/planner/test/planTestUtil.cpp
浏览文件 @
e00a9fa9
...
@@ -48,6 +48,7 @@ enum DumpModule {
...
@@ -48,6 +48,7 @@ enum DumpModule {
DumpModule
g_dumpModule
=
DUMP_MODULE_NOTHING
;
DumpModule
g_dumpModule
=
DUMP_MODULE_NOTHING
;
int32_t
g_skipSql
=
0
;
int32_t
g_skipSql
=
0
;
int32_t
g_logLevel
=
131
;
void
setDumpModule
(
const
char
*
pModule
)
{
void
setDumpModule
(
const
char
*
pModule
)
{
if
(
NULL
==
pModule
)
{
if
(
NULL
==
pModule
)
{
...
@@ -71,14 +72,26 @@ void setDumpModule(const char* pModule) {
...
@@ -71,14 +72,26 @@ void setDumpModule(const char* pModule) {
}
}
}
}
void
setSkipSqlNum
(
const
char
*
pNum
)
{
g_skipSql
=
stoi
(
optarg
);
}
void
setLogLevel
(
const
char
*
pLogLevel
)
{
g_logLevel
=
stoi
(
pLogLevel
);
}
int32_t
getLogLevel
()
{
return
g_logLevel
;
}
class
PlannerTestBaseImpl
{
class
PlannerTestBaseImpl
{
public:
public:
void
useDb
(
const
string
&
acctId
,
const
string
&
db
)
{
void
useDb
(
const
string
&
acctId
,
const
string
&
db
)
{
caseEnv_
.
acctId_
=
acctId
;
caseEnv_
.
acctId_
=
acctId
;
caseEnv_
.
db_
=
db
;
caseEnv_
.
db_
=
db
;
caseEnv_
.
nsql_
=
g_skipSql
;
}
}
void
run
(
const
string
&
sql
)
{
void
run
(
const
string
&
sql
)
{
if
(
caseEnv_
.
nsql_
>
0
)
{
--
(
caseEnv_
.
nsql_
);
return
;
}
reset
();
reset
();
try
{
try
{
SQuery
*
pQuery
=
nullptr
;
SQuery
*
pQuery
=
nullptr
;
...
@@ -109,6 +122,10 @@ class PlannerTestBaseImpl {
...
@@ -109,6 +122,10 @@ class PlannerTestBaseImpl {
}
}
void
prepare
(
const
string
&
sql
)
{
void
prepare
(
const
string
&
sql
)
{
if
(
caseEnv_
.
nsql_
>
0
)
{
return
;
}
reset
();
reset
();
try
{
try
{
doParseSql
(
sql
,
&
stmtEnv_
.
pQuery_
,
true
);
doParseSql
(
sql
,
&
stmtEnv_
.
pQuery_
,
true
);
...
@@ -119,6 +136,10 @@ class PlannerTestBaseImpl {
...
@@ -119,6 +136,10 @@ class PlannerTestBaseImpl {
}
}
void
bindParams
(
TAOS_MULTI_BIND
*
pParams
,
int32_t
colIdx
)
{
void
bindParams
(
TAOS_MULTI_BIND
*
pParams
,
int32_t
colIdx
)
{
if
(
caseEnv_
.
nsql_
>
0
)
{
return
;
}
try
{
try
{
doBindParams
(
stmtEnv_
.
pQuery_
,
pParams
,
colIdx
);
doBindParams
(
stmtEnv_
.
pQuery_
,
pParams
,
colIdx
);
}
catch
(...)
{
}
catch
(...)
{
...
@@ -128,6 +149,11 @@ class PlannerTestBaseImpl {
...
@@ -128,6 +149,11 @@ class PlannerTestBaseImpl {
}
}
void
exec
()
{
void
exec
()
{
if
(
caseEnv_
.
nsql_
>
0
)
{
--
(
caseEnv_
.
nsql_
);
return
;
}
try
{
try
{
doParseBoundSql
(
stmtEnv_
.
pQuery_
);
doParseBoundSql
(
stmtEnv_
.
pQuery_
);
...
@@ -157,8 +183,9 @@ class PlannerTestBaseImpl {
...
@@ -157,8 +183,9 @@ class PlannerTestBaseImpl {
private:
private:
struct
caseEnv
{
struct
caseEnv
{
string
acctId_
;
string
acctId_
;
string
db_
;
string
db_
;
int32_t
nsql_
;
};
};
struct
stmtEnv
{
struct
stmtEnv
{
...
...
source/libs/planner/test/planTestUtil.h
浏览文件 @
e00a9fa9
...
@@ -37,8 +37,9 @@ class PlannerTestBase : public testing::Test {
...
@@ -37,8 +37,9 @@ class PlannerTestBase : public testing::Test {
std
::
unique_ptr
<
PlannerTestBaseImpl
>
impl_
;
std
::
unique_ptr
<
PlannerTestBaseImpl
>
impl_
;
};
};
extern
int32_t
g_skipSql
;
extern
void
setDumpModule
(
const
char
*
pModule
);
extern
void
setSkipSqlNum
(
const
char
*
pNum
);
extern
void
setDumpModule
(
const
char
*
pModule
);
extern
void
setLogLevel
(
const
char
*
pLogLevel
);
extern
int32_t
getLogLevel
();
#endif // PLAN_TEST_UTIL_H
#endif // PLAN_TEST_UTIL_H
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录