From 718d3204556a1bf6d09f577bf81a35b668be406e Mon Sep 17 00:00:00 2001 From: freemine Date: Mon, 23 Dec 2024 14:00:04 +0800 Subject: [PATCH 01/30] 1. make lemon warning as error, so that no syntax conflicts in sql.y exists 2. resolving joined_table syntax conflicts --- source/libs/parser/CMakeLists.txt | 2 +- source/libs/parser/inc/sql.y | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/libs/parser/CMakeLists.txt b/source/libs/parser/CMakeLists.txt index bd2dd95ee0..088cdc4368 100644 --- a/source/libs/parser/CMakeLists.txt +++ b/source/libs/parser/CMakeLists.txt @@ -7,7 +7,7 @@ ENDIF() add_custom_command( OUTPUT ${TD_SOURCE_DIR}/source/libs/parser/src/sql.c ${TD_SOURCE_DIR}/include/common/ttokenauto.h COMMAND echo "Running lemon process in ${TD_SOURCE_DIR}/source/libs/parser/inc" - COMMAND ${TD_CONTRIB_DIR}/lemon/lemon sql.y || true + COMMAND ${TD_CONTRIB_DIR}/lemon/lemon sql.y COMMAND echo "copy sql.c from ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.c to ${TD_SOURCE_DIR}/source/libs/parser/src/" COMMAND mv ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.c ${TD_SOURCE_DIR}/source/libs/parser/src/sql.c COMMAND mv ${TD_SOURCE_DIR}/source/libs/parser/inc/sql.h ${TD_SOURCE_DIR}/include/common/ttokenauto.h diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 63eb09d509..c1136e8280 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1446,7 +1446,7 @@ parenthesized_joined_table(A) ::= NK_LP parenthesized_joined_table(B) NK_RP. /************************************************ joined_table ********************************************************/ joined_table(A) ::= - table_reference(B) join_type(C) join_subtype(D) JOIN table_reference(E) join_on_clause_opt(F) + table_reference(B) join_type(C) join_subtype(D) JOIN table_primary(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { A = createJoinTableNode(pCxt, C, D, B, E, F); A = addWindowOffsetClause(pCxt, A, G); From 3ac6ed61b524a83a92a6753a80e9f829d18e4f8e Mon Sep 17 00:00:00 2001 From: freemine Date: Thu, 26 Dec 2024 13:23:47 +0800 Subject: [PATCH 02/30] adjust joined_table grammar to make it forward-compatible --- source/libs/parser/inc/sql.y | 148 +++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 25 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index c1136e8280..786c1fd92a 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -24,6 +24,14 @@ #include "parAst.h" #define YYSTACKDEPTH 0 + +#define JOINED_TABLE_MK(jt, st, A, B, E, F, G, H) \ + { \ + A = createJoinTableNode(pCxt, jt, st, B, E, F); \ + A = addWindowOffsetClause(pCxt, A, G); \ + A = addJLimitClause(pCxt, A, H); \ + } + } %syntax_error { @@ -46,6 +54,8 @@ %left NK_STAR NK_SLASH NK_REM. %left NK_CONCAT. +%right INNER LEFT RIGHT FULL OUTER SEMI ANTI ASOF WINDOW JOIN ON WINDOW_OFFSET JLIMIT. + /************************************************ create/alter account *****************************************/ cmd ::= CREATE ACCOUNT NK_ID PASS NK_STRING account_options. { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } cmd ::= ALTER ACCOUNT NK_ID alter_account_options. { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } @@ -1445,35 +1455,123 @@ parenthesized_joined_table(A) ::= NK_LP joined_table(B) NK_RP. parenthesized_joined_table(A) ::= NK_LP parenthesized_joined_table(B) NK_RP. { A = B; } /************************************************ joined_table ********************************************************/ -joined_table(A) ::= - table_reference(B) join_type(C) join_subtype(D) JOIN table_primary(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { - A = createJoinTableNode(pCxt, C, D, B, E, F); - A = addWindowOffsetClause(pCxt, A, G); - A = addJLimitClause(pCxt, A, H); - } +joined_table(A) ::= inner_joined(B). { A = B; } +joined_table(A) ::= outer_joined(B). { A = B; } +joined_table(A) ::= semi_joined(B). { A = B; } +joined_table(A) ::= anti_joined(B). { A = B; } +joined_table(A) ::= asof_joined(B). { A = B; } +joined_table(A) ::= win_joined(B). { A = B; } -%type join_type { EJoinType } -%destructor join_type { } -join_type(A) ::= . { A = JOIN_TYPE_INNER; } -join_type(A) ::= INNER. { A = JOIN_TYPE_INNER; } -join_type(A) ::= LEFT. { A = JOIN_TYPE_LEFT; } -join_type(A) ::= RIGHT. { A = JOIN_TYPE_RIGHT; } -join_type(A) ::= FULL. { A = JOIN_TYPE_FULL; } +/************************************************ inner join **********************************************************/ +inner_joined(A) ::= + table_reference(B) JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, G, H); } -%type join_subtype { EJoinSubType } -%destructor join_subtype { } -join_subtype(A) ::= . { A = JOIN_STYPE_NONE; } -join_subtype(A) ::= OUTER. { A = JOIN_STYPE_OUTER; } -join_subtype(A) ::= SEMI. { A = JOIN_STYPE_SEMI; } -join_subtype(A) ::= ANTI. { A = JOIN_STYPE_ANTI; } -join_subtype(A) ::= ASOF. { A = JOIN_STYPE_ASOF; } -join_subtype(A) ::= WINDOW. { A = JOIN_STYPE_WIN; } +inner_joined(A) ::= + table_reference(B) INNER JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, G, H); } -join_on_clause_opt(A) ::= . { A = NULL; } +inner_joined(A) ::= + table_reference(B) LEFT JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_NONE, A, B, E, F, G, H); } + +inner_joined(A) ::= + table_reference(B) RIGHT JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_NONE, A, B, E, F, G, H); } + +inner_joined(A) ::= + table_reference(B) FULL JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_NONE, A, B, E, F, G, H); } + +/************************************************ outer join **********************************************************/ +outer_joined(A) ::= + table_reference(B) OUTER JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + +outer_joined(A) ::= + table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + +outer_joined(A) ::= + table_reference(B) RIGHT OUTER JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + +outer_joined(A) ::= + table_reference(B) FULL OUTER JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + +/************************************************ semi join ***********************************************************/ +semi_joined(A) ::= + table_reference(B) SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + +semi_joined(A) ::= + table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + +semi_joined(A) ::= + table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + +semi_joined(A) ::= + table_reference(B) FULL SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + +/************************************************ ansi join ***********************************************************/ +anti_joined(A) ::= + table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + +anti_joined(A) ::= + table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + +anti_joined(A) ::= + table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + +anti_joined(A) ::= + table_reference(B) FULL ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + +/************************************************ asof join ***********************************************************/ +asof_joined(A) ::= + table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + +asof_joined(A) ::= + table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + +asof_joined(A) ::= + table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + +asof_joined(A) ::= + table_reference(B) FULL ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + +/************************************************ window join *********************************************************/ +win_joined(A) ::= + table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } + +win_joined(A) ::= + table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } + +win_joined(A) ::= + table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } + +win_joined(A) ::= + table_reference(B) FULL WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_WIN, A, B, E, F, G, H); } + +join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= ON search_condition(B). { A = B; } -window_offset_clause_opt(A) ::= . { A = NULL; } +window_offset_clause_opt(A) ::= . [WINDOW_OFFSET] { A = NULL; } window_offset_clause_opt(A) ::= WINDOW_OFFSET NK_LP window_offset_literal(B) NK_COMMA window_offset_literal(C) NK_RP. { A = createWindowOffsetNode(pCxt, releaseRawExprNode(pCxt, B), releaseRawExprNode(pCxt, C)); } @@ -1484,7 +1582,7 @@ window_offset_literal(A) ::= NK_MINUS(B) NK_VARIABLE(C). A = createRawExprNode(pCxt, &t, createTimeOffsetValueNode(pCxt, &t)); } -jlimit_clause_opt(A) ::= . { A = NULL; } +jlimit_clause_opt(A) ::= . [JLIMIT] { A = NULL; } jlimit_clause_opt(A) ::= JLIMIT NK_INTEGER(B). { A = createLimitNode(pCxt, &B, NULL); } /************************************************ query_specification *************************************************/ From 7d07455bdcfc271e2fa84b7ecf4ec2ac4630cc8f Mon Sep 17 00:00:00 2001 From: freemine Date: Thu, 26 Dec 2024 17:26:06 +0800 Subject: [PATCH 03/30] remove ASOF JOIN and FULL ASOF JOIN --- source/libs/parser/inc/sql.y | 8 -------- 1 file changed, 8 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 786c1fd92a..7cb9c19cff 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1535,10 +1535,6 @@ anti_joined(A) ::= window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } /************************************************ asof join ***********************************************************/ -asof_joined(A) ::= - table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } - asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } @@ -1547,10 +1543,6 @@ asof_joined(A) ::= table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } -asof_joined(A) ::= - table_reference(B) FULL ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ASOF, A, B, E, F, G, H); } - /************************************************ window join *********************************************************/ win_joined(A) ::= table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) From 664d5ba180c366d1dc6a3005e59cd5936cee9844 Mon Sep 17 00:00:00 2001 From: freemine Date: Thu, 26 Dec 2024 21:10:22 +0800 Subject: [PATCH 04/30] remove WINDOW JOIN --- source/libs/parser/inc/sql.y | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 7cb9c19cff..009e9cbaab 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1544,10 +1544,6 @@ asof_joined(A) ::= window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } /************************************************ window join *********************************************************/ -win_joined(A) ::= - table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } - win_joined(A) ::= table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } From 9811636ec1bf9914540b02b2e73ea10dbea88d71 Mon Sep 17 00:00:00 2001 From: freemine Date: Thu, 26 Dec 2024 23:13:35 +0800 Subject: [PATCH 05/30] remove FULL [SEMI|ANTI|WINDOW] JOIN --- source/libs/parser/inc/sql.y | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 009e9cbaab..765962d0c8 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1513,10 +1513,6 @@ semi_joined(A) ::= table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } -semi_joined(A) ::= - table_reference(B) FULL SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_SEMI, A, B, E, F, G, H); } - /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) @@ -1530,10 +1526,6 @@ anti_joined(A) ::= table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } -anti_joined(A) ::= - table_reference(B) FULL ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } - /************************************************ asof join ***********************************************************/ asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) @@ -1552,10 +1544,6 @@ win_joined(A) ::= table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } -win_joined(A) ::= - table_reference(B) FULL WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_WIN, A, B, E, F, G, H); } - join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= ON search_condition(B). { A = B; } From 4acf170690df4830ff9c2f17586506b9dcbf0e24 Mon Sep 17 00:00:00 2001 From: freemine Date: Mon, 30 Dec 2024 19:30:43 +0800 Subject: [PATCH 06/30] remove LEFT as default for non-inner-joins --- source/libs/parser/inc/sql.y | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index c37494b298..172a5a95de 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1482,7 +1482,7 @@ inner_joined(A) ::= /************************************************ outer join **********************************************************/ outer_joined(A) ::= table_reference(B) OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_OUTER, A, B, E, F, G, H); } outer_joined(A) ::= table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F) @@ -1499,7 +1499,7 @@ outer_joined(A) ::= /************************************************ semi join ***********************************************************/ semi_joined(A) ::= table_reference(B) SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_SEMI, A, B, E, F, G, H); } semi_joined(A) ::= table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F) @@ -1512,7 +1512,7 @@ semi_joined(A) ::= /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_ANTI, A, B, E, F, G, H); } anti_joined(A) ::= table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F) @@ -1523,6 +1523,10 @@ anti_joined(A) ::= window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } /************************************************ asof join ***********************************************************/ +asof_joined(A) ::= + table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } @@ -1532,6 +1536,10 @@ asof_joined(A) ::= window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } /************************************************ window join *********************************************************/ +win_joined(A) ::= + table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_WIN, A, B, E, F, G, H); } + win_joined(A) ::= table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } From 12efc52af3c4477dff3f40259f29d829b90a864b Mon Sep 17 00:00:00 2001 From: freemine Date: Mon, 30 Dec 2024 20:15:33 +0800 Subject: [PATCH 07/30] typo: JOIN_TYPE_NONE -> JOIN_TYPE_INNER --- source/libs/parser/inc/sql.y | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 172a5a95de..08ec22b420 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1482,7 +1482,7 @@ inner_joined(A) ::= /************************************************ outer join **********************************************************/ outer_joined(A) ::= table_reference(B) OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_OUTER, A, B, E, F, G, H); } outer_joined(A) ::= table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F) @@ -1499,7 +1499,7 @@ outer_joined(A) ::= /************************************************ semi join ***********************************************************/ semi_joined(A) ::= table_reference(B) SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_SEMI, A, B, E, F, G, H); } semi_joined(A) ::= table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F) @@ -1512,7 +1512,7 @@ semi_joined(A) ::= /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ANTI, A, B, E, F, G, H); } anti_joined(A) ::= table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F) @@ -1525,7 +1525,7 @@ anti_joined(A) ::= /************************************************ asof join ***********************************************************/ asof_joined(A) ::= table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ASOF, A, B, E, F, G, H); } asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) @@ -1538,7 +1538,7 @@ asof_joined(A) ::= /************************************************ window join *********************************************************/ win_joined(A) ::= table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_NONE, JOIN_STYPE_WIN, A, B, E, F, G, H); } + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_WIN, A, B, E, F, G, H); } win_joined(A) ::= table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) From 26ba35c8837118b80f9f34e0b110fbbee52b946a Mon Sep 17 00:00:00 2001 From: freemine Date: Tue, 31 Dec 2024 07:37:55 +0800 Subject: [PATCH 08/30] re-enable FULL at sql grammar level --- source/libs/parser/inc/sql.y | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 08ec22b420..2a29b5299c 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1509,6 +1509,10 @@ semi_joined(A) ::= table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } +semi_joined(A) ::= + table_reference(B) FULL SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) @@ -1522,6 +1526,10 @@ anti_joined(A) ::= table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } +anti_joined(A) ::= + table_reference(B) FULL ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + /************************************************ asof join ***********************************************************/ asof_joined(A) ::= table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) @@ -1535,6 +1543,10 @@ asof_joined(A) ::= table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } +asof_joined(A) ::= + table_reference(B) FULL ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + /************************************************ window join *********************************************************/ win_joined(A) ::= table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) @@ -1548,6 +1560,10 @@ win_joined(A) ::= table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } +win_joined(A) ::= + table_reference(B) FULL WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_WIN, A, B, E, F, G, H); } + join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= ON search_condition(B). { A = B; } From 3d9b243f85306da3a542887ee5a96ff0f944bc1a Mon Sep 17 00:00:00 2001 From: freemine Date: Tue, 31 Dec 2024 15:17:56 +0800 Subject: [PATCH 09/30] revert: only [LEFT|RIGHT] is allowed for non-inner-join --- source/libs/parser/inc/sql.y | 40 ------------------------------- tests/system-test/2-query/join.py | 10 -------- 2 files changed, 50 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 2a29b5299c..907c8afd9f 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1480,10 +1480,6 @@ inner_joined(A) ::= window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_NONE, A, B, E, F, G, H); } /************************************************ outer join **********************************************************/ -outer_joined(A) ::= - table_reference(B) OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_OUTER, A, B, E, F, G, H); } - outer_joined(A) ::= table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } @@ -1492,15 +1488,7 @@ outer_joined(A) ::= table_reference(B) RIGHT OUTER JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } -outer_joined(A) ::= - table_reference(B) FULL OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_OUTER, A, B, E, F, G, H); } - /************************************************ semi join ***********************************************************/ -semi_joined(A) ::= - table_reference(B) SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_SEMI, A, B, E, F, G, H); } - semi_joined(A) ::= table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } @@ -1509,15 +1497,7 @@ semi_joined(A) ::= table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } -semi_joined(A) ::= - table_reference(B) FULL SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_SEMI, A, B, E, F, G, H); } - /************************************************ ansi join ***********************************************************/ -anti_joined(A) ::= - table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ANTI, A, B, E, F, G, H); } - anti_joined(A) ::= table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } @@ -1526,15 +1506,7 @@ anti_joined(A) ::= table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } -anti_joined(A) ::= - table_reference(B) FULL ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } - /************************************************ asof join ***********************************************************/ -asof_joined(A) ::= - table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ASOF, A, B, E, F, G, H); } - asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } @@ -1543,15 +1515,7 @@ asof_joined(A) ::= table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } -asof_joined(A) ::= - table_reference(B) FULL ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ASOF, A, B, E, F, G, H); } - /************************************************ window join *********************************************************/ -win_joined(A) ::= - table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_WIN, A, B, E, F, G, H); } - win_joined(A) ::= table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } @@ -1560,10 +1524,6 @@ win_joined(A) ::= table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } -win_joined(A) ::= - table_reference(B) FULL WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_WIN, A, B, E, F, G, H); } - join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= ON search_condition(B). { A = B; } diff --git a/tests/system-test/2-query/join.py b/tests/system-test/2-query/join.py index be741ab959..9814091ab3 100644 --- a/tests/system-test/2-query/join.py +++ b/tests/system-test/2-query/join.py @@ -356,11 +356,6 @@ class TDTestCase: def join_semantic_test(self, dbname=DBNAME): tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) - tdSql.error("select ct1.c_int from db.ct1 as ct1 semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) @@ -390,12 +385,7 @@ class TDTestCase: tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) - tdSql.error("select ct1.c_int from db.ct1 as ct1 full semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 full anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.query("select ct1.c_int from db.ct1 as ct1 full outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) tdSql.checkRows(self.rows) - tdSql.error("select ct1.c_int from db.ct1 as ct1 full asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) - tdSql.error("select ct1.c_int from db.ct1 as ct1 full window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts join db1.ct1 as cy2 on ct1.ts=cy2.ts") From 226701ad1473abdc4258119fd6b71ebdcc366181 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 31 Dec 2024 16:48:23 +0800 Subject: [PATCH 10/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- include/common/tcommon.h | 4 + include/util/taoserror.h | 1 + source/client/src/clientRawBlockWrite.c | 1 + source/client/src/clientTmq.c | 169 ++++++++++-------------- source/dnode/vnode/src/inc/tq.h | 8 +- source/dnode/vnode/src/tq/tqScan.c | 109 +++++++-------- source/dnode/vnode/src/tq/tqUtil.c | 6 +- source/util/src/terror.c | 1 + utils/test/c/tmq_td32526.c | 1 + 9 files changed, 131 insertions(+), 169 deletions(-) diff --git a/include/common/tcommon.h b/include/common/tcommon.h index 61cd482c70..0450766535 100644 --- a/include/common/tcommon.h +++ b/include/common/tcommon.h @@ -123,6 +123,10 @@ enum { TMQ_MSG_TYPE__POLL_BATCH_META_RSP, }; +static char* tmqMsgTypeStr[] = { + "data", "meta", "ask ep", "meta data", "wal info", "batch meta" +}; + enum { STREAM_INPUT__DATA_SUBMIT = 1, STREAM_INPUT__DATA_BLOCK, diff --git a/include/util/taoserror.h b/include/util/taoserror.h index e317fdd65a..3e2bb0080d 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -1013,6 +1013,7 @@ int32_t taosGetErrSize(); #define TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT TAOS_DEF_ERROR_CODE(0, 0x4014) #define TSDB_CODE_TMQ_NO_TABLE_QUALIFIED TAOS_DEF_ERROR_CODE(0, 0x4015) #define TSDB_CODE_TMQ_NO_NEED_REBALANCE TAOS_DEF_ERROR_CODE(0, 0x4016) +#define TSDB_CODE_TMQ_INVALID_STATUS TAOS_DEF_ERROR_CODE(0, 0x4017) // stream #define TSDB_CODE_STREAM_TASK_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x4100) diff --git a/source/client/src/clientRawBlockWrite.c b/source/client/src/clientRawBlockWrite.c index 613645c4cd..178ab6b253 100644 --- a/source/client/src/clientRawBlockWrite.c +++ b/source/client/src/clientRawBlockWrite.c @@ -2572,6 +2572,7 @@ int32_t tmq_write_raw(TAOS* taos, tmq_raw_data raw) { SET_ERROR_MSG("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); return TSDB_CODE_INVALID_PARA; } + SET_ERROR_MSG(""); // clear global error message return writeRawImpl(taos, raw.raw, raw.raw_len, raw.raw_type); } diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 0cbdfc13e0..7b1365fe82 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -1388,49 +1388,32 @@ static int32_t askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) { if (pTmq == NULL) { return TSDB_CODE_INVALID_PARA; } + int32_t code = 0; + int32_t lino = 0; SMqAskEpReq req = {0}; req.consumerId = pTmq->consumerId; req.epoch = updateEpSet ? -1 : pTmq->epoch; tstrncpy(req.cgroup, pTmq->groupId, TSDB_CGROUP_LEN); - int code = 0; SMqAskEpCbParam* pParam = NULL; void* pReq = NULL; int32_t tlen = tSerializeSMqAskEpReq(NULL, 0, &req); - if (tlen < 0) { - tqErrorC("consumer:0x%" PRIx64 ", tSerializeSMqAskEpReq failed", pTmq->consumerId); - return TSDB_CODE_INVALID_PARA; - } - + TSDB_CHECK_CONDITION(tlen >= 0, code, lino, END, TSDB_CODE_INVALID_PARA); pReq = taosMemoryCalloc(1, tlen); - if (pReq == NULL) { - tqErrorC("consumer:0x%" PRIx64 ", failed to malloc askEpReq msg, size:%d", pTmq->consumerId, tlen); - return terrno; - } + TSDB_CHECK_NULL(pReq, code, lino, END, terrno); - if (tSerializeSMqAskEpReq(pReq, tlen, &req) < 0) { - tqErrorC("consumer:0x%" PRIx64 ", tSerializeSMqAskEpReq %d failed", pTmq->consumerId, tlen); - taosMemoryFree(pReq); - return TSDB_CODE_INVALID_PARA; - } + code = tSerializeSMqAskEpReq(pReq, tlen, &req); + TSDB_CHECK_CONDITION(code >= 0, code, lino, END, TSDB_CODE_INVALID_PARA); pParam = taosMemoryCalloc(1, sizeof(SMqAskEpCbParam)); - if (pParam == NULL) { - tqErrorC("consumer:0x%" PRIx64 ", failed to malloc subscribe param", pTmq->consumerId); - taosMemoryFree(pReq); - return terrno; - } + TSDB_CHECK_NULL(pParam, code, lino, END, terrno); pParam->refId = pTmq->refId; pParam->sync = sync; pParam->pParam = param; SMsgSendInfo* sendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo)); - if (sendInfo == NULL) { - taosMemoryFree(pReq); - taosMemoryFree(pParam); - return terrno; - } + TSDB_CHECK_NULL(sendInfo, code, lino, END, terrno); sendInfo->msgInfo = (SDataBuf){.pData = pReq, .len = tlen, .handle = NULL}; sendInfo->requestId = generateRequestId(); @@ -1440,28 +1423,36 @@ static int32_t askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) { sendInfo->fp = askEpCb; sendInfo->msgType = TDMT_MND_TMQ_ASK_EP; + pReq = NULL; + pParam = NULL; + SEpSet epSet = getEpSet_s(&pTmq->pTscObj->pAppInfo->mgmtEp); tqDebugC("consumer:0x%" PRIx64 " ask ep from mnode,QID:0x%" PRIx64, pTmq->consumerId, sendInfo->requestId); - return asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &epSet, NULL, sendInfo); + code = asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &epSet, NULL, sendInfo); + +END: + if (code != 0) { + tqErrorC("%s failed at %d, msg:%s", __func__, lino, tstrerror(code)); + } + taosMemoryFree(pReq); + taosMemoryFree(pParam); + return code; } -void tmqHandleAllDelayedTask(tmq_t* pTmq) { - if (pTmq == NULL) { - return; - } +static int32_t tmqHandleAllDelayedTask(tmq_t* pTmq) { STaosQall* qall = NULL; int32_t code = 0; code = taosAllocateQall(&qall); if (code) { tqErrorC("consumer:0x%" PRIx64 ", failed to allocate qall, code:%s", pTmq->consumerId, tstrerror(code)); - return; + return code; } int32_t numOfItems = taosReadAllQitems(pTmq->delayedTask, qall); if (numOfItems == 0) { taosFreeQall(qall); - return; + return 0; } tqDebugC("consumer:0x%" PRIx64 " handle delayed %d tasks before poll data", pTmq->consumerId, numOfItems); @@ -1472,7 +1463,6 @@ void tmqHandleAllDelayedTask(tmq_t* pTmq) { code = askEp(pTmq, NULL, false, false); if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", pTmq->consumerId, tstrerror(code)); - continue; } tqDebugC("consumer:0x%" PRIx64 " retrieve ep from mnode in 1s", pTmq->consumerId); bool ret = taosTmrReset(tmqAssignAskEpTask, DEFAULT_ASKEP_INTERVAL, (void*)(pTmq->refId), tmqMgmt.timer, @@ -1494,6 +1484,7 @@ void tmqHandleAllDelayedTask(tmq_t* pTmq) { } taosFreeQall(qall); + return 0; } void tmqClearUnhandleMsg(tmq_t* tmq) { @@ -2095,7 +2086,7 @@ void tmqBuildConsumeReqImpl(SMqPollReq* pReq, tmq_t* tmq, int64_t timeout, SMqCl (void)snprintf(pReq->subKey, TSDB_SUBSCRIBE_KEY_LEN, "%s%s%s", tmq->groupId, TMQ_SEPARATOR, pTopic->topicName); pReq->withTbName = tmq->withTbName; pReq->consumerId = tmq->consumerId; - pReq->timeout = timeout; + pReq->timeout = timeout < 0 ? INT32_MAX : timeout; pReq->epoch = tmq->epoch; pReq->reqOffset = pVg->offsetInfo.endOffset; pReq->head.vgId = pVg->vgId; @@ -2199,39 +2190,24 @@ static void tmqBuildRspFromWrapperInner(SMqPollRspWrapper* pWrapper, SMqClientVg } static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* pVg, int64_t timeout) { - if (pTmq == NULL || pTopic == NULL || pVg == NULL) { - return TSDB_CODE_INVALID_MSG; - } SMqPollReq req = {0}; char* msg = NULL; SMqPollCbParam* pParam = NULL; SMsgSendInfo* sendInfo = NULL; int code = 0; + int lino = 0; tmqBuildConsumeReqImpl(&req, pTmq, timeout, pTopic, pVg); int32_t msgSize = tSerializeSMqPollReq(NULL, 0, &req); - if (msgSize < 0) { - code = TSDB_CODE_INVALID_MSG; - return code; - } + TSDB_CHECK_CONDITION(msgSize >= 0, code, lino, END, TSDB_CODE_INVALID_MSG); msg = taosMemoryCalloc(1, msgSize); - if (NULL == msg) { - return terrno; - } + TSDB_CHECK_NULL(msg, code, lino, END, terrno); - if (tSerializeSMqPollReq(msg, msgSize, &req) < 0) { - code = TSDB_CODE_INVALID_MSG; - taosMemoryFreeClear(msg); - return code; - } + TSDB_CHECK_CONDITION(tSerializeSMqPollReq(msg, msgSize, &req) >= 0, code, lino, END, TSDB_CODE_INVALID_MSG); pParam = taosMemoryMalloc(sizeof(SMqPollCbParam)); - if (pParam == NULL) { - code = terrno; - taosMemoryFreeClear(msg); - return code; - } + TSDB_CHECK_NULL(pParam, code, lino, END, terrno); pParam->refId = pTmq->refId; tstrncpy(pParam->topicName, pTopic->topicName, TSDB_TOPIC_FNAME_LEN); @@ -2239,11 +2215,7 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p pParam->requestId = req.reqId; sendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo)); - if (sendInfo == NULL) { - taosMemoryFreeClear(pParam); - taosMemoryFreeClear(msg); - return terrno; - } + TSDB_CHECK_NULL(sendInfo, code, lino, END, terrno); sendInfo->msgInfo = (SDataBuf){.pData = msg, .len = msgSize, .handle = NULL}; sendInfo->requestId = req.reqId; @@ -2253,23 +2225,29 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p sendInfo->fp = tmqPollCb; sendInfo->msgType = TDMT_VND_TMQ_CONSUME; + msg = NULL; + pParam = NULL; + char offsetFormatBuf[TSDB_OFFSET_LEN] = {0}; tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pVg->offsetInfo.endOffset); code = asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &pVg->epSet, NULL, sendInfo); tqDebugC("consumer:0x%" PRIx64 " send poll to %s vgId:%d, code:%d, epoch %d, req:%s,QID:0x%" PRIx64, pTmq->consumerId, pTopic->topicName, pVg->vgId, code, pTmq->epoch, offsetFormatBuf, req.reqId); - if (code != 0) { - return code; - } + TSDB_CHECK_CODE(code, lino, END); pVg->pollCnt++; pVg->seekUpdated = false; // reset this flag. pTmq->pollCnt++; - return 0; +END: + if (code != 0){ + tqErrorC("%s failed at %d msg:%s", __func__, lino, tstrerror(code)); + } + taosMemoryFreeClear(pParam); + taosMemoryFreeClear(msg); + return code; } -// broadcast the poll request to all related vnodes static int32_t tmqPollImpl(tmq_t* tmq, int64_t timeout) { if (tmq == NULL) { return TSDB_CODE_INVALID_MSG; @@ -2377,22 +2355,23 @@ static SMqRspObj* buildRsp(SMqPollRspWrapper* pollRspWrapper){ return pRspObj; } -static void processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ - if (tmq == NULL || pRspWrapper == NULL) { - return; - } +static int32_t processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ SMqPollRspWrapper* pollRspWrapper = &pRspWrapper->pollRsp; if (pRspWrapper->code == TSDB_CODE_VND_INVALID_VGROUP_ID) { // for vnode transform int32_t code = askEp(tmq, NULL, false, true); if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", tmq->consumerId, tstrerror(code)); + return code; } } else if (pRspWrapper->code == TSDB_CODE_TMQ_CONSUMER_MISMATCH) { int32_t code = askEp(tmq, NULL, false, false); if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", tmq->consumerId, tstrerror(code)); + return code; } + } else{ + return pRspWrapper->code; } tqInfoC("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since %s", tmq->consumerId, pollRspWrapper->vgId, tstrerror(pRspWrapper->code)); @@ -2404,11 +2383,9 @@ static void processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ atomic_store_32(&pVg->vgStatus, TMQ_VG_STATUS__IDLE); } taosWUnLockLatch(&tmq->lock); + return TSDB_CODE_SUCCESS; } static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ - if (tmq == NULL || pRspWrapper == NULL) { - return NULL; - } SMqRspObj* pRspObj = NULL; if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { @@ -2425,6 +2402,7 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ if(pVg == NULL) { tqErrorC("consumer:0x%" PRIx64 " get vg or topic error, topic:%s vgId:%d", tmq->consumerId, pollRspWrapper->topicName, pollRspWrapper->vgId); + terrno = TSDB_CODE_TMQ_INVALID_VGID; goto END; } pollRspWrapper->topicHandle = getTopicInfo(tmq, pollRspWrapper->topicName); @@ -2487,10 +2465,7 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ return pRspObj; } -static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { - if (tmq == NULL) { - return NULL; - } +static void* tmqHandleAllRsp(tmq_t* tmq) { tqDebugC("consumer:0x%" PRIx64 " start to handle the rsp, total:%d", tmq->consumerId, taosQallItemSize(tmq->qall)); void* returnVal = NULL; @@ -2505,15 +2480,15 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { } } - tqDebugC("consumer:0x%" PRIx64 " handle rsp, type:%d", tmq->consumerId, pRspWrapper->tmqRspType); + tqDebugC("consumer:0x%" PRIx64 " handle rsp, type:%s", tmq->consumerId, tmqMsgTypeStr[pRspWrapper->tmqRspType]); if (pRspWrapper->code != 0) { - processMqRspError(tmq, pRspWrapper); + terrno = processMqRspError(tmq, pRspWrapper); }else{ returnVal = processMqRsp(tmq, pRspWrapper); } tmqFreeRspWrapper(pRspWrapper); taosFreeQitem(pRspWrapper); - if(returnVal != NULL){ + if(returnVal != NULL || terrno != 0){ break; } } @@ -2522,49 +2497,47 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { } TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { - if (tmq == NULL) return NULL; + int32_t lino = 0; + terrno = TSDB_CODE_SUCCESS; + TSDB_CHECK_NULL(tmq, terrno, lino, END, TSDB_CODE_INVALID_PARA); void* rspObj = NULL; int64_t startTime = taosGetTimestampMs(); - tqDebugC("consumer:0x%" PRIx64 " start to poll at %" PRId64 ", timeout:%" PRId64, tmq->consumerId, startTime, - timeout); - - // in no topic status, delayed task also need to be processed - if (atomic_load_8(&tmq->status) == TMQ_CONSUMER_STATUS__INIT) { - tqInfoC("consumer:0x%" PRIx64 " poll return since consumer is init", tmq->consumerId); - taosMsleep(500); // sleep for a while - return NULL; - } + tqDebugC("consumer:0x%" PRIx64 " start to poll at %" PRId64 ", timeout:%" PRId64, tmq->consumerId, startTime, timeout); + TSDB_CHECK_CONDITION(atomic_load_8(&tmq->status) != TMQ_CONSUMER_STATUS__INIT, terrno, lino, END, TSDB_CODE_TMQ_INVALID_STATUS); (void)atomic_val_compare_exchange_8(&tmq->pollFlag, 0, 1); while (1) { - tmqHandleAllDelayedTask(tmq); + terrno = tmqHandleAllDelayedTask(tmq); + TSDB_CHECK_CODE(terrno, lino, END); - if (tmqPollImpl(tmq, timeout) < 0) { - tqErrorC("consumer:0x%" PRIx64 " return due to poll error", tmq->consumerId); - } + terrno = tmqPollImpl(tmq, timeout); + TSDB_CHECK_CODE(terrno, lino, END); - rspObj = tmqHandleAllRsp(tmq, timeout); + rspObj = tmqHandleAllRsp(tmq); if (rspObj) { tqDebugC("consumer:0x%" PRIx64 " return rsp %p", tmq->consumerId, rspObj); return (TAOS_RES*)rspObj; } + TSDB_CHECK_CODE(terrno, lino, END); if (timeout >= 0) { int64_t currentTime = taosGetTimestampMs(); int64_t elapsedTime = currentTime - startTime; - if (elapsedTime > timeout || elapsedTime < 0) { - tqDebugC("consumer:0x%" PRIx64 " (epoch %d) timeout, no rsp, start time %" PRId64 ", current time %" PRId64, - tmq->consumerId, tmq->epoch, startTime, currentTime); - return NULL; - } + TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, terrno, lino, END, TSDB_CODE_TIMEOUT_ERROR); (void)tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { (void)tsem2_timewait(&tmq->rspSem, 1000); } } + +END: + if (tmq != NULL) { + tqErrorC("consumer:0x%" PRIx64 " poll error at line:%d, msg:%s", tmq->consumerId, lino, tstrerror(terrno)); + } + return NULL; } static void displayConsumeStatistics(tmq_t* pTmq) { diff --git a/source/dnode/vnode/src/inc/tq.h b/source/dnode/vnode/src/inc/tq.h index 28a0d11757..4340177035 100644 --- a/source/dnode/vnode/src/inc/tq.h +++ b/source/dnode/vnode/src/inc/tq.h @@ -112,13 +112,12 @@ int32_t tDecodeSTqHandle(SDecoder* pDecoder, STqHandle* pHandle); void tqDestroyTqHandle(void* data); // tqRead -int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBatchMetaRsp* pBatchMetaRsp, STqOffsetVal* offset); +int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBatchMetaRsp* pBatchMetaRsp, STqOffsetVal* offset, int64_t timeout); int32_t tqScanData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVal* pOffset, const SMqPollReq* pRequest); int32_t tqFetchLog(STQ* pTq, STqHandle* pHandle, int64_t* fetchOffset, uint64_t reqId); // tqExec int32_t tqTaosxScanLog(STQ* pTq, STqHandle* pHandle, SPackedData submit, SMqDataRsp* pRsp, int32_t* totalRows, int8_t sourceExcluded); -int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t numOfCols, int8_t precision); int32_t tqSendDataRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq* pReq, const SMqDataRsp* pRsp, int32_t type, int32_t vgId); void tqPushEmptyDataRsp(STqHandle* pHandle, int32_t vgId); @@ -176,8 +175,9 @@ int32_t tqExtractDropCtbDataBlock(const void* data, int32_t len, int64_t ver, vo } \ } while (0) -#define TQ_SUBSCRIBE_NAME "subscribe" -#define TQ_OFFSET_NAME "offset-ver0" +#define TQ_SUBSCRIBE_NAME "subscribe" +#define TQ_OFFSET_NAME "offset-ver0" +#define TQ_POLL_MAX_TIME 1000 #ifdef __cplusplus } diff --git a/source/dnode/vnode/src/tq/tqScan.c b/source/dnode/vnode/src/tq/tqScan.c index 3419cd0020..a65e33ec97 100644 --- a/source/dnode/vnode/src/tq/tqScan.c +++ b/source/dnode/vnode/src/tq/tqScan.c @@ -15,16 +15,14 @@ #include "tq.h" -int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t numOfCols, int8_t precision) { - if (pBlock == NULL || pRsp == NULL) { - return TSDB_CODE_INVALID_PARA; - } +static int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t numOfCols, int8_t precision) { + int32_t code = 0; + int32_t lino = 0; + size_t dataEncodeBufSize = blockGetEncodeSize(pBlock); int32_t dataStrLen = sizeof(SRetrieveTableRspForTmq) + dataEncodeBufSize; void* buf = taosMemoryCalloc(1, dataStrLen); - if (buf == NULL) { - return terrno; - } + TSDB_CHECK_NULL(buf, code, lino, END, terrno); SRetrieveTableRspForTmq* pRetrieve = (SRetrieveTableRspForTmq*)buf; pRetrieve->version = 1; @@ -33,27 +31,22 @@ int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t pRetrieve->numOfRows = htobe64((int64_t)pBlock->info.rows); int32_t actualLen = blockEncode(pBlock, pRetrieve->data, dataEncodeBufSize, numOfCols); - if(actualLen < 0){ - taosMemoryFree(buf); - return terrno; - } - actualLen += sizeof(SRetrieveTableRspForTmq); - if (taosArrayPush(pRsp->blockDataLen, &actualLen) == NULL){ - taosMemoryFree(buf); - return terrno; - } - if (taosArrayPush(pRsp->blockData, &buf) == NULL) { - taosMemoryFree(buf); - return terrno; - } + TSDB_CHECK_CONDITION(actualLen >= 0, code, lino, END, terrno); - return TSDB_CODE_SUCCESS; + actualLen += sizeof(SRetrieveTableRspForTmq); + TSDB_CHECK_NULL(taosArrayPush(pRsp->blockDataLen, &actualLen), code, lino, END, terrno); + TSDB_CHECK_NULL(taosArrayPush(pRsp->blockData, &buf), code, lino, END, terrno); + + buf = NULL; +END: + if (code != 0){ + tqError("%s failed at line %d with msg:%s", __func__, lino, tstrerror(code)); + } + taosMemoryFree(buf); + return code; } static int32_t tqAddTbNameToRsp(const STQ* pTq, int64_t uid, SMqDataRsp* pRsp, int32_t n) { - if (pRsp == NULL || pTq == NULL) { - return TSDB_CODE_INVALID_PARA; - } SMetaReader mr = {0}; metaReaderDoInit(&mr, pTq->pVnode->pMeta, META_READER_LOCK); @@ -112,7 +105,7 @@ int32_t tqScanData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVal* TSDB_CHECK_CODE(code, line, END); qStreamSetSourceExcluded(task, pRequest->sourceExcluded); - uint64_t st = taosGetTimestampMs(); + int64_t st = taosGetTimestampMs(); while (1) { SSDataBlock* pDataBlock = NULL; code = getDataBlock(task, pHandle, vgId, &pDataBlock); @@ -172,7 +165,7 @@ int32_t tqScanData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVal* pRsp->blockNum++; totalRows += pDataBlock->info.rows; - if (totalRows >= tmqRowSize || (taosGetTimestampMs() - st > 1000)) { + if (totalRows >= tmqRowSize || (taosGetTimestampMs() - st > TMIN(TQ_POLL_MAX_TIME, pRequest->timeout))) { break; } } @@ -189,68 +182,54 @@ END: return code; } -int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBatchMetaRsp* pBatchMetaRsp, STqOffsetVal* pOffset) { - if (pTq == NULL || pHandle == NULL || pRsp == NULL || pBatchMetaRsp == NULL || pOffset == NULL) { - return TSDB_CODE_INVALID_PARA; - } +int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBatchMetaRsp* pBatchMetaRsp, STqOffsetVal* pOffset, int64_t timeout) { + int32_t code = 0; + int32_t lino = 0; + const STqExecHandle* pExec = &pHandle->execHandle; qTaskInfo_t task = pExec->task; - int code = qStreamPrepareScan(task, pOffset, pHandle->execHandle.subType); - if (code != 0) { - return code; - } + code = qStreamPrepareScan(task, pOffset, pHandle->execHandle.subType); + TSDB_CHECK_CODE(code, lino, END); int32_t rowCnt = 0; + int64_t st = taosGetTimestampMs(); while (1) { SSDataBlock* pDataBlock = NULL; uint64_t ts = 0; tqDebug("tmqsnap task start to execute"); code = qExecTask(task, &pDataBlock, &ts); - if (code != 0) { - tqError("vgId:%d, task exec error since %s", pTq->pVnode->config.vgId, tstrerror(code)); - return code; - } - + TSDB_CHECK_CODE(code, lino, END); tqDebug("tmqsnap task execute end, get %p", pDataBlock); if (pDataBlock != NULL && pDataBlock->info.rows > 0) { if (pRsp->withTbName) { char* tbName = taosStrdup(qExtractTbnameFromTask(task)); - if (tbName == NULL) { - tqError("vgId:%d, failed to add tbname to rsp msg, null", pTq->pVnode->config.vgId); - return terrno; - } - if (taosArrayPush(pRsp->blockTbName, &tbName) == NULL){ - tqError("vgId:%d, failed to add tbname to rsp msg", pTq->pVnode->config.vgId); - continue; - } + TSDB_CHECK_NULL(tbName, code, lino, END, terrno); + TSDB_CHECK_NULL(taosArrayPush(pRsp->blockTbName, &tbName), code, lino, END, terrno); + tqDebug("vgId:%d, add tbname:%s to rsp msg", pTq->pVnode->config.vgId, tbName); } if (pRsp->withSchema) { SSchemaWrapper* pSW = tCloneSSchemaWrapper(qExtractSchemaFromTask(task)); - if(taosArrayPush(pRsp->blockSchema, &pSW) == NULL){ - tqError("vgId:%d, failed to add schema to rsp msg", pTq->pVnode->config.vgId); - continue; - } + TSDB_CHECK_NULL(pSW, code, lino, END, terrno); + TSDB_CHECK_NULL(taosArrayPush(pRsp->blockSchema, &pSW), code, lino, END, terrno); } - if (tqAddBlockDataToRsp(pDataBlock, pRsp, taosArrayGetSize(pDataBlock->pDataBlock), - pTq->pVnode->config.tsdbCfg.precision) != 0) { - tqError("vgId:%d, failed to add block to rsp msg", pTq->pVnode->config.vgId); - continue; - } + code = tqAddBlockDataToRsp(pDataBlock, pRsp, taosArrayGetSize(pDataBlock->pDataBlock), + pTq->pVnode->config.tsdbCfg.precision); + TSDB_CHECK_CODE(code, lino, END); + pRsp->blockNum++; rowCnt += pDataBlock->info.rows; - if (rowCnt <= tmqRowSize) continue; - + if (rowCnt <= tmqRowSize && (taosGetTimestampMs() - st <= TMIN(TQ_POLL_MAX_TIME, timeout))) { + continue; + } } // get meta SMqBatchMetaRsp* tmp = qStreamExtractMetaMsg(task); if (taosArrayGetSize(tmp->batchMetaReq) > 0) { code = qStreamExtractOffset(task, &tmp->rspOffset); - if (code) { - return code; - } + TSDB_CHECK_CODE(code, lino, END); *pBatchMetaRsp = *tmp; tqDebug("tmqsnap task get meta"); @@ -259,9 +238,7 @@ int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBat if (pDataBlock == NULL) { code = qStreamExtractOffset(task, pOffset); - if (code) { - break; - } + TSDB_CHECK_CODE(code, lino, END); if (pOffset->type == TMQ_OFFSET__SNAPSHOT_DATA) { continue; @@ -280,6 +257,10 @@ int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBat } } +END: + if(code != 0){ + tqError("%s failed at %d, vgId:%d, task exec error since %s", __FUNCTION__ , lino, pTq->pVnode->config.vgId, tstrerror(code)); + } return code; } diff --git a/source/dnode/vnode/src/tq/tqUtil.c b/source/dnode/vnode/src/tq/tqUtil.c index f6a8563c70..c99acfd4d2 100644 --- a/source/dnode/vnode/src/tq/tqUtil.c +++ b/source/dnode/vnode/src/tq/tqUtil.c @@ -234,7 +234,7 @@ static int32_t extractDataAndRspForDbStbSubscribe(STQ* pTq, STqHandle* pHandle, TQ_ERR_GO_TO_END(tqInitTaosxRsp(&taosxRsp, *offset)); if (offset->type != TMQ_OFFSET__LOG) { - TQ_ERR_GO_TO_END(tqScanTaosx(pTq, pHandle, &taosxRsp, &btMetaRsp, offset)); + TQ_ERR_GO_TO_END(tqScanTaosx(pTq, pHandle, &taosxRsp, &btMetaRsp, offset, pRequest->timeout)); if (taosArrayGetSize(btMetaRsp.batchMetaReq) > 0) { code = tqSendBatchMetaPollRsp(pHandle, pMsg, pRequest, &btMetaRsp, vgId); @@ -378,7 +378,7 @@ static int32_t extractDataAndRspForDbStbSubscribe(STQ* pTq, STqHandle* pHandle, goto END; } totalMetaRows++; - if ((taosArrayGetSize(btMetaRsp.batchMetaReq) >= tmqRowSize) || (taosGetTimestampMs() - st > 1000)) { + if ((taosArrayGetSize(btMetaRsp.batchMetaReq) >= tmqRowSize) || (taosGetTimestampMs() - st > TMIN(TQ_POLL_MAX_TIME, pRequest->timeout))) { tqOffsetResetToLog(&btMetaRsp.rspOffset, fetchVer); code = tqSendBatchMetaPollRsp(pHandle, pMsg, pRequest, &btMetaRsp, vgId); goto END; @@ -406,7 +406,7 @@ static int32_t extractDataAndRspForDbStbSubscribe(STQ* pTq, STqHandle* pHandle, goto END; } - if (totalRows >= tmqRowSize || (taosGetTimestampMs() - st > 1000)) { + if (totalRows >= tmqRowSize || (taosGetTimestampMs() - st > TMIN(TQ_POLL_MAX_TIME, pRequest->timeout))) { tqOffsetResetToLog(&taosxRsp.rspOffset, fetchVer + 1); code = tqSendDataRsp( pHandle, pMsg, pRequest, &taosxRsp, diff --git a/source/util/src/terror.c b/source/util/src/terror.c index b2a8c422f7..db6aa2889b 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -856,6 +856,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_REPLAY_NEED_ONE_VGROUP, "Replay need only on TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT, "Replay is disabled if subscribe db or stable") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_TABLE_QUALIFIED, "No table qualified for query") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_NEED_REBALANCE, "No need rebalance") +TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_INVALID_STATUS, "Invalid status, please subscribe topic first") // stream TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_TASK_NOT_EXIST, "Stream task not exist") diff --git a/utils/test/c/tmq_td32526.c b/utils/test/c/tmq_td32526.c index 42d38ec56c..33cb586501 100644 --- a/utils/test/c/tmq_td32526.c +++ b/utils/test/c/tmq_td32526.c @@ -181,6 +181,7 @@ void basic_consume_loop(tmq_t* tmq, tmq_list_t* topics) { printResult(tmqmessage); taos_free_result(tmqmessage); } else { + ASSERT(taos_errno(NULL) == TSDB_CODE_TIMEOUT_ERROR); break; } } From 03cdf227e8bc25e73b7f4119c81e65c0847d24f1 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 31 Dec 2024 17:25:14 +0800 Subject: [PATCH 11/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- docs/en/14-reference/05-connector/10-cpp.md | 2 +- docs/en/14-reference/09-error-code.md | 3 +++ docs/zh/14-reference/05-connector/10-cpp.mdx | 2 +- docs/zh/14-reference/09-error-code.md | 2 ++ include/util/taoserror.h | 1 + source/client/src/clientTmq.c | 2 +- source/util/src/terror.c | 1 + 7 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/en/14-reference/05-connector/10-cpp.md b/docs/en/14-reference/05-connector/10-cpp.md index 940d4c359e..76488442e2 100644 --- a/docs/en/14-reference/05-connector/10-cpp.md +++ b/docs/en/14-reference/05-connector/10-cpp.md @@ -1195,7 +1195,7 @@ In addition to using SQL or parameter binding APIs to insert data, you can also - **Interface Description**: Used to poll for consuming data, each consumer can only call this interface in a single thread. - tmq: [Input] Points to a valid tmq_t structure pointer, representing a TMQ consumer object. - timeout: [Input] Polling timeout in milliseconds, a negative number indicates a default timeout of 1 second. - - **Return Value**: Non-`NULL`: Success, returns a pointer to a TAOS_RES structure containing the received messages. `NULL`: Failure, indicates no data. TAOS_RES results are consistent with taos_query results, and information in TAOS_RES can be obtained through various query interfaces, such as schema, etc. + - **Return Value**: Non-`NULL`: Success, returns a pointer to a TAOS_RES structure containing the received messages. `NULL`: indicates no data, the error code can be obtained through taos_errno (NULL), please refer to the reference manual for specific error message. TAOS_RES results are consistent with taos_query results, and information in TAOS_RES can be obtained through various query interfaces, such as schema, etc. - `int32_t tmq_consumer_close(tmq_t *tmq)` - **Interface Description**: Used to close a tmq_t structure. Must be used in conjunction with tmq_consumer_new. diff --git a/docs/en/14-reference/09-error-code.md b/docs/en/14-reference/09-error-code.md index 2bbd8f9305..9c0a0be377 100644 --- a/docs/en/14-reference/09-error-code.md +++ b/docs/en/14-reference/09-error-code.md @@ -535,3 +535,6 @@ This document details the server error codes that may be encountered when using | 0x80004001 | Consumer mismatch | The vnode requested for subscription and the reassigned vnode are inconsistent, usually occurs when new consumers join the same consumer group | Internal error, not exposed to users | | 0x80004002 | Consumer closed | The consumer no longer exists | Check if it has already been closed | | 0x80004100 | Stream task not exist | The stream computing task does not exist | Check the server-side error logs | +| 0x80004017 | Invalid status, please subscribe topic first | tmq status invalidate | Without calling subscribe, directly poll data | +| 0x80004018 | TMQ poll timeout | timeout is too small or there is no data to consume | Adjust the timeout parameter appropriately or check if the data has been consumed | + diff --git a/docs/zh/14-reference/05-connector/10-cpp.mdx b/docs/zh/14-reference/05-connector/10-cpp.mdx index f2ded06cd2..1bf3348a21 100644 --- a/docs/zh/14-reference/05-connector/10-cpp.mdx +++ b/docs/zh/14-reference/05-connector/10-cpp.mdx @@ -1187,7 +1187,7 @@ TDengine 的异步 API 均采用非阻塞调用模式。应用程序可以用多 - **接口说明**:用于轮询消费数据,每一个消费者,只能单线程调用该接口。 - tmq:[入参] 指向一个有效的 tmq_t 结构体指针,该结构体代表一个 TMQ 消费者对象。 - timeout:[入参] 轮询的超时时间,单位为毫秒,负数表示默认超时1秒。 - - **返回值**:非 `NULL`:成功,返回一个指向 TAOS_RES 结构体的指针,该结构体包含了接收到的消息。。`NULL`:失败,表示没有数据。TAOS_RES 结果和 taos_query 返回结果一致,可通过查询的各种接口获取 TAOS_RES 里的信息,比如 schema 等。 + - **返回值**:非 `NULL`:成功,返回一个指向 TAOS_RES 结构体的指针,该结构体包含了接收到的消息。。`NULL`:表示没有数据,可通过taos_errno(NULL) 获取错误码,具体错误码参见参考手册。TAOS_RES 结果和 taos_query 返回结果一致,可通过查询的各种接口获取 TAOS_RES 里的信息,比如 schema 等。 - `int32_t tmq_consumer_close(tmq_t *tmq)` - **接口说明**:用于关闭 tmq_t 结构体。需与 tmq_consumer_new 配合使用。 diff --git a/docs/zh/14-reference/09-error-code.md b/docs/zh/14-reference/09-error-code.md index 51453cef4c..16f0b7ebf4 100644 --- a/docs/zh/14-reference/09-error-code.md +++ b/docs/zh/14-reference/09-error-code.md @@ -555,4 +555,6 @@ description: TDengine 服务端的错误码列表和详细说明 | 0x80004001 | Consumer mismatch | 订阅请求的vnode和重新分配的vnode不一致,一般存在于有新消费者加入相同消费者组里时 | 内部错误,不暴露给用户 | | 0x80004002 | Consumer closed | 消费者已经不存在了 | 查看是否已经close掉了 | | 0x80004100 | Stream task not exist | 流计算任务不存在 | 具体查看server端的错误日志 | +| 0x80004017 | Invalid status, please subscribe topic first | 数据订阅状态不对 | 没有调用 subscribe,直接poll数据 | +| 0x80004018 | TMQ poll timeout | 数据订阅超时,超时时间太短,或者数据消费完毕 | 可适当调大timeout 参数或者检测数据是否消费完毕 | diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 44711b28d6..d3d5599016 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -1015,6 +1015,7 @@ int32_t taosGetErrSize(); #define TSDB_CODE_TMQ_NO_TABLE_QUALIFIED TAOS_DEF_ERROR_CODE(0, 0x4015) #define TSDB_CODE_TMQ_NO_NEED_REBALANCE TAOS_DEF_ERROR_CODE(0, 0x4016) #define TSDB_CODE_TMQ_INVALID_STATUS TAOS_DEF_ERROR_CODE(0, 0x4017) +#define TSDB_CODE_TMQ_POLL_TIMEOUT TAOS_DEF_ERROR_CODE(0, 0x4018) // stream #define TSDB_CODE_STREAM_TASK_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x4100) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 7b1365fe82..ad0486fdf5 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -2526,7 +2526,7 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { if (timeout >= 0) { int64_t currentTime = taosGetTimestampMs(); int64_t elapsedTime = currentTime - startTime; - TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, terrno, lino, END, TSDB_CODE_TIMEOUT_ERROR); + TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, terrno, lino, END, TSDB_CODE_TMQ_POLL_TIMEOUT); (void)tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { (void)tsem2_timewait(&tmq->rspSem, 1000); diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 68cba396f4..873733a64b 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -858,6 +858,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT, "Replay is disabled TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_TABLE_QUALIFIED, "No table qualified for query") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_NEED_REBALANCE, "No need rebalance") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_INVALID_STATUS, "Invalid status, please subscribe topic first") +TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_POLL_TIMEOUT, "TMQ poll timeout") // stream TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_TASK_NOT_EXIST, "Stream task not exist") From 42a5f69dd1ffea3dcfc4bdea604c67debedf3bd0 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 31 Dec 2024 18:18:28 +0800 Subject: [PATCH 12/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- include/util/taoserror.h | 1 + source/client/src/clientRawBlockWrite.c | 2 +- source/util/src/terror.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/util/taoserror.h b/include/util/taoserror.h index d3d5599016..a45a017688 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -47,6 +47,7 @@ const char* terrstr(); char* taosGetErrMsgReturn(); char* taosGetErrMsg(); +void taosClearErrMsg(); int32_t* taosGetErrno(); int32_t* taosGetErrln(); int32_t taosGetErrSize(); diff --git a/source/client/src/clientRawBlockWrite.c b/source/client/src/clientRawBlockWrite.c index 178ab6b253..c200d38a56 100644 --- a/source/client/src/clientRawBlockWrite.c +++ b/source/client/src/clientRawBlockWrite.c @@ -2572,7 +2572,7 @@ int32_t tmq_write_raw(TAOS* taos, tmq_raw_data raw) { SET_ERROR_MSG("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); return TSDB_CODE_INVALID_PARA; } - SET_ERROR_MSG(""); // clear global error message + taosClearErrMsg(); // clear global error message return writeRawImpl(taos, raw.raw, raw.raw_len, raw.raw_type); } diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 873733a64b..572a1b23fe 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -29,6 +29,7 @@ static threadlocal char tsErrMsgReturn[ERR_MSG_LEN] = {0}; int32_t* taosGetErrno() { return &tsErrno; } int32_t* taosGetErrln() { return &tsErrln; } char* taosGetErrMsg() { return tsErrMsgDetail; } +void taosClearErrMsg() { tsErrMsgDetail[0] = '\0'; } char* taosGetErrMsgReturn() { return tsErrMsgReturn; } #ifdef TAOS_ERROR_C From 5cdbebbcd83c7a3b2bf68bc28033ed8b2f998068 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 2 Jan 2025 11:01:00 +0800 Subject: [PATCH 13/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- source/client/src/clientTmq.c | 12 ++++++------ utils/test/c/tmq_td32526.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index ad0486fdf5..670398d1f5 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -2356,22 +2356,21 @@ static SMqRspObj* buildRsp(SMqPollRspWrapper* pollRspWrapper){ } static int32_t processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ + int32_t code = 0; SMqPollRspWrapper* pollRspWrapper = &pRspWrapper->pollRsp; if (pRspWrapper->code == TSDB_CODE_VND_INVALID_VGROUP_ID) { // for vnode transform - int32_t code = askEp(tmq, NULL, false, true); + code = askEp(tmq, NULL, false, true); if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", tmq->consumerId, tstrerror(code)); - return code; } } else if (pRspWrapper->code == TSDB_CODE_TMQ_CONSUMER_MISMATCH) { - int32_t code = askEp(tmq, NULL, false, false); + code = askEp(tmq, NULL, false, false); if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", tmq->consumerId, tstrerror(code)); - return code; } - } else{ - return pRspWrapper->code; + } else if (code == TSDB_CODE_TMQ_NO_TABLE_QUALIFIED){ + code = 0; } tqInfoC("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since %s", tmq->consumerId, pollRspWrapper->vgId, tstrerror(pRspWrapper->code)); @@ -2383,6 +2382,7 @@ static int32_t processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ atomic_store_32(&pVg->vgStatus, TMQ_VG_STATUS__IDLE); } taosWUnLockLatch(&tmq->lock); + return TSDB_CODE_SUCCESS; } static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ diff --git a/utils/test/c/tmq_td32526.c b/utils/test/c/tmq_td32526.c index 33cb586501..0150745f57 100644 --- a/utils/test/c/tmq_td32526.c +++ b/utils/test/c/tmq_td32526.c @@ -181,7 +181,7 @@ void basic_consume_loop(tmq_t* tmq, tmq_list_t* topics) { printResult(tmqmessage); taos_free_result(tmqmessage); } else { - ASSERT(taos_errno(NULL) == TSDB_CODE_TIMEOUT_ERROR); + ASSERT(taos_errno(NULL) == TSDB_CODE_TMQ_POLL_TIMEOUT); break; } } From 86da050f25461ece596285d2a86beef010033791 Mon Sep 17 00:00:00 2001 From: freemine Date: Thu, 2 Jan 2025 19:43:45 +0800 Subject: [PATCH 14/30] fail as early as in parser stage --- source/libs/parser/inc/sql.y | 67 ++++++++++++++----------------- tests/system-test/2-query/join.py | 4 +- 2 files changed, 32 insertions(+), 39 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 907c8afd9f..12a2ebd8b5 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1460,75 +1460,68 @@ joined_table(A) ::= win_joined(B). /************************************************ inner join **********************************************************/ inner_joined(A) ::= - table_reference(B) JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, G, H); } + table_reference(B) JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } inner_joined(A) ::= - table_reference(B) INNER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, G, H); } - -inner_joined(A) ::= - table_reference(B) LEFT JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_NONE, A, B, E, F, G, H); } - -inner_joined(A) ::= - table_reference(B) RIGHT JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_NONE, A, B, E, F, G, H); } - -inner_joined(A) ::= - table_reference(B) FULL JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_NONE, A, B, E, F, G, H); } + table_reference(B) INNER JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } /************************************************ outer join **********************************************************/ outer_joined(A) ::= - table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + table_reference(B) LEFT JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } outer_joined(A) ::= - table_reference(B) RIGHT OUTER JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, G, H); } + table_reference(B) RIGHT JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } + +outer_joined(A) ::= + table_reference(B) FULL JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } + +outer_joined(A) ::= + table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } + +outer_joined(A) ::= + table_reference(B) RIGHT OUTER JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } + +outer_joined(A) ::= + table_reference(B) FULL OUTER JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_OUTER, A, B, E, F, NULL, NULL); } /************************************************ semi join ***********************************************************/ semi_joined(A) ::= - table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, NULL, NULL); } semi_joined(A) ::= - table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, NULL, NULL); } /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= - table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, NULL, NULL); } anti_joined(A) ::= - table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, NULL, NULL); } /************************************************ asof join ***********************************************************/ asof_joined(A) ::= table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, NULL, H); } asof_joined(A) ::= table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, NULL, H); } /************************************************ window join *********************************************************/ win_joined(A) ::= - table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } + table_reference(B) LEFT WINDOW JOIN table_reference(E) + window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, NULL, G, H); } win_joined(A) ::= - table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) - window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } + table_reference(B) RIGHT WINDOW JOIN table_reference(E) + window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, NULL, G, H); } join_on_clause_opt(A) ::= . [ON] { A = NULL; } -join_on_clause_opt(A) ::= ON search_condition(B). { A = B; } +join_on_clause_opt(A) ::= join_on_clause(B). { A = B; } -window_offset_clause_opt(A) ::= . [WINDOW_OFFSET] { A = NULL; } -window_offset_clause_opt(A) ::= WINDOW_OFFSET NK_LP window_offset_literal(B) +join_on_clause(A) ::= ON search_condition(B). { A = B; } + +window_offset_clause(A) ::= WINDOW_OFFSET NK_LP window_offset_literal(B) NK_COMMA window_offset_literal(C) NK_RP. { A = createWindowOffsetNode(pCxt, releaseRawExprNode(pCxt, B), releaseRawExprNode(pCxt, C)); } window_offset_literal(A) ::= NK_VARIABLE(B). { A = createRawExprNode(pCxt, &B, createTimeOffsetValueNode(pCxt, &B)); } diff --git a/tests/system-test/2-query/join.py b/tests/system-test/2-query/join.py index 9814091ab3..5d5020ab4b 100644 --- a/tests/system-test/2-query/join.py +++ b/tests/system-test/2-query/join.py @@ -369,7 +369,7 @@ class TDTestCase: tdSql.checkRows(self.rows) tdSql.query("select ct1.c_int from db.ct1 as ct1 left asof join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) - tdSql.error("select ct1.c_int from db.ct1 as ct1 left window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) + tdSql.error("select ct1.c_int from db.ct1 as ct1 left window join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.query("select ct1.c_int from db.ct1 as ct1 right join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) @@ -381,7 +381,7 @@ class TDTestCase: tdSql.checkRows(self.rows) tdSql.query("select ct1.c_int from db.ct1 as ct1 right asof join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) - tdSql.error("select ct1.c_int from db.ct1 as ct1 right window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION) + tdSql.error("select ct1.c_int from db.ct1 as ct1 right window join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) From 63cf4c9cbace5d17a51d2a07201426ac28185fe1 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 3 Jan 2025 11:19:40 +0800 Subject: [PATCH 15/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- docs/en/14-reference/05-connector/10-cpp.md | 2 +- docs/en/14-reference/09-error-code.md | 2 +- docs/zh/14-reference/05-connector/10-cpp.mdx | 2 +- docs/zh/14-reference/09-error-code.md | 2 +- source/client/src/clientTmq.c | 62 +++++++++++--------- source/os/src/osMemory.c | 11 +++- 6 files changed, 48 insertions(+), 33 deletions(-) diff --git a/docs/en/14-reference/05-connector/10-cpp.md b/docs/en/14-reference/05-connector/10-cpp.md index 76488442e2..24578b3220 100644 --- a/docs/en/14-reference/05-connector/10-cpp.md +++ b/docs/en/14-reference/05-connector/10-cpp.md @@ -509,7 +509,7 @@ For the OpenTSDB text protocol, the parsing of timestamps follows its official p - **Interface Description**: Used for polling to consume data. Each consumer can only call this interface in a single thread. - tmq: [Input] Points to a valid ws_tmq_t structure pointer, which represents a TMQ consumer object. - timeout: [Input] Polling timeout in milliseconds, a negative number indicates a default timeout of 1 second. - - **Return Value**: Non-`NULL`: Success, returns a pointer to a WS_RES structure, which contains the received message. `NULL`: Failure, indicates no data. WS_RES results are consistent with taos_query results, and information in WS_RES can be obtained through various query interfaces, such as schema, etc. + - **Return Value**: Non-`NULL`: Success, returns a pointer to a WS_RES structure, which contains the received message. `NULL`: indicates no data, the error code can be obtained through ws_errno (NULL), please refer to the reference manual for specific error message. WS_RES results are consistent with taos_query results, and information in WS_RES can be obtained through various query interfaces, such as schema, etc. - `int32_t ws_tmq_consumer_close(ws_tmq_t *tmq)` - **Interface Description**: Used to close the ws_tmq_t structure. Must be used in conjunction with ws_tmq_consumer_new. diff --git a/docs/en/14-reference/09-error-code.md b/docs/en/14-reference/09-error-code.md index 9c0a0be377..6737fd1124 100644 --- a/docs/en/14-reference/09-error-code.md +++ b/docs/en/14-reference/09-error-code.md @@ -534,7 +534,7 @@ This document details the server error codes that may be encountered when using | 0x80004000 | Invalid message | The subscribed data is illegal, generally does not occur | Check the client-side error logs for details | | 0x80004001 | Consumer mismatch | The vnode requested for subscription and the reassigned vnode are inconsistent, usually occurs when new consumers join the same consumer group | Internal error, not exposed to users | | 0x80004002 | Consumer closed | The consumer no longer exists | Check if it has already been closed | -| 0x80004100 | Stream task not exist | The stream computing task does not exist | Check the server-side error logs | | 0x80004017 | Invalid status, please subscribe topic first | tmq status invalidate | Without calling subscribe, directly poll data | | 0x80004018 | TMQ poll timeout | timeout is too small or there is no data to consume | Adjust the timeout parameter appropriately or check if the data has been consumed | +| 0x80004100 | Stream task not exist | The stream computing task does not exist | Check the server-side error logs | diff --git a/docs/zh/14-reference/05-connector/10-cpp.mdx b/docs/zh/14-reference/05-connector/10-cpp.mdx index 1bf3348a21..a23d770998 100644 --- a/docs/zh/14-reference/05-connector/10-cpp.mdx +++ b/docs/zh/14-reference/05-connector/10-cpp.mdx @@ -509,7 +509,7 @@ TDengine 推荐数据库应用的每个线程都建立一个独立的连接, - **接口说明**:用于轮询消费数据,每一个消费者,只能单线程调用该接口。 - tmq:[入参] 指向一个有效的 ws_tmq_t 结构体指针,该结构体代表一个 TMQ 消费者对象。 - timeout:[入参] 轮询的超时时间,单位为毫秒,负数表示默认超时1秒。 - - **返回值**:非 `NULL`:成功,返回一个指向 WS_RES 结构体的指针,该结构体包含了接收到的消息。`NULL`:失败,表示没有数据。WS_RES 结果和 taos_query 返回结果一致,可通过查询的各种接口获取 WS_RES 里的信息,比如 schema 等。 + - **返回值**:非 `NULL`:成功,返回一个指向 WS_RES 结构体的指针,该结构体包含了接收到的消息。`NULL`:表示没有数据, 可通过 ws_errno(NULL) 获取错误码,具体错误码参见参考手册。WS_RES 结果和 taos_query 返回结果一致,可通过查询的各种接口获取 WS_RES 里的信息,比如 schema 等。 - `int32_t ws_tmq_consumer_close(ws_tmq_t *tmq)` - **接口说明**:用于关闭 ws_tmq_t 结构体。需与 ws_tmq_consumer_new 配合使用。 diff --git a/docs/zh/14-reference/09-error-code.md b/docs/zh/14-reference/09-error-code.md index 16f0b7ebf4..d2b48d509b 100644 --- a/docs/zh/14-reference/09-error-code.md +++ b/docs/zh/14-reference/09-error-code.md @@ -554,7 +554,7 @@ description: TDengine 服务端的错误码列表和详细说明 | 0x80004000 | Invalid message | 订阅到的数据非法,一般不会出现 | 具体查看client端的错误日志提示 | | 0x80004001 | Consumer mismatch | 订阅请求的vnode和重新分配的vnode不一致,一般存在于有新消费者加入相同消费者组里时 | 内部错误,不暴露给用户 | | 0x80004002 | Consumer closed | 消费者已经不存在了 | 查看是否已经close掉了 | -| 0x80004100 | Stream task not exist | 流计算任务不存在 | 具体查看server端的错误日志 | | 0x80004017 | Invalid status, please subscribe topic first | 数据订阅状态不对 | 没有调用 subscribe,直接poll数据 | | 0x80004018 | TMQ poll timeout | 数据订阅超时,超时时间太短,或者数据消费完毕 | 可适当调大timeout 参数或者检测数据是否消费完毕 | +| 0x80004100 | Stream task not exist | 流计算任务不存在 | 具体查看server端的错误日志 | diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 670398d1f5..90aa2d8c65 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -1209,9 +1209,9 @@ static void initClientTopicFromRsp(SMqClientTopic* pTopic, SMqSubTopicEp* pTopic } static void buildNewTopicList(tmq_t* tmq, SArray* newTopics, const SMqAskEpRsp* pRsp){ - if (tmq == NULL || newTopics == NULL || pRsp == NULL) { - return; - } + if (tmq == NULL || newTopics == NULL || pRsp == NULL) { + return; + } SHashObj* pVgOffsetHashMap = taosHashInit(64, MurmurHash3_32, false, HASH_NO_LOCK); if (pVgOffsetHashMap == NULL) { tqErrorC("consumer:0x%" PRIx64 " taos hash init null, code:%d", tmq->consumerId, terrno); @@ -1266,9 +1266,9 @@ static void buildNewTopicList(tmq_t* tmq, SArray* newTopics, const SMqAskEpRsp* } static void doUpdateLocalEp(tmq_t* tmq, int32_t epoch, const SMqAskEpRsp* pRsp) { - if (tmq == NULL || pRsp == NULL) { - return; - } + if (tmq == NULL || pRsp == NULL) { + return; + } int32_t topicNumGet = taosArrayGetSize(pRsp->topics); // vnode transform (epoch == tmq->epoch && topicNumGet != 0) // ask ep rsp (epoch == tmq->epoch && topicNumGet == 0) @@ -2339,9 +2339,6 @@ static SMqRspObj* buildRsp(SMqPollRspWrapper* pollRspWrapper){ SMqBatchMetaRsp batchMetaRsp; } MEMSIZE; - if (pollRspWrapper == NULL) { - return NULL; - } SMqRspObj* pRspObj = taosMemoryCalloc(1, sizeof(SMqRspObj)); if (pRspObj == NULL) { tqErrorC("buildRsp:failed to allocate memory"); @@ -2383,15 +2380,17 @@ static int32_t processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ } taosWUnLockLatch(&tmq->lock); - return TSDB_CODE_SUCCESS; + return code; } static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ + int32_t code = 0; SMqRspObj* pRspObj = NULL; if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { tqDebugC("consumer:0x%" PRIx64 " ep msg received", tmq->consumerId); SMqAskEpRsp* rspMsg = &pRspWrapper->epRsp; doUpdateLocalEp(tmq, pRspWrapper->epoch, rspMsg); + terrno = code; return pRspObj; } @@ -2402,7 +2401,7 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ if(pVg == NULL) { tqErrorC("consumer:0x%" PRIx64 " get vg or topic error, topic:%s vgId:%d", tmq->consumerId, pollRspWrapper->topicName, pollRspWrapper->vgId); - terrno = TSDB_CODE_TMQ_INVALID_VGID; + code = TSDB_CODE_TMQ_INVALID_VGID; goto END; } pollRspWrapper->topicHandle = getTopicInfo(tmq, pollRspWrapper->topicName); @@ -2460,7 +2459,8 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ pRspObj->resType = pRspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_META_RSP ? RES_TYPE__TMQ_META : RES_TYPE__TMQ_BATCH_META; } - END: +END: + terrno = code; taosWUnLockLatch(&tmq->lock); return pRspObj; } @@ -2468,65 +2468,72 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ static void* tmqHandleAllRsp(tmq_t* tmq) { tqDebugC("consumer:0x%" PRIx64 " start to handle the rsp, total:%d", tmq->consumerId, taosQallItemSize(tmq->qall)); + int32_t code = 0; void* returnVal = NULL; while (1) { SMqRspWrapper* pRspWrapper = NULL; if (taosGetQitem(tmq->qall, (void**)&pRspWrapper) == 0) { - if (taosReadAllQitems(tmq->mqueue, tmq->qall) == 0){ - return NULL; + code = taosReadAllQitems(tmq->mqueue, tmq->qall); + if (code == 0){ + goto END; } - if (taosGetQitem(tmq->qall, (void**)&pRspWrapper) == 0) { - return NULL; + code = taosGetQitem(tmq->qall, (void**)&pRspWrapper); + if (code == 0) { + goto END; } } tqDebugC("consumer:0x%" PRIx64 " handle rsp, type:%s", tmq->consumerId, tmqMsgTypeStr[pRspWrapper->tmqRspType]); if (pRspWrapper->code != 0) { - terrno = processMqRspError(tmq, pRspWrapper); + code = processMqRspError(tmq, pRspWrapper); }else{ returnVal = processMqRsp(tmq, pRspWrapper); + code = terrno; } tmqFreeRspWrapper(pRspWrapper); taosFreeQitem(pRspWrapper); - if(returnVal != NULL || terrno != 0){ + if(returnVal != NULL || code != 0){ break; } } +END: + terrno = code; return returnVal; } TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { int32_t lino = 0; - terrno = TSDB_CODE_SUCCESS; - TSDB_CHECK_NULL(tmq, terrno, lino, END, TSDB_CODE_INVALID_PARA); + int32_t code = 0; + TSDB_CHECK_NULL(tmq, code, lino, END, TSDB_CODE_INVALID_PARA); void* rspObj = NULL; int64_t startTime = taosGetTimestampMs(); tqDebugC("consumer:0x%" PRIx64 " start to poll at %" PRId64 ", timeout:%" PRId64, tmq->consumerId, startTime, timeout); - TSDB_CHECK_CONDITION(atomic_load_8(&tmq->status) != TMQ_CONSUMER_STATUS__INIT, terrno, lino, END, TSDB_CODE_TMQ_INVALID_STATUS); + TSDB_CHECK_CONDITION(atomic_load_8(&tmq->status) != TMQ_CONSUMER_STATUS__INIT, code, lino, END, TSDB_CODE_TMQ_INVALID_STATUS); (void)atomic_val_compare_exchange_8(&tmq->pollFlag, 0, 1); while (1) { - terrno = tmqHandleAllDelayedTask(tmq); - TSDB_CHECK_CODE(terrno, lino, END); + code = tmqHandleAllDelayedTask(tmq); + TSDB_CHECK_CODE(code, lino, END); - terrno = tmqPollImpl(tmq, timeout); - TSDB_CHECK_CODE(terrno, lino, END); + code = tmqPollImpl(tmq, timeout); + TSDB_CHECK_CODE(code, lino, END); rspObj = tmqHandleAllRsp(tmq); if (rspObj) { tqDebugC("consumer:0x%" PRIx64 " return rsp %p", tmq->consumerId, rspObj); return (TAOS_RES*)rspObj; } - TSDB_CHECK_CODE(terrno, lino, END); + code = terrno; + TSDB_CHECK_CODE(code, lino, END); if (timeout >= 0) { int64_t currentTime = taosGetTimestampMs(); int64_t elapsedTime = currentTime - startTime; - TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, terrno, lino, END, TSDB_CODE_TMQ_POLL_TIMEOUT); + TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, code, lino, END, TSDB_CODE_TMQ_POLL_TIMEOUT); (void)tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { (void)tsem2_timewait(&tmq->rspSem, 1000); @@ -2534,6 +2541,7 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { } END: + terrno = code; if (tmq != NULL) { tqErrorC("consumer:0x%" PRIx64 " poll error at line:%d, msg:%s", tmq->consumerId, lino, tstrerror(terrno)); } diff --git a/source/os/src/osMemory.c b/source/os/src/osMemory.c index fdbf4853ad..51454653ca 100644 --- a/source/os/src/osMemory.c +++ b/source/os/src/osMemory.c @@ -294,7 +294,10 @@ void *taosMemCalloc(int64_t num, int64_t size) { #ifdef USE_TD_MEMORY int32_t memorySize = num * size; char *tmp = calloc(memorySize + sizeof(TdMemoryInfo), 1); - if (tmp == NULL) return NULL; + if (tmp == NULL) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } TdMemoryInfoPtr pTdMemoryInfo = (TdMemoryInfoPtr)tmp; pTdMemoryInfo->memorySize = memorySize; @@ -328,6 +331,7 @@ void *taosMemRealloc(void *ptr, int64_t size) { TdMemoryInfoPtr pTdMemoryInfo = (TdMemoryInfoPtr)((char *)ptr - sizeof(TdMemoryInfo)); if (tpTdMemoryInfo->symbol != TD_MEMORY_SYMBOL) { + terrno = TSDB_CODE_OUT_OF_MEMORY; return NULL; } @@ -335,7 +339,10 @@ void *taosMemRealloc(void *ptr, int64_t size) { memcpy(&tdMemoryInfo, pTdMemoryInfo, sizeof(TdMemoryInfo)); void *tmp = realloc(pTdMemoryInfo, size + sizeof(TdMemoryInfo)); - if (tmp == NULL) return NULL; + if (tmp == NULL) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + return NULL; + } memcpy(tmp, &tdMemoryInfo, sizeof(TdMemoryInfo)); ((TdMemoryInfoPtr)tmp)->memorySize = size; From 930a40d14b0ba269248e7376ceea7bb5dbcd2fc0 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Fri, 3 Jan 2025 11:21:01 +0800 Subject: [PATCH 16/30] fix(test/blob): not run UT of blob --- source/libs/azure/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/libs/azure/CMakeLists.txt b/source/libs/azure/CMakeLists.txt index 1516a35c4d..8e03d67c73 100644 --- a/source/libs/azure/CMakeLists.txt +++ b/source/libs/azure/CMakeLists.txt @@ -26,8 +26,10 @@ target_link_libraries( PUBLIC common ) +if(${BUILD_S3}) if(${BUILD_TEST}) add_subdirectory(test) endif(${BUILD_TEST}) +endif() # endif(${TD_LINUX}) From 1dd1efd0b0c3a2a08186055bf421c571ec29f007 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 3 Jan 2025 15:02:33 +0800 Subject: [PATCH 17/30] fix: snapshot.py failed --- source/dnode/vnode/src/inc/vnd.h | 1 + source/dnode/vnode/src/tsdb/tsdbFS2.c | 4 +--- source/dnode/vnode/src/tsdb/tsdbFSet2.h | 1 - source/dnode/vnode/src/tsdb/tsdbMerge.c | 1 - source/dnode/vnode/src/vnd/vnodeAsync.c | 18 ++++++++++++++++++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/source/dnode/vnode/src/inc/vnd.h b/source/dnode/vnode/src/inc/vnd.h index b1a5ca4709..7da3dcbe5a 100644 --- a/source/dnode/vnode/src/inc/vnd.h +++ b/source/dnode/vnode/src/inc/vnd.h @@ -78,6 +78,7 @@ int32_t vnodeAsyncC(SVAChannelID* channelID, EVAPriority priority, int32_t (*exe void vnodeAWait(SVATaskID* taskID); int32_t vnodeACancel(SVATaskID* taskID); int32_t vnodeAsyncSetWorkers(int64_t async, int32_t numWorkers); +bool vnodeATaskValid(SVATaskID* taskID); const char* vnodeGetATaskName(EVATaskT task); diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index aa68a8af5c..969b8e9031 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -801,7 +801,6 @@ int32_t tsdbDisableAndCancelAllBgTask(STsdb *pTsdb) { (void)taosThreadMutexUnlock(&pTsdb->mutex); return terrno; } - fset->mergeScheduled = false; tsdbFSSetBlockCommit(fset, false); } @@ -945,7 +944,7 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) { // bool skipMerge = false; int32_t numFile = TARRAY2_SIZE(lvl->fobjArr); - if (numFile >= sttTrigger && (!fset->mergeScheduled)) { + if (numFile >= sttTrigger && (!vnodeATaskValid(&fset->mergeTask))) { SMergeArg *arg = taosMemoryMalloc(sizeof(*arg)); if (arg == NULL) { code = terrno; @@ -957,7 +956,6 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) { code = vnodeAsync(MERGE_TASK_ASYNC, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, &fset->mergeTask); TSDB_CHECK_CODE(code, lino, _exit); - fset->mergeScheduled = true; } if (numFile >= sttTrigger * BLOCK_COMMIT_FACTOR) { diff --git a/source/dnode/vnode/src/tsdb/tsdbFSet2.h b/source/dnode/vnode/src/tsdb/tsdbFSet2.h index ca9c133e9c..51d13f52ab 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSet2.h +++ b/source/dnode/vnode/src/tsdb/tsdbFSet2.h @@ -95,7 +95,6 @@ struct STFileSet { TSKEY lastCompact; TSKEY lastCommit; - bool mergeScheduled; SVATaskID mergeTask; SVATaskID compactTask; SVATaskID retentionTask; diff --git a/source/dnode/vnode/src/tsdb/tsdbMerge.c b/source/dnode/vnode/src/tsdb/tsdbMerge.c index 39d8a57692..d6c0259c23 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMerge.c +++ b/source/dnode/vnode/src/tsdb/tsdbMerge.c @@ -484,7 +484,6 @@ static int32_t tsdbMergeGetFSet(SMerger *merger) { return code; } - fset->mergeScheduled = false; (void)taosThreadMutexUnlock(&merger->tsdb->mutex); return 0; } diff --git a/source/dnode/vnode/src/vnd/vnodeAsync.c b/source/dnode/vnode/src/vnd/vnodeAsync.c index 49c1306736..cf0eee62f6 100644 --- a/source/dnode/vnode/src/vnd/vnodeAsync.c +++ b/source/dnode/vnode/src/vnd/vnodeAsync.c @@ -842,4 +842,22 @@ const char *vnodeGetATaskName(EVATaskT taskType) { default: return "unknown"; } +} + +bool vnodeATaskValid(SVATaskID *taskID) { + if (taskID == NULL || taskID->async < MIN_ASYNC_ID || taskID->async > MAX_ASYNC_ID || taskID->id <= 0) { + return false; + } + + SVAsync *async = GVnodeAsyncs[taskID->async].async; + SVATask task2 = { + .taskId = taskID->id, + }; + SVATask *task = NULL; + + (void)taosThreadMutexLock(&async->mutex); + int32_t ret = vHashGet(async->taskTable, &task2, (void **)&task); + (void)taosThreadMutexUnlock(&async->mutex); + + return ret == 0 && task != NULL; } \ No newline at end of file From c2e5910c23535d31e1b6ea412469471c1ecaa72e Mon Sep 17 00:00:00 2001 From: freemine Date: Fri, 3 Jan 2025 22:26:47 +0800 Subject: [PATCH 18/30] inner join [ON ...]; window join [ON ...] WINDOW_OFFSET ... --- source/libs/parser/inc/sql.y | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 12a2ebd8b5..8303d7f1b8 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1460,10 +1460,10 @@ joined_table(A) ::= win_joined(B). /************************************************ inner join **********************************************************/ inner_joined(A) ::= - table_reference(B) JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } + table_reference(B) JOIN table_reference(E) join_on_clause_opt(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } inner_joined(A) ::= - table_reference(B) INNER JOIN table_reference(E) join_on_clause(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } + table_reference(B) INNER JOIN table_reference(E) join_on_clause_opt(F). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_NONE, A, B, E, F, NULL, NULL); } /************************************************ outer join **********************************************************/ outer_joined(A) ::= @@ -1509,12 +1509,12 @@ asof_joined(A) ::= /************************************************ window join *********************************************************/ win_joined(A) ::= - table_reference(B) LEFT WINDOW JOIN table_reference(E) - window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, NULL, G, H); } + table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); } win_joined(A) ::= - table_reference(B) RIGHT WINDOW JOIN table_reference(E) - window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, NULL, G, H); } + table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= join_on_clause(B). { A = B; } From ad0d637086053ba2beb98eee5aa1dd5e614b3a82 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 6 Jan 2025 13:29:11 +0800 Subject: [PATCH 19/30] fix: set parent sort error --- include/util/tdef.h | 1 + source/common/src/tglobal.c | 1 + source/libs/planner/inc/planInt.h | 1 + source/libs/planner/src/planLogicCreater.c | 2 +- source/libs/planner/src/planOptimizer.c | 7 ++ source/libs/planner/src/planPhysiCreater.c | 17 +++++ tests/system-test/2-query/last_row.py | 78 ++++++++++++++++++++++ 7 files changed, 106 insertions(+), 1 deletion(-) diff --git a/include/util/tdef.h b/include/util/tdef.h index 2b0aa00b1a..c07a2299d0 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -562,6 +562,7 @@ typedef enum ELogicConditionType { #define TSDB_QUERY_CLEAR_TYPE(x, _type) ((x) &= (~_type)) #define TSDB_QUERY_RESET_TYPE(x) ((x) = TSDB_QUERY_TYPE_NON_TYPE) +#define TSDB_ORDER_NONE 0 #define TSDB_ORDER_ASC 1 #define TSDB_ORDER_DESC 2 diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 24fc3b2a96..68ea3f4a42 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -2757,6 +2757,7 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) { {"tsmaDataDeleteMark", &tsmaDataDeleteMark}, {"numOfRpcSessions", &tsNumOfRpcSessions}, {"bypassFlag", &tsBypassFlag}, + {"safetyCheckLevel", &tsSafetyCheckLevel}, {"streamCoverage", &tsStreamCoverage}}; if ((code = taosCfgSetOption(debugOptions, tListLen(debugOptions), pItem, true)) != TSDB_CODE_SUCCESS) { diff --git a/source/libs/planner/inc/planInt.h b/source/libs/planner/inc/planInt.h index 59e771454c..57cd949138 100644 --- a/source/libs/planner/inc/planInt.h +++ b/source/libs/planner/inc/planInt.h @@ -70,6 +70,7 @@ bool isPartTagAgg(SAggLogicNode* pAgg); bool isPartTableWinodw(SWindowLogicNode* pWindow); bool keysHasCol(SNodeList* pKeys); bool keysHasTbname(SNodeList* pKeys); +bool projectCouldMergeUnsortDataBlock(SProjectLogicNode* pProject); SFunctionNode* createGroupKeyAggFunc(SColumnNode* pGroupCol); int32_t getTimeRangeFromNode(SNode** pPrimaryKeyCond, STimeWindow* pTimeRange, bool* pIsStrict); int32_t tagScanSetExecutionMode(SScanLogicNode* pScan); diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index 363aa71479..c3fd9cdcf2 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -412,7 +412,7 @@ static int32_t createScanLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect int32_t code = makeScanLogicNode(pCxt, pRealTable, pSelect->hasRepeatScanFuncs, (SLogicNode**)&pScan); pScan->node.groupAction = GROUP_ACTION_NONE; - pScan->node.resultDataOrder = DATA_ORDER_LEVEL_IN_BLOCK; + pScan->node.resultDataOrder = (pRealTable->pMeta->tableType == TSDB_SUPER_TABLE) ? DATA_ORDER_LEVEL_IN_BLOCK : DATA_ORDER_LEVEL_GLOBAL; if (pCxt->pPlanCxt->streamQuery) { pScan->triggerType = pCxt->pPlanCxt->triggerType; pScan->watermark = pCxt->pPlanCxt->watermark; diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 7085c8dc7c..b9f5d42604 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -223,6 +223,13 @@ static void optSetParentOrder(SLogicNode* pNode, EOrder order, SLogicNode* pNode // Use window output ts order instead. order = pNode->outputTsOrder; break; + case QUERY_NODE_LOGIC_PLAN_PROJECT: + if (projectCouldMergeUnsortDataBlock((SProjectLogicNode*)pNode)) { + pNode->outputTsOrder = TSDB_ORDER_NONE; + return; + } + pNode->outputTsOrder = order; + break; default: pNode->outputTsOrder = order; break; diff --git a/source/libs/planner/src/planPhysiCreater.c b/source/libs/planner/src/planPhysiCreater.c index c60024b323..31d51fad9b 100644 --- a/source/libs/planner/src/planPhysiCreater.c +++ b/source/libs/planner/src/planPhysiCreater.c @@ -2053,6 +2053,23 @@ static bool projectCanMergeDataBlock(SProjectLogicNode* pProject) { return DATA_ORDER_LEVEL_GLOBAL == pChild->resultDataOrder ? true : false; } +bool projectCouldMergeUnsortDataBlock(SProjectLogicNode* pProject) { + SLogicNode* pChild = (SLogicNode*)nodesListGetNode(pProject->node.pChildren, 0); + if (DATA_ORDER_LEVEL_GLOBAL == pChild->resultDataOrder) { + return false; + } + if (GROUP_ACTION_KEEP == pProject->node.groupAction) { + return false; + } + if (DATA_ORDER_LEVEL_NONE == pProject->node.resultDataOrder) { + return true; + } + if (1 != LIST_LENGTH(pProject->node.pChildren)) { + return true; + } + return false; +} + static int32_t createProjectPhysiNode(SPhysiPlanContext* pCxt, SNodeList* pChildren, SProjectLogicNode* pProjectLogicNode, SPhysiNode** pPhyNode) { SProjectPhysiNode* pProject = diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 1534183056..dd510459b6 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -353,6 +353,13 @@ class TDTestCase: tdSql.checkData(0, 2, -999) tdSql.checkData(0, 3, None) tdSql.checkData(0, 4,-9.99000) + + tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from (select * from {dbname}.ct1)") + tdSql.checkData(0, 0, 9) + tdSql.checkData(0, 1, -99999) + tdSql.checkData(0, 2, -999) + tdSql.checkData(0, 3, None) + tdSql.checkData(0, 4,-9.99000) # bug need fix tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.stb1 where tbname='ct1'") @@ -477,6 +484,11 @@ class TDTestCase: tdSql.checkData(0,1,33333) tdSql.checkData(0,2,333) tdSql.checkData(0,3,3) + tdSql.query(f"select last_row(abs(floor(t1)) ,t2 ,ceil(abs(t3)) , abs(ceil(t4)) ) from (select * from {dbname}.stb1)") + tdSql.checkData(0,0,3) + tdSql.checkData(0,1,33333) + tdSql.checkData(0,2,333) + tdSql.checkData(0,3,3) # filter by tag tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 where t1 =0 ") @@ -912,6 +924,70 @@ class TDTestCase: tdSql.checkData(0 , 1 , None) tdSql.checkData(0 , 2 , None) + def lastrow_in_subquery(self, dbname="db"): + tdSql.execute(f'create database if not exists {dbname};') + tdSql.execute(f'use {dbname}') + tdSql.execute(f'drop table if exists {dbname}.meters') + + tdSql.execute(f'create table {dbname}.meters (ts timestamp, c0 int, c1 float, c2 nchar(30), c3 bool) tags (t1 nchar(30))') + tdSql.execute(f'create table {dbname}.d0 using {dbname}.meters tags("st1")') + tdSql.execute(f'create table {dbname}.d1 using {dbname}.meters tags("st2")') + tdSql.execute(f'insert into {dbname}.d0 values(1734574929000, 1, 1, "c2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574929001, 2, 2, "bbbbbbbbb1", false)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574929002, 2, 2, "bbbbbbbbb1", false)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574929003, 3, 3, "a2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574929004, 4, 4, "bbbbbbbbb2", false)') + + tdSql.execute(f'insert into {dbname}.d1 values(1734574929000, 1, 1, "c2", true)') + + tdSql.execute(f'use {dbname}') + tdSql.execute(f'Create table {dbname}.normal_table (ts timestamp, c0 int, c1 float, c2 nchar(30), c3 bool)') + tdSql.execute(f'insert into {dbname}.normal_table (select * from {dbname}.d0)') + + tdSql.query(f'select count(1), last(ts), last_row(c0) from (select * from {dbname}.meters)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last(ts), last_row(c0) from (select * from {dbname}.meters order by ts desc)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last(ts), last_row(c0) from (select * from {dbname}.meters order by ts asc)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last(ts), last_row(c0) from (select * from {dbname}.meters order by c0 asc)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from {dbname}.meters)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select tbname, last_row(ts), last_row(c0) from (select *, tbname from {dbname}.meters) group by tbname order by tbname') + tdSql.checkRows(2) + tdSql.checkData(0, 0, 'd0') + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.checkData(1, 0, 'd1') + tdSql.checkData(1, 1, 1734574929000) + tdSql.checkData(1, 2, 1) + tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from {dbname}.d0)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 5) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from {dbname}.normal_table)') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 5) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring # tdSql.prepare() @@ -944,6 +1020,8 @@ class TDTestCase: self.basic_query() self.lastRowDelayTest("DELAYTEST") + + self.lastrow_in_subquery("db1") def stop(self): From 333eee4b4c03bd6952842246f4ea5b539fd0e575 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 19:43:32 +0800 Subject: [PATCH 20/30] join case --- tests/pytest/util/tserror.py | 4 +++- tests/system-test/2-query/join.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/pytest/util/tserror.py b/tests/pytest/util/tserror.py index d930c82b1d..0d88d78e80 100644 --- a/tests/pytest/util/tserror.py +++ b/tests/pytest/util/tserror.py @@ -7,9 +7,11 @@ TAOS_DEF_ERROR_CODE = ctypes.c_int32(0x80000000).value TSDB_CODE_MND_FUNC_NOT_EXIST = (TAOS_DEF_ERROR_CODE | 0x0374) +TSDB_CODE_TSC_INVALID_OPERATION = (TAOS_DEF_ERROR_CODE | 0x0200) + TSDB_CODE_UDF_FUNC_EXEC_FAILURE = (TAOS_DEF_ERROR_CODE | 0x290A) TSDB_CODE_TSC_INTERNAL_ERROR = (TAOS_DEF_ERROR_CODE | 0x02FF) -TSDB_CODE_TSC_INVALID_OPERATION = (TAOS_DEF_ERROR_CODE | 0x0200) +TSDB_CODE_PAR_SYNTAX_ERROR = (TAOS_DEF_ERROR_CODE | 0x2600) diff --git a/tests/system-test/2-query/join.py b/tests/system-test/2-query/join.py index 5d5020ab4b..34f2d0ecb2 100644 --- a/tests/system-test/2-query/join.py +++ b/tests/system-test/2-query/join.py @@ -356,6 +356,11 @@ class TDTestCase: def join_semantic_test(self, dbname=DBNAME): tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) @@ -390,6 +395,9 @@ class TDTestCase: tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts join db1.ct1 as cy2 on ct1.ts=cy2.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.query("select ct1.c_int from db.ct1 as ct1 full outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) tdSql.query("select * from db.ct1 join db.ct2 join db.ct3 on ct2.ts=ct3.ts on ct1.ts=ct2.ts") tdSql.checkRows(0) tdSql.execute(f'create table db.ct1_2 using db.stb1 tags ( 102 )') @@ -398,6 +406,13 @@ class TDTestCase: tdSql.execute(f'insert into db.ct1_3 (select * from db.ct1)') tdSql.query("select * from db.ct1 join db.ct1_2 join db.ct1_3 on ct1_2.ts=ct1_3.ts on ct1.ts=ct1_2.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + + tdSql.query("select ct1.c_int from db.ct1 as ct1 left join db1.ct1 as cy1 on ct1.ts=cy1.ts") + tdSql.checkRows(self.rows) + tdSql.query("select ct1.c_int from db.ct1 as ct1 right join db1.ct1 as cy1 on ct1.ts=cy1.ts") + tdSql.checkRows(self.rows) tdSql.execute("drop table db.ct1_2") tdSql.execute("drop table db.ct1_3") From 69413aeafdfd8d44535e5f3a3c5a4b2f160453a1 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 20:07:53 +0800 Subject: [PATCH 21/30] last_row case --- tests/system-test/2-query/last_row.py | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index dd510459b6..8f616674e9 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -969,6 +969,11 @@ class TDTestCase: tdSql.checkData(0, 0, 6) tdSql.checkData(0, 1, 1734574929004) tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from (select * from {dbname}.meters))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) tdSql.query(f'select tbname, last_row(ts), last_row(c0) from (select *, tbname from {dbname}.meters) group by tbname order by tbname') tdSql.checkRows(2) tdSql.checkData(0, 0, 'd0') @@ -977,6 +982,14 @@ class TDTestCase: tdSql.checkData(1, 0, 'd1') tdSql.checkData(1, 1, 1734574929000) tdSql.checkData(1, 2, 1) + tdSql.query(f'select tbname, last_row(ts), last_row(c0) from (select * from (select *, tbname from {dbname}.meters)) group by tbname order by tbname') + tdSql.checkRows(2) + tdSql.checkData(0, 0, 'd0') + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.checkData(1, 0, 'd1') + tdSql.checkData(1, 1, 1734574929000) + tdSql.checkData(1, 2, 1) tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from {dbname}.d0)') tdSql.checkRows(1) tdSql.checkData(0, 0, 5) @@ -988,12 +1001,51 @@ class TDTestCase: tdSql.checkData(0, 1, 1734574929004) tdSql.checkData(0, 2, 4) + tdSql.execute(f'insert into {dbname}.d0 values(1734574930000, 1, 1, "c2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574931000, 1, 1, "c2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574932000, 1, 1, "c2", true)') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 4) + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 5) + tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574929000) + tdSql.checkData(0, 1, 4) + + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 4) + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 5) + def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring # tdSql.prepare() tdLog.printNoPrefix("==========step1:create table ==============") self.initLastRowDelayTest("DELAYTEST") + self.lastrow_in_subquery("db1") + return # cache_last 0 self.prepare_datas("'NONE' ") From 344340a7fd1924d62c259a3bfa012f232cfa454b Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 20:08:53 +0800 Subject: [PATCH 22/30] test case --- tests/system-test/2-query/last_row.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 8f616674e9..a14c64bd19 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1044,8 +1044,6 @@ class TDTestCase: tdLog.printNoPrefix("==========step1:create table ==============") self.initLastRowDelayTest("DELAYTEST") - self.lastrow_in_subquery("db1") - return # cache_last 0 self.prepare_datas("'NONE' ") @@ -1074,7 +1072,8 @@ class TDTestCase: self.lastRowDelayTest("DELAYTEST") self.lastrow_in_subquery("db1") - + + self.lastrow_in_subquery("db1") def stop(self): tdSql.close() From 4f94c7ff9b65f3bc554d17531e83272b7cb37e92 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Wed, 8 Jan 2025 09:06:14 +0800 Subject: [PATCH 23/30] fix test case --- tests/system-test/2-query/last_row.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index a14c64bd19..14c71ac07b 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1072,8 +1072,6 @@ class TDTestCase: self.lastRowDelayTest("DELAYTEST") self.lastrow_in_subquery("db1") - - self.lastrow_in_subquery("db1") def stop(self): tdSql.close() From 8c742423915832d9f38596d8861988229ad026b7 Mon Sep 17 00:00:00 2001 From: dmchen Date: Wed, 8 Jan 2025 01:56:55 +0000 Subject: [PATCH 24/30] fix/TS-5651-refactor --- source/dnode/mgmt/node_mgmt/src/dmTransport.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/source/dnode/mgmt/node_mgmt/src/dmTransport.c b/source/dnode/mgmt/node_mgmt/src/dmTransport.c index 6fefd47a6f..43231c7283 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmTransport.c +++ b/source/dnode/mgmt/node_mgmt/src/dmTransport.c @@ -255,14 +255,8 @@ static void dmProcessRpcMsg(SDnode *pDnode, SRpcMsg *pRpc, SEpSet *pEpSet) { pRpc->info.wrapper = pWrapper; EQItype itype = RPC_QITEM; // rsp msg is not restricted by tsQueueMemoryUsed - if (IsReq(pRpc)) { - if (pRpc->msgType == TDMT_SYNC_HEARTBEAT || pRpc->msgType == TDMT_SYNC_HEARTBEAT_REPLY) - itype = DEF_QITEM; - else - itype = RPC_QITEM; - } else { - itype = DEF_QITEM; - } + if (IsReq(pRpc) && pRpc->msgType != TDMT_SYNC_HEARTBEAT && pRpc->msgType != TDMT_SYNC_HEARTBEAT_REPLY) + itype = RPC_QITEM; code = taosAllocateQitem(sizeof(SRpcMsg), itype, pRpc->contLen, (void **)&pMsg); if (code) goto _OVER; From 6101783344379fd07368e7667170bc64d1a876ae Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Wed, 8 Jan 2025 11:29:33 +0800 Subject: [PATCH 25/30] fix: test case -R --- tests/system-test/2-query/last_row.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 14c71ac07b..40d752e40e 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1004,36 +1004,36 @@ class TDTestCase: tdSql.execute(f'insert into {dbname}.d0 values(1734574930000, 1, 1, "c2", true)') tdSql.execute(f'insert into {dbname}.d0 values(1734574931000, 1, 1, "c2", true)') tdSql.execute(f'insert into {dbname}.d0 values(1734574932000, 1, 1, "c2", true)') - tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 5) - tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574929000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 5) From 7c73d614b7d892bbb247679363014bc83c4d2aa1 Mon Sep 17 00:00:00 2001 From: danielclow <106956386+danielclow@users.noreply.github.com> Date: Wed, 8 Jan 2025 13:49:01 +0800 Subject: [PATCH 26/30] docs: fix broken links in 3.0 --- docs/en/10-third-party/05-bi/11-superset.md | 4 ++-- docs/en/28-releases/03-notes/3.3.4.8.md | 2 +- docs/en/28-releases/03-notes/3.3.5.0.md | 2 +- docs/en/28-releases/03-notes/index.md | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/en/10-third-party/05-bi/11-superset.md b/docs/en/10-third-party/05-bi/11-superset.md index be3e3aa08d..2ac8690c41 100644 --- a/docs/en/10-third-party/05-bi/11-superset.md +++ b/docs/en/10-third-party/05-bi/11-superset.md @@ -13,9 +13,9 @@ Through the Python connector of TDengine, Superset can support TDengine data sou Prepare the following environment: - TDengine is installed and running normally (both Enterprise and Community versions are available) -- taosAdapter is running normally, refer to [taosAdapter](../../../reference/components/taosAdapter) +- taosAdapter is running normally, refer to [taosAdapter](../../../tdengine-reference/components/taosadapter/) - Apache Superset version 2.1.0 or above is already installed, refre to [Apache Superset](https://superset.apache.org/) - + ## Install TDengine Python Connector The Python connector of TDengine comes with a connection driver that supports Superset in versions 2.1.18 and later, which will be automatically installed in the Superset directory and provide data source services. diff --git a/docs/en/28-releases/03-notes/3.3.4.8.md b/docs/en/28-releases/03-notes/3.3.4.8.md index e1cdc212e0..3244fa7923 100755 --- a/docs/en/28-releases/03-notes/3.3.4.8.md +++ b/docs/en/28-releases/03-notes/3.3.4.8.md @@ -2,7 +2,7 @@ title: TDengine 3.3.4.8 Release Notes sidebar_label: 3.3.4.8 description: Version 3.3.4.8 Notes -slug: /release-history/release-notes/3.3.4.8 +slug: /release-history/release-notes/3-3-4-8 --- ## New Features diff --git a/docs/en/28-releases/03-notes/3.3.5.0.md b/docs/en/28-releases/03-notes/3.3.5.0.md index a740daa76b..6f23205770 100755 --- a/docs/en/28-releases/03-notes/3.3.5.0.md +++ b/docs/en/28-releases/03-notes/3.3.5.0.md @@ -2,7 +2,7 @@ title: TDengine 3.3.5.0 Release Notes sidebar_label: 3.3.5.0 description: Version 3.3.5.0 Notes -slug: /release-history/release-notes/3.3.5.0 +slug: /release-history/release-notes/3-3-5-0 --- ## Features diff --git a/docs/en/28-releases/03-notes/index.md b/docs/en/28-releases/03-notes/index.md index efdedb6c07..e54862e105 100644 --- a/docs/en/28-releases/03-notes/index.md +++ b/docs/en/28-releases/03-notes/index.md @@ -3,9 +3,10 @@ title: Release Notes slug: /release-history/release-notes --- +[3.3.5.0](./3-3-5-0/) + [3.3.4.8](./3-3-4-8/) -[3.3.5.0](./3.3.5.0) [3.3.4.3](./3-3-4-3/) [3.3.3.0](./3-3-3-0/) From 27ada6804a3fe8b80c95835fd34f5885db0d9868 Mon Sep 17 00:00:00 2001 From: danielclow <106956386+danielclow@users.noreply.github.com> Date: Wed, 8 Jan 2025 14:40:07 +0800 Subject: [PATCH 27/30] docs: use absolute links in sql for cloud in 3.0 --- docs/en/14-reference/03-taos-sql/21-node.md | 4 ++-- docs/en/14-reference/03-taos-sql/27-udf.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/14-reference/03-taos-sql/21-node.md b/docs/en/14-reference/03-taos-sql/21-node.md index 76cb68e9be..faf73ef914 100644 --- a/docs/en/14-reference/03-taos-sql/21-node.md +++ b/docs/en/14-reference/03-taos-sql/21-node.md @@ -45,7 +45,7 @@ ALTER ALL DNODES dnode_option For configuration parameters that support dynamic modification, you can use the ALTER DNODE or ALTER ALL DNODES syntax to modify the values of configuration parameters in a dnode. Starting from version 3.3.4.0, the modified configuration parameters will be automatically persisted and will remain effective even after the database service is restarted. -To check whether a configuration parameter supports dynamic modification, please refer to the following page: [taosd Reference](../01-components/01-taosd.md) +To check whether a configuration parameter supports dynamic modification, please refer to the following page: [taosd Reference](/tdengine-reference/components/taosd/) The value is the parameter's value and needs to be in character format. For example, to change the log output level of dnode 1 to debug: @@ -130,7 +130,7 @@ ALTER LOCAL local_option You can use the above syntax to modify the client's configuration parameters, and there is no need to restart the client. The changes take effect immediately. -To check whether a configuration parameter supports dynamic modification, please refer to the following page:[taosc Reference](../01-components/02-taosc.md) +To check whether a configuration parameter supports dynamic modification, please refer to the following page:[taosc Reference](/tdengine-reference/components/taosc/) ## View Client Configuration diff --git a/docs/en/14-reference/03-taos-sql/27-udf.md b/docs/en/14-reference/03-taos-sql/27-udf.md index c0a6f096b2..4c8e34370a 100644 --- a/docs/en/14-reference/03-taos-sql/27-udf.md +++ b/docs/en/14-reference/03-taos-sql/27-udf.md @@ -60,7 +60,7 @@ CREATE [OR REPLACE] AGGREGATE FUNCTION function_name AS library_path OUTPUTTYPE CREATE AGGREGATE FUNCTION l2norm AS "/home/taos/udf_example/libl2norm.so" OUTPUTTYPE DOUBLE bufsize 64; ``` -About how to develop custom functions, please refer to [UDF Usage Instructions](../../../developer-guide/user-defined-functions/). +About how to develop custom functions, please refer to [UDF Usage Instructions](/developer-guide/user-defined-functions/). ## Manage UDF From f31a90baf23b080013060dfe954d97e16cd567f4 Mon Sep 17 00:00:00 2001 From: yanyuxing Date: Wed, 8 Jan 2025 15:48:49 +0800 Subject: [PATCH 28/30] docs(mqtt): add stable template and pivot transform docs for mqtt --- docs/zh/06-advanced/05-data-in/07-mqtt.mdx | 18 +++++++++++++++++- docs/zh/06-advanced/05-data-in/index.md | 6 +++++- docs/zh/06-advanced/05-data-in/mqtt-05.png | Bin 54363 -> 61676 bytes docs/zh/06-advanced/05-data-in/mqtt-17.png | Bin 0 -> 51643 bytes docs/zh/06-advanced/05-data-in/mqtt-18.png | Bin 0 -> 46855 bytes docs/zh/06-advanced/05-data-in/mqtt-19.png | Bin 0 -> 32279 bytes .../05-data-in/pic/transform-04.png | Bin 57696 -> 174180 bytes 7 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 docs/zh/06-advanced/05-data-in/mqtt-17.png create mode 100644 docs/zh/06-advanced/05-data-in/mqtt-18.png create mode 100644 docs/zh/06-advanced/05-data-in/mqtt-19.png diff --git a/docs/zh/06-advanced/05-data-in/07-mqtt.mdx b/docs/zh/06-advanced/05-data-in/07-mqtt.mdx index 3ffab4dfbf..c3242a80c2 100644 --- a/docs/zh/06-advanced/05-data-in/07-mqtt.mdx +++ b/docs/zh/06-advanced/05-data-in/07-mqtt.mdx @@ -65,6 +65,8 @@ TDengine 可以通过 MQTT 连接器从 MQTT 代理订阅数据并将其写入 T 在 **订阅主题及 QoS 配置** 中填写要消费的 Topic 名称和 QoS。使用如下格式设置: `{topic_name}::{qos}`(如:`my_topic::0`)。MQTT 协议 5.0 支持共享订阅,可以通过多个客户端订阅同一个 Topic 实现负载均衡,使用如下格式: `$share/{group_name}/{topic_name}::{qos}`,其中,`$share` 是固定前缀,表示启用共享订阅,`group_name` 是分组名称,类似 kafka 的消费者组。 +在 **主题解析** 中填写 MQTT 主题解析规则,格式与 MQTT Topic 相同,将 MQTT Topic 各层级内容解析为对应变量名,`_` 表示解析时忽略当前层级。例如:MQTT Topic `a/+/c` 对应解析规则如果设置为 `v1/v2/_`,代表将第一层级的 `a` 赋值给变量 `v1`,第二层级的值(这里通配符 `+` 代表任意值)复制给变量 `v2`,第三层级的值 `c` 忽略,不会赋值给任何变量。在下方的 `payload 解析` 中,Topic 解析得到的变量同样可以参与各种转换和计算。 + 在 **数据压缩** 中,配置消息体压缩算法,taosX 在接收到消息后,使用对应的压缩算法对消息体进行解压缩获取原始数据。可选项 none(不压缩), gzip, snappy, lz4 和 zstd,默认为 none。 在 **字符编码** 中,配置消息体编码格式,taosX 在接收到消息后,使用对应的编码格式对消息体进行解码获取原始数据。可选项 UTF_8, GBK, GB18030, BIG5,默认为 UTF_8 @@ -138,7 +140,11 @@ json 数据支持 JSONObject 或者 JSONArray,使用 json 解析器可以解 #### 6.4 表映射 -在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮 +在 **目标超级表** 的下拉列表中选择一个目标超级表,也可以先点击右侧的 **创建超级表** 按钮创建新的超级表。 + +当超级表需要根据消息动态生成时,可以选择 **创建模板**。其中,超级表名称,列名,列类型等均可以使用模板变量,当接收到数据后,程序会自动计算模板变量并生成对应的超级表模板,当数据库中超级表不存在时,会使用此模板创建超级表;对于已创建的超级表,如果缺少通过模板变量计算得到的列,也会自动创建对应列。 + +![mqtt-17.png](./mqtt-17.png) 在 **映射** 中,填写目标超级表中的子表名称,例如:`t_{id}`。根据需求填写映射规则,其中 mapping 支持设置缺省值。 @@ -148,6 +154,16 @@ json 数据支持 JSONObject 或者 JSONArray,使用 json 解析器可以解 ![mqtt-13.png](./mqtt-13.png) +如果超级表列为模板变量,在子表映射时会进行 pivot 操作,其中模板变量的值展开为列名,列的值为对应的映射列 + +例如: + +![mqtt-18.png](./mqtt-18.png) + +预览结果为: + +![mqtt-19.png](./mqtt-19.png) + ### 7. 高级选项 在 **消息等待队列大小** 中填写接收 MQTT 消息的缓存队列大小,当队列满时,新到达的数据会直接丢弃。可设置为 0,即不缓存。 diff --git a/docs/zh/06-advanced/05-data-in/index.md b/docs/zh/06-advanced/05-data-in/index.md index 8f23fe2a81..f523a7e76a 100644 --- a/docs/zh/06-advanced/05-data-in/index.md +++ b/docs/zh/06-advanced/05-data-in/index.md @@ -150,7 +150,11 @@ let v3 = data["voltage"].split(","); 使用 json 规则解析出的电压是字符串表达的带单位形式,最终入库希望能使用 int 类型记录电压值和电流值,便于统计分析,此时就需要对电压进一步拆分;另外日期期望拆分为日期和时间入库。 -如下图所示可以对源字段`ts`使用 split 规则拆分成日期和时间,对字段`voltage`使用 regex 提取出电压值和电压单位。split 规则需要设置**分隔符**和**拆分数量**,拆分后的字段命名规则为`{原字段名}_{顺序号}`,Regex 规则同解析过程中的一样,使用**命名捕获组**命名提取字段。 +如下图所示 + +* 对字段`ts`使用 split 规则拆分成日期和时间。split 规则需要设置**分隔符**和**拆分数量**,拆分后的字段命名规则为`{原字段名}_{顺序号}`。 +* 对字段`voltage`使用正则表达式 `^(?[0-9]+)(?[a-zA-Z]+)$` 提取出电压值和电压单位,Regex 规则同解析过程中的一样,使用**命名捕获组**命名提取字段。 +* 对字段 `location` 使用 convert 转换,填写一个 JSON map 对象,其中 key 为字段 `current` 的值,`value` 为转换后的值。如图,`location` 字段的值 `"beijing.chaoyang.datun"` 被转换为 `"beijing.chaoyang.datunludong"`。 ![拆分和提取](./pic/transform-04.png) diff --git a/docs/zh/06-advanced/05-data-in/mqtt-05.png b/docs/zh/06-advanced/05-data-in/mqtt-05.png index c43b2022ae27079731591c5564fae7f9e783eaab..8ede689c3aacaff8a6b7aa5bb56e6f712c52bfea 100644 GIT binary patch literal 61676 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 z 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
    A)_GQe?%J~w}|Tl;y+?#z>nlb1sHI! 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 OkH=9jx3Vv=$$tax+TJ7p literal 54363 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 f6}; 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 diff --git a/docs/zh/06-advanced/05-data-in/mqtt-17.png b/docs/zh/06-advanced/05-data-in/mqtt-17.png new file mode 100644 index 0000000000000000000000000000000000000000..6109cd3cafd37b706aa8889baec52bc9cb115bf1 GIT binary patch literal 51643 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 ML|3)yk?rgM0jo9BNB{r; literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/transform-04.png b/docs/zh/06-advanced/05-data-in/pic/transform-04.png index 4669d8fed06a8ab38e2e4099ecc17a1d41f37b83..a8d7084a38e03ad5dd3ca7a21257b6c58249c448 100644 GIT binary patch literal 174180 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�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 y>P)} zSojx|NG3#iYs+c0qGi%AgscZTfAN%*dhK1RCh8$3849+~FwTiq?^Y(lCEttG}_cF9mQLhCLA0K&tM*KgAWY z&dbJCuM7O#YrU`AL6krk*F(>Rx`u&?)up1tBgP(NX(j?z zufbERO8#Wv{JBKC;v()N*jnbEuIPYUvLrUcA1&ShPW$G!-lS)6VS< z&b|`$jlwJyFe%=n`L>9Q!&$xP{rO*p(qM|{scjm!Os<qu5KZgz3_;~`i<%9zgj+=Pv^_= zyJcjUYtM*X<-QU}Ko!#tMMHIy2Z4Mv0-F zG7{#I_3IGr1>CKf{y35~W6NW}w$x1t$YVB4RBoZY0jc%pU6z%YPJ18C$k5sR?aaRNObxU@q5-KD#VOykRfQ)JT7_v?Yb zQKTN99#NuT5;+xxnUs@~2n3X0RER(X3iX9?vKMT54%F#QmUF*>#({X1_+Os zi@p3qbnvvC(WdMnukh_kV`1yBYM)6g*D`s(KECK^!ou_5@o9K`>#g{rOQzD|$C;ba z_%WRXygvT#SAYyvLC{9m)057)&^2PzvJf2{zf4H@Aksr@?z}}@G@N1*Gk?+E#uvQ( ziTEB;GzF(Ir{zS^PN;26l6ev5mdV?|Y+P?@{e!lm{H|G;J#Uw*@iZL2%xru74Nvmv zNK!NyU~`|$W-wH!oI%fI)dpzhJTkJjmR$3=JxfYI(x+A9%jDZqv#>2UU0xD$vCgou z?J6`9b)*x2KgFCq-A(u66KdN-3C{vbLTB4!T)Y?xW%4LODpAa(Grj;6a zg82#m59icTD}QKpgfj%3EHh#WcEM4n-dYPpwI<3-z_uwh1wIe-Yw|FKaEX0wd-sb^ z%DDre(`H@38zkjb&%XB&O&8~OnRuju=6JJJY7>WSeSLqp z_h*^eRr?Rm!z12xAus0XOI@6NQmP^;cA4|(x^``*^%r}>5;EV2tX7!S#O|GKOGdT_ z==_U^fGJ$+k5MBfMOic&g%3=43?HU04gpg&rh|wOFF4oMB)Bn<+vDu`ZHI7BH+;hl zF%@le;fxIrCm&x1Q|GO4UaiDZ2YxSFDA&{AK|a4Zg{ALojk34>Zi(gzP=3+N9K^=5 zSQmnBfU`(t4T82B$yD^I(=Wy~l1NeK;kNDR4uX+`I73e(`x^R!!}4cW=@Z!Xg86~0 z*Q#;EpXu|!aUX~Vy9eL*MeoSmyG78^_`nyVGLwLtPsTY5&`M(S#<4s)JMs{48R^_@ zqh%Yo8ty!=+bBaDMqMv8B#p#C^MiCpgeHnwY+`=LWW^}jdWFhgTC;zU8*I&pVw$U? z^Qoo9F~G$#qgZXa?3EM=O$ArhS7GvFf{?^P*QFfO_mneS`3_h(Ju7LV`owTzJ)ANw z*Q%ATumCV>z%=^~ZTeL|LdQYI`-vlRbnm8437m?mxUOV9$RJKMn;J>p<^Y?5x|W~x z3bBARRXyf9mw~CYsop$0NSQRZQh?$}a?>1oL#3{mpQ+FA&Lx^J(j)SIxy(xrfBHII z-a7I})Q~BWHv(YLqs1e>>>7v(Q0?+1=dt5@=(c77_hV=tG&NDuY~g8I4sdb72}?h; zt)(kMP@TX_JF6dmBn-Y`f&zw@;qiAJ$5o*2Ql$%qUd3qKTPSIl%ohZp-_q+{=o+>w zthS27j>1&EsNjf;9B{C1qf^i&`2s~wSK;T$pYgDLxZ*>{bw7FX+6X2b9GabnTKam$ zA$%E~tGK(*DDN_eu35%7>aqV%WeC3$AoapysJz&0%z%=$ZtfEWW&5E^=4aym9n`2^ zy)uoakT+>H>7LUD8Sh+5F-b&zm#ygR-5BCKfqi6Og z`h*H-Pj{xC)2Zenjr=(;-Wm8c{1&~k`TZ9&D)cF?r=qq)swe8aX4gagtshj43W|ye zlz!hCX=T5cjoOsqBz_VyZeF5v^-vX3FgyvN@ZmSMZT`p#v+Hbrj0 zlm-|!(0cVz@oSJkM*BdI8(N?#xbt=}?A>MP&EAJe;KGgWwj~GNeU2E;4^(o4ucO2i4O$gdlE(7Z(*7(frY9 zua}thldf*1c4aUK-Pc#e-ABN6BN;UMJksC&sCak8e%npH? zcdm>RLN&Jk34$D>YHq>YQFsL=XRT-9$6+bd$`<1_Ok3yCzm|$p2T|+~DoVm$P9Mu6 z4e(mNE`hVUqm+5~DH^-ca5om`atvD0;h-aN5;!`9$g8rD%&fRJN8@yuBqqrK*-Mq! zuPG5L|74a4yo}=#Y5yvRh-wZ1+~$=%MpDhRkY>y-4rl=f922+o32nUY-#l5~7VJAL zhYe{j90iG%_leCvHs~#AFp*JO2^$iqOmbalz^Xhv zZiQa9*=$to-^F`}>gpLTd94Q?0exnE;wF=Wv@0Yo&mL<(I`erC&JwaZG)N%a{bU~@ zG!7N>#tOuqFHQ3^YQc-E`Jn|fZ4+dmKQ(~Q4ZRv@HYPmc@Z7$^Oc01LfXy*JvIP5T zTL3AFdx4gi*)9Kz*Xc2epRjd;O8Qr7O12xti$7ezjoR?xaYRAszdI~{Nv$dq(iu!v zdt`0&Ip^LPUP!>P*)_xXOnZh(htrPK%cl&w+yety8B>vtiOe<5@L#k zt*vOw#Z(01HIlB=|JVuv=(I1m(r6rm*R}%w;e4Tc8|mzv{;u7UK>nZR^&j5ZUz5cF zBQesUd@idQ|3`)O4>wh#;UiLL4GEP0{t#a|DpsXv3ei2c*;;0^y+W4)_!9gl1g*)A zfIgfwnk~l=;7EIDBXzJ*bXmK zcEz;+2aAaIyX#7O<{S}>@ozte>LY66#&u@_gGQ07 zi^6*-{rwcSLZ<$#Vyi*0ZK#m>=7zktVJ5nuaW%P_;@QzhVfrlWzkl^ajDRh)noV`P zYJ3tLDaUs7_bfW)oCi#duQD*syjcT*`r`br@>HaHL4DhE? zjsI)CqGO@Yda!={e;u6zv@5!ELNf@r^LyyNqS&}3c zq0XP~wXE^nMFf_HX!G8~{6U(#%BwYqwzM%|W}lahYCre`2GOgdL}*GcUjLR&f+A6{ z#QIM9g?gRo-l9XPsDjK;X>sP%H8hliK1X*N=EO-<1G+~gfi!*d5x6fEoyKtzNZ%Ff zq#Hfh8G!R|oDY^4j`s+__%ss|wtRDG|30%D36;<^3*uEM=D5G2j5lI7HaFje=`!zV zhg)5dMTSK>&qV?&6A4x&|G^jSX8UXNsX3wAbmGh}tFKD^4*~wy*Flv;ly{24{>NS9 zk7S4z)W*K*_V+>m2;ls6Ghp(q1hruOQuY^>zsuu42=Bk-DHv5%o;@fC;~!MWfA9VO z<0qjFugnyFf|CI1p32MYQ@fg%=i2r}5feL~TP@twO`)@7)>9$9YtN(2R zf4{E^ei6L!KP316c>8~vl2itKz@(jDmgwIlw0c8d5+MOZa&qP!>OJwbDNb)&INbX(C2y}Mp zR&WEQL*hx1`X49o{z%L*60WY%2McWz4EVZjz6lT8t&pk5o4Sp5#b=i3r>xBcM?HB6 zlJ|nIz)0)sjLjpI?4*dwW@YZW+Hf(>c_iKdbCx;z^~S+b*z`7m2Sq-myX@P?E1kIg zmR`x#WVM))Y`c3GQoEtYQ;7Ar;LQ&M!$8cv^LdzNLP8fd>nuZt*SBge*K zMQ)duMRtGhJA16nUQ3-lyxc4>I@a0LvUls!nqT(r`tAdHz3C#KOp1g=^YWJL>@50y zrC9gI-o*|iKfs&0ye%6S6$2vy{MEac-mnPY{Nga2hCF>R*Cf=UEwoo}x=A`WN&1*< zcRqK1E7x%#X>%#Jx2a(Jwr`?q6mO!7dUQ*Pd6(U;X{p(&?7PF!tm9oQ-sYN@UGl34 z9aLlaj{B~njryLKD@T37<_xQ4SED22$r(rP!1(z1SMyutEfIA53_1nx7xss6A7UgD z23~K@kygddRixjWY$CSHcDBBKLlu05m%2BW4t8;h&oUG0%LZja-!D|N5GalgJD zQ!Fznv+RjAzM?a;=&wte7QqA;Ri_I}rz={$D@0f)EIh~L9+z{plo#>h@V)fJ%M@CK zI~T!Tb4b$roIIa4b(J|4?C9deQ`jT3uojuX;Q`B!_eqRt0&6eRnm(4apAG1y33}x^ z@6Kr3Js&4g{9I+o@-k|5w&Sqxx(gCq!Wb9UDAkHchLEhZ+F}K7oP9+wX*5YHW+c9! zb1F=Sd0$5W;z#qxb9LX+JlRuRralNeWzoH}XKq@)p(MWFbtisaAXRVERu&2dzOr>SoQOUygE&7#hXEb%9#&2j% zy9N6~MP;%JG_x=lGo3SiIiWQVH` zklVhE61n5}p&``$NxLF}n69TZHp;I1Jf}zec^F%uikNXFnMdcUezve*$@kJhuU$XN zA!}uG-w}nu;X0LN+9;9%QpujPgjWMW#=*D=VpGWm){qn#g4py!We7*7PF^#k|2diD&q-$Fas4bYErE zbfW!j8gbf|=W;73G_v*CDviglW~M@8$xx1#Lu~Ln&yiOcTLxNXii0Nyyb(^-s@_J+ z;4zogoe9x-r7bkxjK)!%gkQ39_I~XrZHN|0)ri2!h2A-RrLXAjd{Nurz8@qW-w{U3 zL3H#Rwsx~@v%3f05A0Rn>*NA*;Z1gUBG`lxtIOUDH#z4KsY_s|iYuMK z!1<_AlX3q1gUQ)`V%IMizzyo%aO-pGR#~3yhJ?u8z(-*LCljXQk=u~h4hjch54%!9Ofo6kQYKZ*4{{F+D=Fjvp^R2fqoloG z`vCyPJ5aW>5@zvh{zRX6oX{!P=P(j#Wc#X~DO8`tX3#Xc)+dL~x=jefIWfP#EtF;b zNgi-d>7(|umEI9nOsZTI*#vzyw3slk4I;3OaY-@uDe|sbK%gR$lLd}!n>;gKi#@bE z?=MPbJ$89TQaRoU>Yz>4_9j>97tx#&@WecG^VBJ&-CqgMRT;ObQFz_)EwqUnU3VEQ z)?0rvMyA!`I;cixEA9(;iSq0E6sC;pjJ!MF)&@Y0?R3vRB1NAomC?9W4fgSBU5XLE z*T#)TJHV;yyxC%CxyY;I4ZjyZ+lKL&Z}8X2;52JR;r4X$Gk7-#))t}|W zb%aAXxwPifTcD{H4PmDVGNC{EJ}F5yLSjZ=kBGVVI*T$Vh?%>>O3fkSkzH>I?N4KyTk=YV`Jd&7yWhQL-fLw!aw{r^ zF=N`-I{xx>y4tDdwe5GQb-eWSxal-71G`Fi>IvhDh`$x*6Us7SpZ;L$KIi_BEBqtv z$>?--ox{rCu#pmArsb{BeQpxeDWXq2`fV~fDPPLb6)B&0bSS{R_7@ zH5<5UY;CFK0%U?t+@t2^A5HprF>I7m>!!G%U1dS&bRO1+QMtt1^U6ctwJ*|f@Y zZwJP&45Bo6F*s=n24n#3dH1V14 zc-z{Xf&T33TLG8KSKc#8Qk!g)+37Kft{0zq>|`#=Q4^=vmqfv0>-icQC?& z6BDx3*C7bmO@51!=tdoWyIFMwM_$RiKM=`(2^tC;vqc?h!L2ZTdr$L=&qp{`gi2t4 z@5H9yXPybl7mUy&JxG&u(_!H4*zSDKa%--S-R9a-uJTMm-clP)r({`~MK);-wZG0{ElkF49qCp<_erKnQmvN2v(+E1MO;jzHWn`w zfwBze@Dz|#OCbznc+~{2{hY3L)yhXU=F57w33gfeMxiL(SF1ly(p^Z+Z_)zGWvKaH z85EQ~nV<2}22uI&3UyvU9Dvltd7`n%bG5!5qiAu(;Mu8WA4p7(R6McxdWS1&OxD5fh(e)E&)p)(zQYnHLN;vk@$W zXqBegV31Q;($lJ@?^8n%i}ZkKH9xXhFei;8=%9yky@89 zeQv;hg|&0N^Xw-Z*8QcnjN#R|@-FeYYN9zIr8RL*V<%*3)h84gRw_(W8Uw5HmwCO^ zy2A??*VZZ{t11Q|DTXI9Hw7HI!!cl!7=G(LNu`2vstV{Q=oye3iP$q(@2#TA1mwc)xTc ztrUJxl0J8*f*->c7_-_ebBj7a68y=h5`E<6;&^E#(iD^gK-XxD^K0T3lIz|Z6q?dY zkporO^t57ecF5PUVV+5v`FhOo{~iS7s(ip#%WlB9}ZAM&O zUyy1pyXY(*e^A&9F`X|4(5k83auvH{1?XKeD+n&XZAL{3ij9<90yKmreyJa!uBP7w z8@ddB*6VED$qF;=`ptZva!~ahUHe2$`A+mw;l@G_^WKK*;t*FtNntdRf50w&#p|4w zoSWx-Lq5blXaZN0dWS#2q>mCVKT9*AST=+BlrG=U=-yu(j@VZ$FXw;5lH`Q};PFHB zkB$PS=YnCE{FIa1UaTMAwtY62@C^@hgve-Uxd?XtEZ}X{YkY_$H1>h5-(K!Phk?fn z{6Jnx8e(rjy4Viy@ivB4<@*+nFvZdLIU1pJg{X!Y^bOWp`Fy1e+FNY8d&`?(^bWX< zgVc{ieIMmE7yAj^WNS{`xS5z}KNjuR}x2j2aql z6bjfQ-Z{BTJ!sFBz?1_e@RbwkE9rY)(4S_0e3z>8V9Iw^%c_H6D*O`+ zb1wcRqNWm@)fY`pLt{gJDEs`ZbC;2Y+F?!u(k&6T7w1%9I z^{Un1Gm6f0?7e6-JNMVzu*K?Hy|Hn>{eXv$upJPd&Cq1eY5E9;wAdtbgg=LOTkRf& zT&ri#%$(M#Vg2h%|rSX$0mS0 z!scw35X!sD!XYpZV2Y@5-X1rh@wz@tiOOgkxo_00(q6+zDUYpstMmrg{&~#2V5q+t zd}KQW_s-HE@0Lu)BG%o+AEv+=M~$xs%(>FjDG!}tv=fR&(VzmC&ra}W&iW0UyJg}J z7o>WvpQAp#PKJj-qo?rdIgs^iX-V3x`j`(khGCTgcwA3!A-*INAvVwRsn@&^^lSW% zazIda@vO|QSx)TE_SYY! zbbQ?lqwy(;0ZbE}57ERrWK4di%K=;iil5`+0EN?-N15`s7?g$h$~hHKaVnAzPwV!0 zR*_szgsl2o%Lt|&rkEzWpkM9*AX0i>#%a+}J$KZJ-+me*@TkY_uc+r``;l+i!SB#) zF8R>H66;ESObD0HoOjyEx*5;gck0H|QV9~i-mR3`ewDJIt*uu`=&Tlt)5A!l{Wv$6eQT()KJPhtFT5!phUkySoY z?Dy*-TIOfjC5|Vmm1Og6m3ou_z*}OH+ZJc@){A{TxpF0X@uxB_z9SoZS<bSdF%K`ZKa?f4 zre8vsn(VKI98X)K=%fbgLmqj&nv_ygZE2$JuFF|wOJ#SOnc}#;!RxQ|7LQmZ$>;1Q zg*0P$2gPr1bnEOHA5!GHu3FOo4rs9SF0<@tQ%6lt=MuK(mYgu9N4FGKgG_cexZn!&XS}Sn6HqS z0>LVg=d(bry=aSJ48rq(y>#D=W!^xZI*%_fOe8ryG6&m+>FtU28I?B`P?bKGv zF)p9I;m+E4b-}jZmK6iqz=uPR-Uan4J5buip>E4v;k^=)l=Cd}lu~{q)b~&!=BLZ? zq8ilq5{>wAweBypB#m){w5mm^veP?g(5EHf8p(Us7dr3nqAhq)vN(^9q`30N&;3`%{ROo%9-4gqA$2kBGZL6;&=qxeLfoOMZVN{i>h);VvNzzh5kyUxcCRnhhkOQU;}GyL@!FI*i?;yze|*@W z&F{ZVH*9k+{b;ynaO9~((nS7IJ(*VBe#tfTM#~_0=X4z!n__$~G3fg!8@<0I9g^i* zyE_>ePSy8f@9W_&?4fQAj&~eaHkK&a!gihSg&N&}?ZPYv+)e|r36ZE#k2oH_(1jwj zAT;~e5Qt6`8FdrvF(_ykmM!jm8C_D&XdbFOSWOL zDxEjuz^irPU!n++0bT)xw|+aPIvbE8<0Ru1Va4qahi3ORUh^sIe#tT7&vW2=!4^Ts z6)i#xq1WB*aHCnJV9Dn4sC)`{gl7J7gs{M^_Z77Xb~(~>?au=|j!Qd(<`35iN?#iP zf`7KN#-5|RJY`^_o*J!5B2aqN!%Cu$qj}8?k4NCi|jzxM?Scu`$PFh zt}n4MV$AkZ+4SP_h;^iUp%0dItj0Aa<6;%LVrH_#9DW5u18kw2k14GR73qujdzY8B zR{Nh0XHyw`G;IY;RlnOV#Ze!7x9TBZlrUs2&d>O$|H4?B&p!Ixzb&U}*@sb@QTg?P zDoEFLKX7y-P7U;<&h9xOyw{{y7g7UK7Oe3r2k=p;OCt%MC%T`1+piqd9!j`wOlYjI zP9^LuW&naaMfZmOZ0?>7c3C+N3r1}&^C(`uq}YiH!zi#$A}b*{>`26fiRE>YGhaEJqU=K@AR3@iT z>@%XBF0M%mE9aa8f04vFw!3sI^1Kt zE|cxLD$RwotQ{|S6=Xy4986aHs0N*(w|k+7i#?yJ9*%d%#~mG>$$xWbvx^nQwLJSi z?|)do&(s8p8N+MKgVv54Y-AJ+JD6n?2V73>ek<2HoPQED5jI}sU#+uGi0qDBUu*i5 z=6bU`*%-p)b>7%_R_2Q7dG~asuHh%V#k$Opy?@2nmE=lg4J(u#LL;~U6=7)aU=B1r zd(GLMA2?=-(FW~DFaW)w*E7skkot6wqwbSem$UN_u4ru`#Ebo@)3bU$bpyYP*>|^p z*yIWzes)F$Vk}c_2JrmthQ^$HETL!boC)NeH*34Zq?vwmmfQ6a6LtmUd`?Q+O3vLu z?%vnyESocU`x&*TN`aR#u<3CPd}#|GJ)gF6zd&uIor1&R@i+dRLeS)m6m%%R&Y8j3SXQZjCLLKY-q{_zJ zmWC#f8Kf7(1K4b5B0R0Hx$y?z1irCeXtxS*K(BdO*`RFDsBm5wg;5b0iW*Aaa7I%b~m$t%L*x*B^Q0~-G zL_^{+IIiiW;<5rWCfGuGP0r*V_B=aSg|8d@SjX2&3>d49ho>*AGC4A|Dzd3 zRqg1ulC#Lf&?;7wR`uMStxBPf%JL~L*w5lKyn@mL4a$29y zMhe{XJLkp}OT!xncMq;Jys7&1HO5Hw-hF(-s$o#!!bn8p$3X^_{~#@JAg==< z`qS$nO`6UMkOAq;INscqskkP$l4N2_52F3{tFk?coLnwSqg$N-+aAHnD)qV?4-xdL zowEUzH804yk6O7P<)h;zMR9{xwbm<=c)MW-1UT^y$FiZ+Bxss%5SH)b=n=2o_kE+3 z7z~;y;}rQ!k%UxNrD+lT=)dlIL^Z5iw3krS7K=Qc>92PU?X3^Tn!ieWYbdOcBW(ze zRJTYDhma$tu^e{l!^VJoe6;9MNX+T}M!v%!(=dj6UwSo%wJ9c1$O`I_sXksQNYR{R^oVkB*Z1uU6A5=MOjP^H9;`*z+mQ@ zew{jJn}IzW%dZF%)N$Txr1B4ZM{})ss_>8jNI;0sce_@!{-aFxZnm;Qk~*OXo}SFI zVH)M>%2zPcXrORB3J$vd(IVS*UwcrSxETY|Og=}O@qvRnYmIxIXVS~}xCTO5*((%7 zeNu9RO?f<0?!QGhwE1mSyM~-(zr_Dp?7hs=GLtk^^Y?FqCH^_G|GlvCmj#S=k(h@u z+qCep?bd}fh!*uIQ+0YC)~l+SS;lnK;`KG%tFZOJ%R5BxK(k7lZ*l zcNy_Rni#%VVmE%ZTHt;DVY{R~`zlV-iZxlqcP~_#`f`nx&hVtye-^uJ+$M3(pl~|AMC@KPsPAw zrn3IH>+l>LLJlLQWABsT@}+7$lKs>RIPjbO-EGc_V*lshR7QE? z&5fQMuulD>bpNzn`2Fh9t87+9X3Fn^SJ?B8XHwlw4xKoScO_pVPmN-x!6P#1xQ|&G z2A`75tey26O4np>_%JTSBh@gaOZVW<82XT&&TJ$kfFug+`K07PR9RK(8JUOa`?@c} zaFoj3O;kI%fi<=0MDEUI*FZq}IEmBQn31Ed@?`;bt#^H<`N>VmFXYV_dEIspD zZK~;T7nP=??P7ZME(Xg)ZskFZvz~KQ!Mo%aGz20tY&Tb6)?X<|zkNFk^jd45ydLFy zPD9{=3Z5jkikOqu%I0@hjZw^%AtJc{&SXjC2sravKkW0A+aY2D ztlj+);lByqD2yWi_F}+-O`%ofV`ZM&cd*2OJ4jpTpxl<6M=GB&ZhXGh)<~Pgpy@Ox z%t9LdGf=?*nX6jTu)Z8}Id@v_lFJ*c(#t>k`M0KT_7=%x%XBMe?e6B~ z>gGEwq}>3nXor_kg`pMGLyDNs-VXeR2BHW}Rf&92#DFPP zRrzfnyi?0$oS(&c^pMwR#h$KT$W7PAh2u4@mzWc<{WAF%1{GEXYhNmplQdfItM;F6 z>|_{dUvY-uT{u&>;$T^OPtOP9AV$wSbW1 ziwx!Iv#SN^tsiMk$bTgpZA#~SZk0~1IRXeJ%bNjxgFX^RobRtt8-H4!L&I|$YPyrU zEP}a?pqSWR>V5$#v%}rxEt>*{fovJgw=`tP7Y>*~P`cbwg-}n`L8Cs!GT8ID%8CuX zFCEW38Mc-BHtRCWdGY}v*!QTsEqbtBH(%j7vu+UV=g#E{&r)7k@$IR{6hnitMtpiM z#yJH=;Hf`LNet*#$Pe0~waPn$J0Iftet1Vt$a%FtcI$QFIXN@GsE2spt?p*75RE=i zEi0rgp#C7`53QmETGM={P!p5qiR6k&h$m^XVGO>hzl4s?}pGG`t6ng8r}vMH;}$75LK5?9-v7*QAvFs;@YKn8&kk zW-^+{36=u^9v&yLwBK5I<$Af&EuBSaj?@S+t(Gg+-I+1SktP*P4@0E4+z`9)bIsr& zDhLGB`<(jC%m-O=o7eEAK|>!Ycj-q|#Ddo7h98bq%Zte4klpztn08iH&Ag4AirG!T znqFZtmP+7d_9;>DQ@)>CSR0MN7y&u=35t;mqCSEd~sZVil{%m@e zYS}CABk6Kz{wuON0Hh)&rcJ=U!oj~>Hv{CvCdIYy7xWTTi(8Ymefo2M`1W(1&7i&` zWFhJxLtvYO5~8c_Qr^_W_YF1P*aRPe)Dmb_OymvtuXXi9Ey?|}^fCBcW-yepA))_p zo?hs57E*j?P-Vq*9KA%tvvtHJ_0@}<_GBa?JrzX4SIoR3G^od8kQ(r9(ek}#nKfh~syn}n`$gYqcXH4FfO9C_)hJT9q4BltaWVO9ODNw$yY z%UgY6l1D+G6xkj=?sXT>MFyg|=_Zygd@q*@+6sfCc(oXI{yu^S*iPfw9ttVFR<_Zk zUa_w&e#>SlL6QmNMJdALqBzMY96k{^6lnT%{;8z&`k=U&v*n_FU@MJcf~t?7KlWN| ziJ3BQx){1a{a)PNi*&kXTztIJ(Rz&qR{4GLy!h|QgMTGK8zNma)a#D0ZdG6>>+N&K zVD};z73m^#2}#i+%Q!-lPDKFzN}-Jy<&Wt>;UUZ|Xbm$^$LO@34RoLWFT;-qsw!jY&3?g#YsfkncXxL!+}$Mv4;I{=0KwfQxVw9Bhu~gV;ZnHESNopx-FNrdx$m5x z@5gJcS~b?JTB{awjy2~TWAxFx8J5e$0u?^c_6QV5jUk=mmi zrWVfNzJc-i4ZUrs6jZ+hitEZEFqJvC`CghP*cPLJWM;T6PXsNcUanlBPC9;Nm0NRG z8q&Tfjw#%1HSh^HA;LiHXpEx-Vc3NC&2o{|Bh6>q1|=~?hGpg{w30}5!2+vqO-FhJ zK3mOrIfIpNQ3>ekD%8hPt(}Oc^0x8PJ`)%*wa8Z^6ZS?xU6Cy#(ND5ZAi$Fr`5)b; znV~})!t@lRnWn`9Vt4+YvsEJ!N z)L$cli?_DbGtd4^#L=xaIsj{O18IQ@-UmyFFb}OAu6-`^CJU$*zRb_AVFj~fD&I`= zT%%@Cu_UvsIcK_7NAw>!y4Y;n>-zW;z4fjW>!+$(69YY3D$6p(hdnGQU<5nYzBTs2 z^?F}gzgSYtdpOul&_8QET1Gst#a?O9e^z?da5 znD84YqvQ`OI2f8429dXnPGm`A3087;_+=IqE|9UrtirtHY8~Pkg0miyZNgFcShOwdiJMf!l~_4PwU$sJSUSr&~zNjn1bTJF~>7U-tMlEr`RQ=k*uDU zmy^rq`iji%&1Wy2clm%WkJoLt6#0PnPE-x<=IIV@_s-@3uvYBfQNcoY00b&xYy_ev zG0VD7O$B~op@VA7+_D48DAQ~?_tb>qnED6MJc~ct6qvX>o8)K)V+)Q@Ti|sx+Vo&Z z$Z0N4eTj88`k<0hhm=`{Py8eINMlcpLxinasqJp@pRZ|8;45lMiPdQHccp`eBb@a& zdekAei2sG=6aVCed0!7%ugQ}p7h0=OedKfHhGyrIFf>2t?8DJaHPSvAYyAsg_aD$~ zMVQx=WC5&j?Rzvl>NW4m_u4Z{Ved(%qQzl4D16VdV%~6&=&C%c`xc?CRg@SpPB(h3 z#?np5`+8d!cHMm<5n4knm;*O!!tKp}K$H)N5E6TEt~%Sg`wgsENDP1=NxTRHYsjbz zFF;}35b_m=4sLI`YburxjTf5Q&3LmL@coq+Z?bmW?q}%j>yUAg|L&%t5ODJKWj}pj z66r+x@9gAv2x$KxC<6M2g>)vue~N&v1zky!+{U8Qlvzc{c{N@Bd0A+LoCx0&@-1UC#(_`n;g18mw z3+4I?JJ_k0tG+@o1TVM@!7r!jE}-gLGgf!D)Y`7%DK_g6IqgluSU$hj4-SegPx7@?LVr)0Q><5 zBQGgXl0A^J2)zgyFK6tgon({6c6#1-*Ll=;&2AyGs7X{2-V@QL(Jg&7_X@lx?UNWy`QfL0~x3O<#&I7NTi7f7ao1|5rg}dG)AM0o2YaiA6eZ8 zDfGfW*-E+ekPBKV`Jb35f;h};VlvY5uktpT;{I<$okqZvf=`(wanG{!D%j+U+?+Q> zcwF%+pQitbycmo@ewPRTv*`}TAQ0-cTKr{J`mKFJ8v)S8R3v3=Y$R@_?Q5vBz-5OP z()Dn_L>YtP=jC1;7RRq`su7V?Rp|!rFnoQHvjT1Z!(LcG5Pj2)NPLcwqgS+K>ytlZ zJFRRo(P3q=NGD#=URTU!p*r^62%2m(eF8l#PPLdgHDA}5nywbEks&IZ5DLW7W-QId zZxnJwqgsC%geE58AC6X&$fG){#7X{t$?K5Nf!UIvk#A%<9ej+G?bT}q7-AuxnLtM;3A)hx1Nd-=4}+xd;0T$U;E z>BNLy&2k^;ml@6W@3$Ui;-pkmOnP>JVa2Stg^BY$F8NNm)oD%X*Zc|xmtS}@AJ+{#;HO|W-Jd2`f?{fmeM!#&+fqbAf#7q|^-h!BZTtjq zJTmsL!iw71KXXc+Pv(mqq&*>r%j`5CV+K!<_luIu-=Af+Yo+=x68D>#B+1^&$`8HA z>$EP#8P8d!Q0Ke|5fu-$)(D$=zsNjGB8y`+@AN4Dw_9B|fSW=ih(YWek4rdoNhbD? z-&<9e=kCbuRUPwLWVKzSNV%Nf?%gXr@g**1jYu8h4c3zzMs?Q_}$4R9?=BFHMPP4N& z+^$@}duO?LVptxjfcyHeGEaH=ipNq$mTHAHo9_kuCA zt^VfR*%~_797SpMOKsD)8&U8qW|MD*28Rcafv_Xu7USN~j84ch6T^F*5j$ zSk-k57q2rsw!^Z_hIaDwridyU(pj5=9S@@kxz;V(3!Q&5hnA4e!Pj~f>!J~i#~(5Z zH2<>j=6bd*RwET>;Hy>0cG6X>hT~iHkan+J&a9b#%*;RLCc4oTRLvp52i~Y1Ey6)2 zLtCTb>mulQCORL&P#ub?Ijw`tqGf_^8tFHzED(O6pdLc(#}3qFYH=IOg+@L zsm~a?rQ4GL0LA5E-6Eey_2xN(ZjqRq#AUk#bH1oX{SvG>C*zeEh@86$5pb@DO@(<7 zkI;QS4~ABlZV}(PTocU8g+4`|8?u+|CPh@oFkjo57Lb-ZSHlPXlpf&vm7QYG50{!$ z_}5xzVTJXPEHlf(EnRGPdkyS`!i>k;0TH*G5sUGQ%zE?owyQH{8-qlyNW_wSp)k!W^ zA}+xlwP8bHu}k2#89}(cytXscUtU~eA7GSBVX31qP~YH?;ZAci-y__s%&p;e zFth~`%DO)HG57JpKV13UMV8}^I?@CiO;&L!pHhnD7YO9Ear8l9bv5o%SPi>u5V`Q4*{Z&Mdq?z%9quhJ_uVKPtn zGf$iVT*M`9#hqpVogK@!)EY50pC_npBX{-%Hj5*4zdL?eUU2iVN>!W?Wq&hm8*q51 z-s|Fc(t6WeNwcZQCr%D1s_fJ-vyiA2N5PvMb-l)&=?p0Te%K;iM1Y132Y0R}A}D~( zryCqxT!iy^i%etEE(+bR&1RaI`xwkMEuyvPRs#ig{+WBPA|PQ=mdawL>JUQuY_(0J z*1i2Lm>1^^YwLsHt<^^6I=pj@*Y_}|OCbYjfSXO~>!s>a)m_y-b9jh(Y7Zs;XBLaU ztZL9bx6nFz)7g|TJWV^lNfez{`xsr1q5#C_DG8ZyMo&C_BV;gO;c;DN3!d@H_GtoO zk(5kyv&OcfB|h&gw{06C)E{lR_)x&17u4w6OrN*@A@#n@wxlOoD`}=It2IWVyhNf#E z{RCHa>76E&g();XN$_!2^wV4^KJ~O|LsBlTFBdD|7y;2E#;$%}az)p*i_%K8FJ&+{=tlR?A`av9QSpC^y+eEjz! z7M0#`xIfTGG}dl99$9Vc(^n?Wpd^*2uQI43Es{GFxpWNfmrxk*tMOuCtN- zC7Ppei>s!O>D#a0R6`+K><^=z7juJ|PbFw=d>}_;&&~0R?JY=w3@hdV@sz@Bq#l-K zVOJghevN7tyo7;A!36?ihoF?Zqt%J0fJkEMO-Cw4X+6+zEV;x!`^06Kd2*^5!>o|-I?>-D1_&=`m2@~b5agcZf=87>%u~QcBkvr8Qr^nq~ z$NOt9V#2Msiwzz`4!;uW)>3P^JAWZwlg~8cK_!_UVo!Z41XY_|Mx>_f9y31AST#T7 zd6mM|9=D89+YhJ}HuE#y&XakWic6F=(BlrHB!OQd{35>_$fwiOvIFHXjscwK>05Gz za_<9o@f>wm>u-GBPQ*>~hzDHkJ&+m7bpPDA;9;Xz_{_j5M9plb;uU8z3!G*5L>8@K z+|R}J(O!={l0S^r*m^G++MK}N&#?C4t+i%CWz-p<+rp_dV8wHGVln4ii8>ZyyB?5?>SjFCz6 z)KNc2JwGb@d!Ryt+kfMM5c+{31m1*BN%;+qe!cq-H~*{@U?lszc-M=H=d?v_Q5MU2ZU z8E1|dPs?f^tq+#GPYyVJ?kJ=}DoL-P3E&2mT)oDVg>ncA9)ytZtU77`#Fff&8CBx_ zh5A(tTtsNKsPPffT9?N=CQ!-p2EQm$gmWV@_3YV{0XyTY-rQG7$>0;MK0wZ4awP4@oL{0A;_Pe>t&J-bfo z3k>e5Og{Qo7l>VX_+k6F6MyGJrjP}Ml-z>U@kB)YjpO;J(7T#?El(>suR;U89QIZ* zpJS$=Y}!v!slq#~WAD$;8egP=_&nL-vUR8?_CmD-c^|me-;ANc`e6rI0%d!UEPd5>r5Qvt@6>uj$ksFESu(NfHG{>#`@q!|&FoY9 z(`wNH@<_6{*epI6w9Y3CZx%9gf(*=QyFarvZSqAgyqO$FtiBIVs@x`qm1{Gl7LfoN zQ~JAFV+SP(NyK?n;C|uB&dJ3K0{^%p^z#jo6rWfKIkoa?LSZCxy(eU61?v4@E`X_; z*}dN9D{w@0+V=kZ+z=~TT@rfFA7te8D*B$50W1j9pmsxhXhtSaEAGpV5LU*jpwvL$a2dSEc1vrbWYYy z<5#^<-`T6LhqLs?qYr7|jzaYm79x^0JFlE)V#%}jo+RBDmnxpp4KRv#e~V>2#=p`B z5NDjg5A?&XmMYO!9q=@iub#%*t$9l<={?vZOngMU8I5bf4B^u6;E?Lbs`+WfbFj|{ z&dK)LzVy>OYE880DB5yYp&~IlV>!l%_?1$@*cT1sJ_<~N@8wFZINo)CHV^jMshG19 z4(8U-bDy)b@8~$aFqQr6G5~api3UF(u=6BPx^20D*cXy>o5&9Jl8AmV=% znPgJu&hfHoxqQF7zr|BlF`vF#LQDFw0yuFPX8YEoIh)6)M%>bnZ|*(*E|h>CfYRVR zEg#u;P>8y50y3&BY4ynP;@_ps5|UcpJDzx9nof>Dw()jrf8s%_uDF0W4jAkn6Jiv9G!#1b``tDh&#IfL z$8BEkwrnDX_k~fn${oZEl<*l+I2P_@4C>nK$*Cx z`#%0MV)9qZ1M==l%Jhg1puh^_0O}4uM1^A;9ogixkL;VA~9qwNZ!ov&_y8$n) zPka`0gV}P1l97akbdEMoJ>-;7P1Hk0ZWXig=zPnD$)t4EM>7g2k4T7f$Yc2MNL*R^ z`UhqY#|nB#`;3~38}IXdcT?}p%F3`PDXD#vp>ExCwbKzJ>lJAkp_5V0HDG8OMBVHT zJMlt#)F;6+eA2FEihbRDo>L${(c>Mpwkq#Y3f@Qi7O-DT*^elY$Znx3r|&(g^rruF zWLN~lFO@65Wo?}_oZmQK(f^SmX~!@|e;b+B7|uyYma`|fE_hR!>ZxWdCH^WOdT zF)u`=ht;LsP9TyYpSRP2*s4dF^aq#9+J=ofd&KyH2%BclDlmAbq^Ta*k;10&d@~d; zBBHjPDfbnxT|MGU{{5<)att~NxRR%%%|wzg3K@Iu^dpo&a76rvlBeD@HKP{qt93Vv zU~%j%Y#fUmL&>K|E2f5ZgG#iJ%Y|Szo{vF)da)(RY%`hfM8S4b{xjZJ4_%K!(Q3e}a1(WxUwoDaaY$WGOS3|zdp8nO?uJZrl;0qA> z?oI51GN=L^WtUjxN2A_X=#0c@b3T3Q+EWb2vdUkrM@2)&nS`C#b8W0ZFOby0%bi3H zG5?ut;lMs+vJpBaE-79Yz%Qo{^y}?fXa~>ob0iY(pesct zB_-l>B`XbfmN|9tiM^Y@8{tTmN4ma%E4_q;AJ~)E5dSEF&1l45elvr5ZS?JcPhXpq z{SaBs>=+O`|1Rg|XY!8VpPs9ySLH<(D_Ul1d_x4&d)Tt#f+4X7A6ARVAyXwa-i2RK z{*D6F(pNwaZH_7h-u>Zm&JUl(s0}BT(3g5( zjBemMlXaivCP-a@uSo1wdzJkD9`_`QM*K8dX9jxK8mNd!z-7c$T~|HLX|U^Qq4>kx zH*)dIB25JH!CG$p)vPEa;>D?gFUJDCyv}Jnfq~U9_2%PZ<0)E@9opGhKfp!Y@Fmx66y5H4glnc?+17hoP{#=0TPzn2_4dg{3#C7;oaDcCvtA5EOb0#9s<6^rIVT08DmW@(Ady^l_d9hd8A)r z1EpTyT;z^sDJPj_$1L+{qO5o-B$Bb5HU zQhfX~_voKnQh;=N7_SDx`5xEB+^&jRUKA&Kbf5Kv6Q;xuvKs=0o0ia0`Y0#>Rl)ia zs;=|aQ&kMBkCFZIgUDW>e*O(8jEHFJ$sEStmt?BfA3h&TI2zSIhe}!nj#`@0{}RLt zhtMA6yT*?Js)5SuqyZ#(lh#ZPQaEjQ1R=)^kkR(}=LZCs5B4XUwP^dO&QM}F=_dx- zWL}4=B1+n*A&#$Z z$1bO1=}phEycrG4n9#$okKj0L1Zi5)GMV|z7*{?~tS2xMaQR_C(i{b$3_-rVw|G3> z8;c4Dim+`X?P_fV?AFC}2AvuOhqm000u7@YKGUR25$ro52Yzc0r5q=mFl-go4`?v_ z^W{eA?K;K0C#6Xbs~*oaR>zq{`+TR%(1?ietL~ZroDRknUy&L^L`gM-kscw<+ zF9GNfJ-CxqA1WOeLe7j6&Z9!249H4O$xNxTCXOmC4Hi4&vY7!R6Pnc@Ze;N;yfgLN zvdc|dA$Og3ZTUKCWGi1vVF@tSP$6`MS6!Q%3B0|K?_a;CyJzUAvKp3Kf9t7UKWN)1 zn!=kZ1>)arG>%QV?CE;-pJpLehksp@`;vrUn=o1Q+>{smkvKw-G0CPX#B3>h|83~m7_?1CXe!=NrDuc!{mG2A@3qzWmmuuLwU*K z(p0;g9JatVnw#Z1-4<2!IBULp11EAU>!Lc>8%8?4S{cgnfuw_N7)tX67fjG1|I%En zg@eY(sKNXJYiLvdR-tpBNI`PxlO)FO7rdhhthA)kFRm}#VI0z1RIZ&+F%!Gp+JRX! zJ*yoowfmDV;YXcO0E!z0%yW~7+KXU2ajp2F zlF5WGd?|Zh@F#9U$bEeQi5e`4;6?#Ovo@NqK#|O_w?H9HxrnA$loYySb>?wx<&}|A7|-V`VnN; z&zv^Soq7-q$?(T!z2jZjQ6rti=dT8Fa`%R5S(e6_Ly->*dCiQ&W43P4J5(6 zv>$9&QNwwR%eVN&&cTC9fu3Ej6+o~KZ{ON@JR0MI%CSV%>9$tgvC%c>a|^Xd2m=Lh z{<@z10~sLHi}4e7ApE|HrY(r6e{v{#;6^NLFs5%{5!ia#0Kbxs-Ax)~>iG&EC*!A= zt73Rn9&t+P6W91GSD-3q9hc(DR zNZ08qYpl&aVo{L826-lhmz;_nSQ#A})!{7-*nVhtRBbD;9p^`v&q<=r^O6CwBh$M)~@=hn^ZG549 zetwSWPoSjm+mrm+(*u-FprJlqu20}|yAXH9q9T*vQda+KHtrwR83QEJc{4G{%{*~G z3U?}$ymd4BG0PGjFLyVTQ-o&sqZmT}t~TPpUh`%|^f0$Ly8l_T`XAH%dq4eP&xJcd z=j&YoyTcI)aYC}>z8+>z_b4?^ha4$P-nxNdL&(iKYY$JG3drS*4Hhz1;o_0mxZ!VPpHZIXJWKZI`mK9)3<>hNFI z%HN&)$5$y|;&MHb&#(XZn)dUeDT|7%H6jcCHw3c3g*_2D1Aau~@%E>*|C3_(udDO# zez6g;SDW|_^fXZOB_Ior+m7>N*_BS^(9ZFEfb~F7Fxm^oOK=p>lbfK<3nHg=Gr>ME z)-~s&wMpyRY(zP+61S$VpE#lcEi)d7dWm~LBM82&Ie3H!B32_uq9Oc(nfPSJu#)7~ zY4E-+SFR(85Mg}Zyb;33a_rI%>NqkH^jZ92wBd4`{j@_g(g+cFSM$6#>0|$R*-o_F z^dI8P030x9J?ebtGQd|sKlhFk6#4!LGI-mWLvr*BkuuL|3ptk8BbEsN!E_E=Dvrl5 zo<5Ui(7CK`uS3RW6&0ZYA9u4CU5l$d`LXq(;MQ1*PK$*smK%v-aNpr3PkDbvKB}67 zLEmnOj-wo6ZT;@dYu-_U+3eezR4KS7+&%}P8rDbn{OGm+Y{3_%aHtb}%n@u7~M-MmkkvOCct&8$+{d|eZV z@?LbmWi|iXT05B{REHiLmC-^Q*C9yCd$Y>YhT+zWiIDYT8LL!NYL2TO@RotjBG$DF zwH@-pB^ra{Pr(<9#n4Iy5aq3Rr(x??B8PG(1MeP7ji#ziOf43fysBC@CLfuIPFJpZ zXZ_|ERy~CIt*V)YADhG#QRvXm*9eYlrSD=D`XJwHC*aP4g1A7C@*@_{O+;!Xu5WF+ zV=^aucj5}%)Fxs1@xcdU4;!bXUGnS217jJAy{Djx>?JmdG2D5{|EJqkLQTp@g>G8r8?_yh)rn%m_a_%Cr3>!nrJ%b6rSwVA&`bJ^b za4G7LhDU?pLN(9!S=xQ^7UGn`bXezkug?&in_fAtS0m;D`&eB74sqL)M<4P(~ z)y_Y4ogGm%Ky#`+q8U7>$7IVwhw~uUV*=rJUDif9@36i>!G655J8K*X3s+oOtfh!~ zxFM9P7J-7H;T;gJx3dCogBJMgzWNbeEmT@5E3Eq+RIk(+zOhi89zi%cr3eZ^4glzL z`PerXUXkLtxHF;+#S6srMiFYh0`(=ajn=aUXgIdH+R2V@Q#*_gGWy&~H^_d^2x<#T zx=qAi>O7;AO|}Xd8%HK#?$+dW$1`fhoWpq#5a3%w7>?XdpB=LP&-xGpAyCdMqL%>8 zTd?tG?pzH_b6iO@Ueg<4_Oc!5T+K~Z93WA%cJ=dk&=N1!deLt6NF>uVB+cbSfW@Dd z&mP@=5kFu7(QvM&Js1YwATYB5nWUmUI{eo!Rtd~lu@S};yrK5iTgmT9%7c;ZoMXg; zN}f8)pBGI!e|BgdUPF@DCfEXX?93|_c0_AFXJk>k?=9f_xj08!De#9SJ$v;9mNZl% zjUY%_Z)*f4v0Bx;!@ZRFLk9RAq=Os@DC(|$2sDSAx$SyCgztW(z4B~W5|jp71sm^i z+7qBDO*k_7A@Cau*%T5?0WKuaMkyg^{B#DE4EwAH_0Q^QbiyLWq?9b(TFV|J!Hzbr zq@4R4;}i_Rs*%h8b{Wn@^MlGqjX;Gvw`Yo{CwAc&o95!FRiyjgVH%Gu)!RQbI28WG zTFJw5ZrSV$EsitvyfZtT!*Z4%z~Dc;if6M>F4oQuwOVLWsxUyCLBXFu$Cv{;w?=$! zuf>X)ti$(!bs#sJIEEAy_WtOPfMh^qbLYLNLmTRAJ3xTz7KKilgG!^pL z>c3p~<|<<6-VepFSC2i+JtyxrBUf(p(gf{}XZE@(179`j55>XTxHx-*CG^?alSc_2 zl%rP#QZPo2d85EN*IqY%Lj8M5CWFPu;zKjQ6 z-VoDkb0l3KFE_7#XS0|ps{J&m9k-0Ri0PSlh&Y=ERe29Lm@Csd{u1F9W~lKg_f2gwTYTtOI>XEF@u0L`K6VT{3ssBky_c+oHngC-3q{8 zW2K<}$hp$EDDVhoQ@c~ts;P@MW}@M#WDw^S17=QG>42l;M#l@tRc(i^iRiQ}NR2j0 zybN#1;X^tn2~+Q<5kNIw66#;=(l}LYat-N$2kr(4%8+n*@z%4rnDLArdAblQXq25 z^8)wc*IHEXpfjWkrl?Y<^_LNP*WlCYxU3?OkY#Z>C|u)r&{NOyI_HKC=)FBkilk>n zIw(;an#O~iWSP*M6iA=3Wz~=iz0~y1tHaw1F5`+QRe~JVzS1H4^YDfE+|ys;zHLs% z{{|L(ZlR-P53GN))gbuo3}$>gPIS(yqu{O(B7G(@B41*8jBmZR;Q(W|03ssL5vh4{rZeI_r~XqO@BjTp z5-b#ijBPx+r=(nCjL7Zt+=h(Lqw9RMVqrOYSgs=jRVN|0)>c@&hIF!+|H9hbbx|X2 zrHH998U9lazIXm67Ce?F5o>O~NiOq@&;Z#^I+WVzW*iDa!Oh>owUvy-TQs@Yp=Yt5 zF>iL3VjR@V1h2@EV_Y^!a49RcZ`}J$(K=8yNhj@^{VG4U*+* z`c%%O#Dmo^cQiaMDqt{5oY6q!NNFWUVk*1k;Ii#a{D8uF&j%_+q5JE7`lmHQqRh<9 zDX6xiu;8-_v)S>I6N}rhD(Q^rM5dm={a4>Pc99l~*3b|1B$V=*$Wsh~+d&eH{Trhx zwdYUi+*6nJ^Wcn3$Z)xi-=vLo#LPFE1X`J3)MIiFXTlzKwG!2HDxzP^7*1FFPnq#_ zYRa*cG7LKGE9{~#Pzger2%Omj9VC_6qL`k(wU=zDDs+-^o+LW8N8nsJx^H+O=0uPXc^qz`EzulwQIQa>E^fk<0Po^2lEJth@4yUpH$47F1A7+g-9 z!5YD&WevkbAP(A*XXSjW{rxDmR611*+m{(h# z8WmFr-7etNhPQkqBP4TZkK8vfc)_w1*(@x_c;|d6a}G)q@UI%piWK+~S!zR>ti28N2)^ZY z8^>No%3;>OUiQ{?B$mV+VAH(_)GB1xz0|Aq61u^gD%bmfJ;T{}c@QtxaaZHZR!;a4 zW+P6Y+vGeNW{3TH+Ee(TOPc4Zh(V1l|2=Io$wCJXCcnu`%(A_K*h6Z|(J1H+>^pO} z*16-P#jP3ib*7N5?fSgln*!{bKUG|=7sPx{WV?)?Jl)(!yDztlj)QxBx?$u;d3pMs z64}MoJJ@)3xG-iZVLBC!E50ibrc9?&BI;#2dP%|I3-27P(t_(p-XkFpIPq$P3ySjm zcTqDTV+_~rgg5p(M_SnVIX3=qh~UG@0jYDa-?%YAq1D+-OVWg;R51vKc9kl*ocG%@TTxcY~Btr`-XAd4>d@~gA_L;?~UzXebQZt%q?CJhWN$JranUGnzZK@z4 z5}$XWL@L|s!41T>zg*e*u6Mxr=fhJyn$+lX5Q+gh9ujnO>~b(uY|?*e5j61p^pNk_ zY%dOIq$yP^Eg+LioC(>;%(MXi>H-!#8Fk>$nv5i<5jTCO4!sX6E#fzP>d-Ca@wP1@nPm%6UDS zA+SK0Mj~cE{T%2nryDr1`W zx$oWis>|9)7L915y3MzDAJ}G%$K$2mcs-}2bJ-~aP0={~`I=0}(-)uF7(KafLpn|= zntVh;%5YW9MG^Kl2zQtvCxlORWCy;pMakkUg$iU|9b9BkS2@YXx;FW-6F^FvBt@U* zvci;IX{q5&Q*iA`n#TQspkrSx{Fw8$3Oo;(AZH77&@3|>u=@PXzu(Si1_NuZv^L6Z zAj^`bsv9_8^Vl3G9lVnQ20clzxSWXzgFb;HL6!PbfDEh&Du&Er*dCcIRogY4Mp!e4 zc-olZlJ0B$ny=Dstw42*Aa|prpNl+$5y(-SB_=8(U4cyizSD}EYT$Ay2 zLyq=%#+0+A{$U;K8n~gTbl`<_qZfTHcqm3y0LQL3G3(wR0=vbpTc-Ffg|(vUvE!fy zedcA+4Jbh1rt01i!;V0ExB_@aZ{XE$<2vAeiWlTdCl)FEg*QozeNF^qYiMk40rA11 zV?)C+oTtE<=Z_4(;Y0WzF->S7xa}j1%8aG+iGpBS-0@1i%!knzHKLQJ^O4H)&Uu{? zLLa(>l(lh|hZv1Uu?y4lF;0x06)x9V4(quUXFSn`&op>BHiU$PQjlZ%N+%zk$Wp3z z7xG#9G#Vx5w6>k6LGGI;ifCJ$t&a6;bSW$*Y=?Sl2d2FyWkPLM%MB6b>Dwq_D7?-` z@%<6FQu|Z++mKETnPm=Z6G?~6)4 z-{y#g$t_+Taw6y_ZjUF(&{#YSC?JgDMjWrU+#poznT#aHNW~QnP6$r0s;#uSsqiNb zXwAaA`IHZp(vS$oj@vrdyGiUS`F#KlR5|Rz@Q;)Sz`(#5A88nonGC-_hjcE(Z?cJ= z++AP=a@RSTdsU6^j(fzCNrflfBr_WXUliU-#t5i%L>e zT6BhDGMcu{5bqeYI*++J83~FyggY7QKw~hwPu@!2PdyrpWw$I=LIj1}wv77TM1#2L zlpe}%$J;^^x)MJDgc=n$(~AUlc{w{va>X0Thb2^=$NfO9?Cea#Q)e+rGlaQmZ@yA) zH1J8-gLu+KJ>@4w}doOO!9JQu{f@sP#i3XThjLuyn5>Qdvh~0WLtx~Kw<_!IS){Vj+PT>HRLgHJSI-~i80Y?@Q)W8 zZ9C;eQEM)S-reiUe^Z4x?#sR~n-UOwcZA59_4U+`b)XrR6G1mP4*0}$&8!Y)e0Wh8 zH#eN~G3+3O_70CI4_W*}_sm0u*~VSBM6)v7Y-l{_2U0-OlF#4<5xY8lQom~_!~I1p zI{k|}@%ztAfuAIFszxP3s~BEJNIcM16a7e|l8r(!Wo-g?c+{qF6xOsl z(^YJ@%Nk17n;-g`jKl$6PqWC%C4(wwSf43Hqzm0Pv8{ObhWr~(21f8@l8GvU)=+6) z@e;TIFDM9qG0mV6@O=mwI8_cJu5;>l^xGZE)1PN@rH0a1eF(xEa@G1E=#58R@+3ZJ z8*&ElCr(70R@}s3Gj!Zb&$@D1sHjX*o`QBPugQeGh`X zwDSv@xJ*!h&w%K?(V~{5CBhh!#%Blf-3@_%X6xPvEz}2lEg~Q&Bkfgz25YsL8Zp25yo_cwH z*9!ZIv*5{PfJjrPIX@#o!V3xO@yjsY%-3ZAC^uDWW7-zfwq0j&5*|Dad(7bvE8;1^ zj--m8t6hq>6rk7#AU6cap4D(7v{vaZ#_dIv62ncoFTkli*h6tNN!WrJtQ(0QbsjXx zVRQWQee#-F3<4CYEQvZLLd~AXm{+el%JfI{{qcryU)pT~l|q*5XJ8w>YGtXu)WRKL zrmJ1RZ8^LHH36jgMTTZAd4ENG8%VvGf7$S%n6Fa9%VD&~CVjkK>BAy(8WuWx%uWm| z++>1VWnHpmoCp->lJNcsA_f2@ZKkZ#>C4!=^+|osJ4nsOILu&bYg?NBR-K)L;g{A38Df-a z9DdH-y?TkXWB;N-P^{nKTcG$(HYKpbYSlsHS+iY+;chh^Ppb{=6G0o&xI6ulYrX2F zn^?X|idDH14b#jbePs_%<}?1YNDmjv3OK8S`UW^vAtg2h#%GIAt`cc6oXD=NvELGq zO5pqMXs%5y8S`r#H}6MW!moqXj+?x)mz$7uE(fVl%uxz8>D@T16#qgOd*x%KHSm{5 z0)BTo8ONiBBR+~o2q?y>}??d#WOxz_QB>(L)R*E|*J+OByKK>r~n?QHzAIuCbWo~2~F}XqbgnV*vV}G9K zhiZ0$kI65cKkM0j$|LT*@fM9Bx#}ktgD%1!nRjlN;K9jUih28!m1gj->>rU)k-N1^ z-#l9!cAvpbyfaSVSK<|$;t^?s`_qMTi*mU0X)ZHJXy9(fc4H*Q?fGv>V)4UFmyZA08m4!J43@jqL1f(xpFWfM(8*w}`dPA@5Gqxf~ws zp--@vo7qTHg?@#`d^zH~@kk&2<(zNP>GBTfmABb>GH=*vTvK(M0gN%6^OF^&3%8Qr zWWjI52hB&uEzL~=fi~KLUI55vFyToFXt;+mL$R7evFuq%Od3q(-Rh<8mY?WwhLK$> zA;)b2r;3n;aE6C|tq6am!F$Z~neIMGm_Jg(`ZSIO2es99{z#e1);{eQuj}I(QDHhu z*$?z6pNEDf^rZ3(XtYo>jODDARXiR4%uxR+%Kr0(yB^TOr*qx^i07*e(7rH!680j+ zJ(j{P)#sy^)eDHAxh%Wlt>gTQxw@ngUslWjcF?uf-4EWYRmydgk#gd}n49~2&mnT# z@jTPCQbEA=z!;Ya-+BJaql~8<|MdWg8M{48s}UfSm;f^SveHdNf;Ac^r9Hz) zk8E~~DxCN)Tp1yeaNdvBwRb*;BWg&8FAjvm-Iy=KF)AH@!s4bgTB-u zTRIvbyyURrk94FU+hV1{*rDt#EaTb!r&t4caEa-Q)SdAW3^x0ZeB+^YYJCf3xI4jF zsK}S&Im9|+1)tA7nZL6Zt8y3`WK0Q`Ebz?vv8|Ue-@));qH)EbSF5x0+@ZBpq^aL{ zE<-~_nCRW(6Km+Dvln<&L`l(#(}{_DT|(roHH)ysg{RZ0(rLL4PPFJmH;oj?=q@kyeTwM}l*GVq(8}=55oOZ0|`K zV6$E*xD{H{dp&QHR$RBTqGs1K^HifM=s>e5G@W$IG?jBS*%Re34s1D@rSrCFhxHz5 z+8f1*1ENf?HL@@(1P*mqDbZI}G_^8HC(t#FzzAcr$-IfXEtW9JD>prxax8X=9`oOF zg%QCt;g>yB>rgD=H14V;BGo0x}>nLiC8ur2v~UvxV}4mx!wzzq7?)|Z!; z@z6L+la)$$pkHSI2BmzSmlVa7sld)X$*uU?t&H{=2G1)94ya`$ zEn|$^qvIjdsi>GTTS8>3T~87I@O*n@@w!>N$!;rXXzgJqErX5B`46`u;?y*DOB`_3 zHI1yG=SLz3?^|IGs}=Keq|V~wWKIay|Do(H!`f=vuHlx_V#P{v_X5S;-6@m;#i2M9 zE3P3>ytoyI;!xZR1gE&W1}LsUg9hGx-S_*v-!0ekvey&@n{B`tAPq?^#<)<@=@-$xF zBIohdO1PVVzMQA?W`kaKLESU3V(}V63>Us;XmoWA6l}?mb-Tcm)mTn81+!~rR zICor17v3;2hC1C`t%8#o01QqMkFo#Hs^473tQH;k!M6td=+~DEERNTYWJbGtv=8Rr zD}=nCD<`qw zXmPPrE)xtfG=`kGyIY`cEH}AXy4i#2=r74o`9(F)Ws7`YjW!$A*L@`vsjOT$p=h_SsoYLY?pt-Y zfe$$lgO#CK*tY_Wfy;EYZaXuwh$Syh;n^cQ@<*>)1WH9)?W^VgB5QF*NF;xp`Rclx z0n=J=JBeHfLF?84>#<_~#7~;rf8o8U#hj!qMkJ_q;@>Ero)*t9|H7;NU@BB3_}ns% zcR%3em?G*x69_Vbfj|1_lD^!s!!CWx!%gEFizi%Wex^$M%!h|dzdf~9Ni_qM_8pBB zhz&VHOFv7!$8L6BqqE6*&EjFspVQ(!_(OSI*B_-mORYL6$a#Iz zEmg3rHYD|BMpzb$tq?JfN!)aqPQPb;%g?dT9RjElyxUy5IiR-<;gJ*8skdnt(n?a7uTHPg2V=mGb;dsKg_VF6s*x5{H1X_Y5=m5e zM2hjy6BrfgMlJ+Y1bpLOjE#31`%&9W=5v~qqxhYbyz4+%{-GO)r4Cd{IjLXP#-8gV z`RN6q-?(gatIcl8(7l@qT!(aiM`mI7<3wKD*`NGh90I%g`ub4Q&%uVDf;Ph!E9#hI z{q9fY&juKu{RW_S*S*CV`i4wlkAeLe+s&4RS`~*)t_?Ux>sUNZk| zwta@;M~pUjnSaby7%G2!Y*mT@zr`SAeK{E!LC8LMe}iHE>l0l3wCsI-*yS;8 zo_tgyut6fh_Vi526aC)AP4Q9J3f51%Qn`93mk1P-EJ&pauthT?O(oa}GS}w7*hXUu z`a`7r#?2iB3gN4J!`woMG#pf+Wr&!rXOzulC9j z{n^VUT9&p+u>Velo6z~A@Cn1S3Bo!#f|4M9=M~<6UPM&|bBxKW-3gV0(nC6X9~aQA zdl-H096DdnzQ_KEOAM{3cA6W%XCFo(s^oZb3`SHaWu(B&g#gS-a@hQ@{4#NZJFvVe$%Nzv$yBHE=$1An$k z*4aT#x-*cg7(yIJO6x3HuYTWci^Qp1i`abzm*ScoDh|t-XB!5)!faJ++J&?6qyI7Q zWYi!CQ}n$4U3ndGd9uDYb$l({+d1T8Aeudq1Y6g!d~Gde%2Ov`P6mxy#tJ zDZ8R!<|!1^c5chzI!@^n*o0Xd zSJx3QqhR@1h9K=oS|i8CQ@AxFvh|QblzdF%YW258sO@x_y?$?3TD|QE#?XlrEa%TX zfLT_N*bp29Z7R@?;Qb9eEAg7%|D=MS=l;tSG%pcUXCarDvl4t5gaMTY2*qESM($c<~kEW!={(BB~8xyGZuPMhqXb&qzhv2xKo=)6W_ENK3M*-~Z*VaUSL(Ig^tGKR8D@M&q47Vj2wz_193V_c zQSQ!rzHj}sI2))MQ0~z_htPtrw@Mo~Pr@T6Ya|!uzf$R4PR&>a*NzEkUnzQzh^qQH zA!kIXTU&YX0wZ+@6oC9Qag?zi@7U)igr_c|&A&AjqA?`DLb~9GVYh(KV^~Nl9mLtU zvpL>2La+6Wj$s6eCIdKlEE3H0oTlv5V^N>hgb-j2P+97IEi_9-CXo}g7)*?Z3b%S! zWjQY&!M&#nD^u_Laj;9Z%4zx!mL3sBrnPyy5#Mm*7mQ@wugphf-rbpHUJ@dLtXJAV z!U10}oR%i2YK$-3#1yBi%Qn0*F9qbRt;6Q%l@d9cK*?{tm_JINxbdJ?M$^=Qh*1Y~ zh_3}nMjzjX@GYbZQ}=aqQ^0pnZHS>4{lcK#6Y9+I@AIAvd7#qiQV}lJ!$fMQ_w?bsSEr98DBJDz z@U8JLy=LMM*|^w`lU3oU;KLuX$7_6BMqBQO1g2Z9`#h7f}l+woNmtnGJ&*iMb>_u{&!G@rZK^M9^`(ojPGSw0~|KkM!ing)G zu!)q~FDm84-V<=}$bLfeJ7}x1Ll-}vv*gR(;z~n8&zv>g$$jIb*}S{Vdayy0^FSka zk*%kVG4c6~_PPU;^L>NE%m)_^D{ePTZJ0rjb~N*MT6yzmf7sQ?0s+3V`irun*-bej`P9(;5P9-#W&d`5jR%#pK#Pu^d*+0A&bTuruR2ThpIo z*rv!xcQZ`f`{-UIG5UDl$cq{RCsLcBO_n)_fm3d^RxHR=VbxF91JV5RkVa_sD0&094hCk_(Jbi04V31#@=P% z`xLmla_g)~$xPq?m&ZZvVBfUI<_@%B=T~aor&al?W-k`&lwJVIN*5VqN?_!CE4>6e z7MRcGZeTS-Lhf309RD&KAa!OEa7E#)HI<9?*U2vjG~3i1ldH;Z=B_M7N^2zw%;M4L z^@bgQ6IZC^Zz954s>xjWI@&V95sOTKYHLutE*R2q`)c-T3(Zj} zFrL$mJ2@6RdfAOFj&7u0|43ag%GGEy!%lYe)JwsbCRCBy1i= z=vsKY&9R=^-ej|0Y%SdfwSJW}Z0vP+mc)LuB@cr-wF`tX5_=Y6f?>3CK~`?Ez6tIMn^nsk#~r&F7wsP8r$gI4J&D^bZZte zG+>{eJwvwXBj$7Z^W_vy;#eANCi7f(XC#v~^S6bf3%Q^biR-z?JX#=DS`d zCsPq%<<(8{TZIS3$|84&kHyhhrjDQH;9D4ce(scJ5l%B|vRX7>LzeXGh2_T>*3AXA zzZt|-PbG~60m4BawsU~dFV_{+XdH3?w)=!S^Ygtz?3Dw6M9N*tTzpAc$xDpcv#8Ox5%KJ768E4;7rOj!0=WB-kA$$i&-*Ei$Ut>Gwg zNjH!o7Ioj`7c)SMs+Nvmp0{5GE1g~EW2+^NT@nEz#p)0xqiT~%SI_czuU*@yv6+KL z!1Bs^we7|)$q1t&eSh>O7K1dW)1)9`a~fqh+@cr4Yk9x!6oH0<>J!e@%6^i%u)p^B_5uj2p{Q zX8gS=8|2_|#@`}$#JYhk$jdin06Gc8D5pl&w}gI36}|lrcR)3mCRU}i>zBj1legfRcQt^t^_`Z}>ICY72z}$;%k+sRHoceGR+TEa&<;<@f>SqFceg1#SMZL<@ba1;!*W1#k*>IuE*-K8x zk*jH7tbsiF7>k~1@vn7x8QzKit723nnpBgW8EyLfdV?a$d_IwWvI1s)-a%r*-cpBt z;p2Ryhk3I=NB1V3|92K~0|Nj%_2#ky>~aOF81D7T$pdUpNqG2447+c^XZ_H$|o zZC3}Tmqnb*EYx>~l)R~CJ)CUiFG1z-KLwSN3KK!MX8Wd0>%cMTYYNZk5;PzNh-cB zOoy*J!T|i)TJi7YjfcQNEt+^L80_pxa(Nh~8Y0rht|t@yRt%S(CJ(W;Jq$6fqJouS zPJl?ysA=EYC~SWgkKPanl8IR|!+7d(oG{--!wl!9X^+V@eaux#U&f7_n7uG!lD6kM zE_!LS{%BA1d23k_uzTG?Mb2a(*-Gns@i$ZK-x(4APaOxb2Gn%MJWg3LfAc{9lkO)W zA|j#?fUH3E6;&kWE?mkP8567YKS1fflkL3vk}c8XY_Y;V91raGa$ddBV*cY2t)YO0 zFX-_%PV4{GRS|3?NB3iy%FUgp-`#qJkWSm9SsXTt7NMbf!t_0H!US5yUfY z@kLe!GR@Z~m0Mvy`i1^^2g~$d5WVD0psTFwJCv~dtL&CgS-U0yCpwd^>-e{driw{i zHa)ZCQufvLtJG_2mjAv~1Q4oFfgkRH%8ERx0PVG*<9oTwJ$-zX^(yPemeYrl z+0cvtkTf2^f5lutWx!3OO8~qJIv^?YCy6c7OVrlqzQQ0***nId$u||Kc#EFU_Ybuz z295u!vP~<5F4K?Dvk(La(Bd=%$6DOAQ5yrAQ^hosD}ygmc-~hB^La4yCvne{_YTlz z7AtlGT*u1kc&dlv>iE2a3n_%NO8$* zKD)b8+%6M~=k-zb)(`PY@siM_d*V36lI%NDpV=CWFI z#H-P|D|$9}nQ2@iyXC0#PzO$ALc$I+sm)8R8zJ zVg0FGR?%IemQxB;c0iYP=6EVjt#ISl!(ZYq{A9OdHL>}}Pzva$`Sb|%@hl9kB&TEL zNhALpcOi~*akCOSU~MK7+7w-ma5o=z`}cA87jb+C`7QfKY>)Z3{?Vr2J>^b$(nUC< zLiR$i-Eqx^IOHysCv$uirza#*R8nE8+0@Qb3_*=6BGJgp^!~P_bJw**UApHKUIbr7 zzW+77X_B9ab)V`|OoU|gGsVl>y(tZ|qg@Q)ldJnZ>nG16KP&&AdS=elCq3q2h1sUB(sG_JeyRkTGsOmsJ8K{x(xD);6t44JBQS$?-jP) z{(~LO(lgxCM=%m4nlde9Tm_`H6JD&qh6hlzxaI^xwq z02Ct0KQ;C{EpheE1I5};fVS>~G0rZp!=3jgEs_ltW2pil(B@#xpE{iux&(h4O~cZF znga48P9~-Qdc(P#0T_hrN+B0}c~02#7gadF{EnJ0jt~_W6NGk~#g)iQrfHHgex=G* z18KYwLlvSxN++|$H81us{x!z`TMz!fKP0B<0oim=wbvSq{psxqt<5AIb>jbxjREsA zpU%I7H;-3*KD6p3QLVK3Tve3m+$8gSp6{>&U+l&KvJgcer_9Q0tBHq=9YeK6>%0X& z60WhCvMkXm4Jm=QKRzS~IQ@~?Wa`o+6q$h^F4#r~py&Y+aPxGd?+gYfj~8$qo0ut#`vZ zdXVL#J}BsJYq`nATbwTbrxtVY)de+$$I&7$pnTy2WE*8i&1fYjgIeIBJo%@c?mh*V z@voUQM9%BoZ_e;j+dst(ry*K>xlW#ysJEu|#EfMxclyhpV_FPpPa9`f5$1{D+90Ex*HZ{K1@~ zQr7aqbL{=fYeT$jyHxwTrhg7W93NDPw+B-m{dWf`Dn%fDqDfl_gEVZ1`?-E-QV4Ek$lt|ELv~b zSG*xCpgRZ)xo};AbSTyk#CUsX(qd?9c`uJGI9%A{crb&~54{(WpoTKAtKL0aB2IGM zG<#JvU2dq%@GiCRk2TGW)971nhtWlN*;4O;+u5XYaQ@EHiusVZzQysf7nkM5iB&l~ zm{Qzp(3O_v@?c8YayWxE=F#Wy<1Q2!VuSF^mVDD2=P_A@EFpw`>dAh>Q6RFs zVoo5x{MGC=NoH|%jM;16Uh2A!Um~UQ@Oa@)k-5DBLDT3l$l=n9zmKqh*)06TsR13E zC&)4{&c7u~`}jMp`l~P-9+`V0L47HV{(uY^ZtICtx;4wCyJELa0 zlUv`c?aB$Eke8%PM~e_PF|mb=EM|Fk%G8rfqS{J}gNDV%k85}GQMPe0)2>%`G~c-(51D+`T1v_2AY{a)D@jrAw^79iFt zW_nllmqw8)0o@*^ZfDnJ7IfZ>y?{cII>B%c7jr~flHBXxI-13r(v1iz*oEiN>1!ml z16bRmI@EggBLp(}Vu^AVvt`Ei4ge;7`^Ej1t@S#u=}p zMa+f9$Ew5mCN(T_F^5HyrGel#YHO49;({)4sp6v^zr+YO_uC6%o5g!K;^Hjt=NQR2 zsFpZi)-Y4r-#g(u4-U;c;i-7)U7*d~0xK1>Y(#R>8Gh+NkD^9_*AQRBu~b=!L3zXG zpuR#Hk1ahaJx1UU_!&#(Adoj47J^_@KRzIS7@1fyKFa7LT|-3t{@4{C^#QG_@;RMp z+N>Uf2S@@y9HfU`dKrI9ddnzy{yOmmrtuW4y{K;_O|);hG&myZd$lo`w*H`v z22~eb8WEMw!++(JwC`qq^DW6zxaR~J?G;hw!R(_gJIlwi8W3L!k~{bW^vh(!(q;lu zvXBOFIBceO@pa)=UpR@LyThO?H)mVCG+eV91xoZ=LrG}WB7+?d25lc?n}3MkQ_Ux_ zYky==$sp5Fc=UVtjbpQzAE$c-FgdoEb@bPDaUFy;3M2oR?ASzq#Zg*)9|I$)-%lT_ zpi_KB8m-@mu-)&Z4Dzm+`%!&k*OUJQ^{8M-i!VDfPcEh&Ay$ReQEePW&Q8i__X_oh zBS`NBI1;bd_9V6_Ymg8GiYoGgBFPp2J?C=0eskXCbS)B6L@QQw>V+6>X??zNJctwB z_&KUs@|%eW|GsA@2OLL6ox!6mIe$psaY?KN1;nXI1yM~ElAhhA`&P-Q^4c@LNDWrr z?g&>-b=Jz)hCLuvi||PQa=s8Z?ldht%7h*=@H;?Vy-{z24;CMu$IWs@;vHABIl8}o zM0u$39ucxl9=dARu1pHZei>hFCP#!TSodtXY4$^*0yUxQpQp!)IsmiHd@%p?b)57w z(m*)%a=it7Xtn`B7}q+VMai88hf4&!d42sZ-2QLNt_19=QT1XB3|w|zZVjo)iUyU1 z>?q~RP&hw8Dh=A4wQ9^qscz1;6GNY3^ImN4QRSua*qB}#oxKuyGL}j^euv)W^Z}G| z{~_l-o?i{C$!9041O+8mHE4RcoVvQ!=FOq9_c6-td%Tb%faLN$lDPG99ulu|&Q7T= zd3(C?IPCWjev1rgof?#W47JS2tS8urLA)U}95#NQ5|w6#|7TV^Po7Av?AY;&>+AG4 zi}rzQCo`3lG1$&9uOUexO>e`Iu=z1|t@(7n375;Phx5Mc8mQK+k8LC1IcylrSDqCA zJ3_H^ZYec1{N!a2CIy!il@a)4f^o9c3cHmMFZJjij~mr|a*Tg7McnNcGKFO#49_!g ztp?p;_dg&|03i{(^6zh3BXs%g4@PEb?M~+ewIln=#|DB?J6yAI;Kn{-*nm$fl+!B! z;5yU&YUFsj0T9i(?v`xMmU4~roeREg2P+ccV47%G8YLO?_I=(O#Mdm-FS@*l2M9We zm$ur9IbWaWdzJE8eobI11IL0d(@%|4-#05Kzl{g%SUg;d@V@~4Y;&{$vZXL?Rx%Cz)Z(VL9ReyRN zX`Pdr>|dnH)!knxrW_yX^Y`y$`@L06V3;|Xe*RoAg|$1MC=#t_chsA?hJf^V7gF9z7I4D!4p zf))9Nafube89^ZteL%VWURDH_3m2)M^CYXHo8dmeU`poa)F`PLY$6`!(L~i8#)AsJC9s*5S+AofQ7YvTRTV{ z=~Y|!Zul~s^ZsLd@^Uq|)hIf{my2Df7D?NO)jevH*4Z>(kk)aj|HpT-*BZBmI|6&% zdy2m}dvU79QtjHw%!G)fQu=P>!#q{4W7E7zgDK}QLpFuPW-x1^ zZ{UADndT4&UGMFsF21FORVODG;f7PcwHjVy#YsEr*6Hr1cUTtaodV7P5(W#P8X``j zgLzooo176+^vj|tp*UMyng%zv44hoI!NdVK;V!#gPSXuq{CdZgX8Xl%@rghQ_@S<* zd27*Ewf9cX4(6i~6C-OgFPw@$j_k`ReDxrsC^JKn4Y>Czuo$vrra=xtlGRy_CZCQ_ zkxg;7P*!#Uc{(n5xcDUkJQtb;|LsnDy)}O(o zQFXl5?0BZfvQZv+_k_>*dHe5nR?emmp_mh>Pe`QZYFzgqD$x003@~>(0jrVeaplXs zDcgRialYORGlL5EAn1Pmj)Zk1S`PbqNoX0uI0Yl{Wh_vLTZRDQJm|8Ez>61gcYl6& zaHdw$xY=WN8rI73N`~!wK#v^;*T%Akv{N>4dxMbaKQ)MfZh{`y3OqSokJfSVUjuS^ioalHfs6X8+--nMmE@`0X96(Fng zuWK&@C=PJMS%>mBoE2mZ=Oytw0rr9Q5&GFftDi$>H$j4#i0D)b>|9L@(G^sc#c3Z; zrQ-glC)~cTqx-gTH92h+-I_AUz%I}_Xu0p%?G>ldb_&(_&tO0IhwFqRowxpI4C6i8 zA=i<=Z5Jpb@*Ohuwq5Y-C9ds^@rRs1oq0d{4`i;|ou|T|@ z=&v|1aaTEg?-F{5S&s5fw4CSI@dm9Hvv#}&7Tys6hDJ7u-kOS2qf)QM<#{e{qB$S! zyAgA_npf4D4fle0Cxb-#c%Kpo)>t*Z%l{(s1iF_J8_QvWblH4N+v;=4GeOUJx~jJRPxb>>O;^-OTV*of}~L|N$L-V zP$>OgnIe`YkvIdMh!t@(A-5w=x~>9w!%Z*xb2xJ%4xjx^0emcCMnmyGLpcV!rMYyoj~t>Rz3MPB%Mt`vENYg z9`>WYdA|*utIkHB%L$KDSe;e}TFbv1Up(Eidc7$B4Rm(@D0$AJT+#BpWEFixpw9a7W%`ON& ztubiv(?H)I!#_HX)2siCOk501!!$R~tTY(W<%1iKCt;C7s+8E>ChZcN=YG3p@eh?u zK8dy2w|pt)heb+P5ZRFmWs+2w3fof8VaY z>Uv)6R$uJ#OEe%_3~?L?kqBv=J5)0SY$z_onf{WN*GFL-oB3wVlxeIk+C#Z_%~^){ z92RM~El0Vala;(Sb|P8amZIEaxowAfdASVlv|Eg%1Bxz4$rnpfj2Aeh9xUr@F86uk z--ES3IqM9(`u*GpiX##yzf{9zp|k`!E3=P=eX4a>c|jXu4EdstPUtsqZzNIoDs0MT z$~&!UY1XOW!XP<`($6JB9sAgk;T;;y53BxIC~D0$1VnJIdNrLu)^1BCI+{5XwW^hZ z%mM0s8{pxILO#{-Xp3L==9tve6ns5Vgrs(LDCl}NP_7?hs4(|pbhV;8ox!|`SMV8r zw+rQ68OQp3$N`x;&+X+NJq&zO?fnMDZ?!`M{Frt0#?(1kS|v-suk2=&n>6zt?Vvuy z2lL80F9b8PBT7-%?LtWEc$Y?~f#+3NII`=YeU*a=67_$HTmCxjQQhK&ol0?qpc-|e z%44#xn-9bj#Sqx_J;U;hH5Go@#X&L5Fp1Jl?WM9#y*FXT_`8p>*84G^2b)s;3hXUH z0qomZqJu-ZUv^bnobp=HiU9G?jyT9_(>Y(39f|0`KoF!-VHbG?%A|{x?@l%IapkF7 z`s}k85WLe|vfTld>2gwacTsTg#m zaGb;09zfyVG|BuqwFHbF>1*32BC0Lm%X>(g) zUC4w`SyHwUBLayQF6w(Fo4>)xg8F(fO!BGUB$vO}x`oVXG`C(BPL~*J1g`?NPR*D5 ziat8~Gv)TtSCc-@k8RHynmN4C4o-+LM`D*6YrGLLB%IUB>D=uIRZ9?m9~rQ%VOl7; zsFH-_m`V& zV@fE^p24=BlDtF88sk8{IuU9drJPjU*sl+(!7<=;LJj#cA^A3P)yn7Uh`;3J7vr@> zyZ7x`r)^jtb`tP|A{-v&tP)h83idkLo19I87b&dfUSJ(8lvdV+vvi005$6w5@|5u& z=Vt}j%4LgEcB_UDvP|Wd)YM?FaA9h zQaIlrDXphn4h;RBiWHFnRPl(=+XO~G*7U}EGYTHPzBAEnT>o8-DhW1BebQBknJ5Es zPi4lwqL(J@x%^P6QOR#DW<=OHtIEyz=imw3EJ_V?d#6G+=8I|$f_u9m-P zfzh1bN?+fpyUd79!|3Esxl0;$0=6w%U3Q{NVBb}rFqJ^-a9nZGN&B7`Zr-a5I2P9D}N!tB}S!LfB7L@^>XHtJO7Zr4^beEU+2bM59#y0 zyi9<#JR^bn#B~G`uh!mZ88jH-SecYBx#Fk@1W;r1jvD59Yn6pqpIr2MH0F^DyDxkC zn+f-bY?jum83r8bI2PpGIYkL^M{vCS(UQONGJ1Lvx-6R}Y^TglzPdyE^i{Arju~2NvxO&^U^l9|b3QW%u7_?O$=kv1P z8F@w0GjHQM+dFX=_CJ0-rJ1U+zusG}#n zfz&BU1czmh6ujNC& z4)J+x`>&AJdS`{Ug_6Jw0Y9lVCe%t_)Til5!#K#b$elArOo(K9Ack>G$y7jwV=AkTvg2wAP2DPfsHp)|Z6hGYf!C!7X$Hdkd z!pWkL(j65EHlO(>4mezZHftpVEiytJIJZzeRnq}cr(fv;YHZEy3G>WgZs2-Mg8;o`jV zY**cXATBCnHag^FIvWHp*kspHaldaF2(n@`s)68|MOg3Jh3$Ow+rjOAp|q{EEKsf&!8VFnYv zz2jj>sZvz4`nqtdUAsJ<3!gc3FQw|W9EGA=x6{qqj2JSVh|R+o6x7jYI2S_+wraFV zU>Nzl=n5kkEDUb2Gp9uz)O;!%D=v;NsVN~VDf^t*;XN|0Ig7?e)^V;uX4Vy-e8t){ z9>pokM{$_iZ7b9e=A682=)7^cx8d!vdUGSzo=w_xb#?yW>h6Bn7!BVg7Wnexpf71~ z@Ut-6?xx~~f!5?jPFh+bCB7jY+T*7QVaK6U#;kc;6i`%9OJr{0ZyXA05Eag6QfxO6SZfZN!@qKmcayE3 zW(gh&5i$%k7WSA$@inx8nYBJqitvM4R~lV?s#l%UoV8&f`XS0&U#8PE7`@SKa)ds& zldL+IH9+#i^@G7d-SJ?8ny48!0py~qmLkGNZH(G-c=wa|)kSOHUcsSVah+>Anfs>Q zLW6~2$5C-oAtv~baZHK{YO@%am#C@x0;vtrkS&lNIo}$6UfNem7?|JM*NO zfP6@>8#0H*LAWd+n>;Z+SCsAk^8jM-P+w{XBv{fUsx)|fWFiE&kG;c$hniOp9Q9kN6dWO zcA$NnU>CFb{_8*vg-00Wd-7Em{J3jww zHFrT*H(|KP-DN6q$h(psGt7JSpsqqF+MF%GAPTV;e*dm~JM6UdMyH(z~wu4wEf5;dk?3rYoo zb#>)J;;H$Sn|9iCBYWG0u{OI2xw3)dgk~2&JM#>|8cA{lAEa3e@$A2P8bFp{zq_sP zkhFS;`NpF$B74=()}z+U61pr{E9=<#`Y7CYF4JS4=XUgZptG!x3zf?M3DUp5;D{n2 z$9Ma(p`V3*D|9Yjsh+y{sQMj91}t)7bwfz`LM7VKe7A-O(_f!TZ#L~1*GT5x9XAa{ zmUyeQ&xDfGj;|t#w{3-H}Jf1f*2-tkjZ}9P>LrCsCU9vHJ>ql>%akX>(@)ty-sC((tDSe0A zHpm^6MsVXoLv&mAJi&OysYS#Q>PQJXbmD$-PULmGz<8)LyfWj3XvRGIGxT`b(w{hx zU`Mq8L&8nTF_X1z8Ly6Roq8w#$)go&F0hz(Y{33!{PkJlHNo{QesVbU&BJq^6cwC> zc5D|Mi6>8y|K%mjJ%CO_@|}LUETu4i=JxPZpZCQH>Mk?@#hK7Usw5&jSS38iqE&3Z9l?f$Z4xbzUT+($$!ufy^E}BZNs5@ zZfg7{v;lim-P#XS&9_s`o+!P9vh#+gy-g?GWtwm>=P1zSb(*np*@)mi#@0Ao^0RHs z>$#P}hS?5|=l|Bv|LFGryiI-*U{3fP`(JKIf+`1Dh2(5>bhKF1T%TW~uPRwa^tej8 zM)F^8`>+51qwg=_?3-;IjrFfB-J|9g6)Cy6lx8;}#B~n}-ClYqPH$i}(k@B=`!6R! z1$~Z6*LO#}ef_V^cNBH34F`N!9p7{@;!&Aywju8}e0BM&`=}rOuV4G?TEOH@L8U7y zEL8IG@quJxM6*jiud}x$h1ok9k&XiXiQV3)GNlp%i+tI%6W;D6gus}_$&e^sO};;( zx9X>|v9V2PzBPOx*lXO=V=Paf6w6ZE%Mz-YU(kvJmL6_cDQ6Q~hkG#dKfHy;{Zk~QaMm6es#Q>>jmN@X0fnk3%$vCmFV1wR*zTZ&n5 z20AXIz98@~9am?5udBgM$-eaFR{t!cn{nVr0I{EKb9wGZrAAn6DoWH<%S-MqmJ{e7 zH?9Uc;}F?vSjWli;^Qod$59-8X+uBtRG-4Ozw09g7b63*DNSsKajfGrdwhKSvpxCr z{E>XmJSv<6q_of4J~Tl6ufKkAMt<$yC`xv%q$IxG+3DA(yOXs^l8WE0$Qf#=(XHx5%?#M2Gzzcr#5$lc4Ljgu3Kcf;yy zzyrpf2_g1UvEwr9SnFwc8T7pao7}tad044beH4PSFPaha=L2W&&KAFp4F?loa(T=hm=sIe?kq0oNYmvYG%!`g68$g0bZA#QM_H|zD~bU|L($z&~p z{$tq+gCm8e zgi?R+Q88fD*vBUn(s06kW4$M5W4A~fO3v{yI-OSw{T!Yt4$HIVK7d>e=-uqrMp@o) z!hMB?kQcLSGhEt>nzSgu>!P|%Z7N(Sg+pc141-KA*shj7%gL#fWser$MUUnK%@=!c zDb7t1;o?)#(W*^%osYL7B0C0q!!?6KUi(|JH3emI-_B~cE;g{fKVwMxHH*O`o^rlc z8C{Xtvlm$Oco%TExboH*(Y1_-K8XXfCzf?S+sa75UUHefY5v3Slz!)L?+~3JqvFe#?g(_3^{#A+Ohyl17}CI73X;RmZwU*K zIB^v|3S-s^YV2qa&eS6O2ER$q&S7yBgN~pBPCc^gPRJOIndj z>ux#YnRz4HZL7H-$8uG{hl-{PI{kHQ6{_nTD}w%IT81V6KdkCnt6ZLi$N!9|LAg3jYiRazx|3>#M8gb zpmF3rRc$q@%3|9_CzjN&!n z_F&Yiz|`o?L4xBVwDUOP`C{c=&2h{#`^M!+wJb-!uqmS!y*d>50qkwU3vNp|W$_zgiZ^*f0Kg9u0A1s}k6_4m6bixkEhyk&Dj2H74Zyg~icJf$R-K zyMR^@%ChR$Y8~H9Bww{~F!jF4ZD)ns+P1b~DT1h!EeZlslqS-omr$bgu7J{m(px}!iJ^!J z2!iz9A&4}A5Nbe0>AeLKdT#;g9lqs0&wh^Ez0W@H^oQWc-lp@{|~H?Ck%p;8fQLv98Wb%SH1_`NhaD^iqS&`E~u0E3SC1 z*#aJjqfc$Z?co@-EQLh7)amq5RzM=4u%nLscR=kcqCVQkcnpjo09BBW-f1rOONc@7 z7C|?GY9`C~2c>R(>=#iqSvZsFER%^4Pgo~c(3}q#Adat9u1jZezp6l}4<*<8-kzeq;6_omH+$keEA1DrQd^i# z%gi^%5~`tPsNtl!ga)SpZ;I}(&ST?DgdEJQYVhAK5c>R-vFW~0Z;IEpaB`bZE*am^ z9sX|9TSgsw4FwvCm(kyw=(Zl4MmOxwxMuBPo*!6%)Y~S~eUdQ={9joROA5Y{#I5Y< z>AXpNr($~zY#LSrM+{N^{hH5b*b4~M*FTgHK0c_5Y#dg#|a4Yo#hC# zLn17{<9?LVU8EQeAL?G$oxUft6Ex-7LHY7fE>&k+zguSGfePh2yHSJjlX1+cW6ivS zv&*-kq)@85X2^}0k-@m-4k_NG`C})odP|>*^m(B{)Y0jcsnYOA#b`L+*>q`f;~*w8 zoF5Olfsx#jy!^W}Q;(N_F17c))n#wORA8nKgJWK=5F4)PyylXo!mb%2Ltwft9blI) z$EKU?-|p#m`kqYFBSBy$nH?AAcam-2U5bVf6?Gqfzqo%WwK*3* zC7+JN7GtW%P{B8&hj{*BNT=lL3lceZQ_VQ)h-+SbMgG28G9#BIvK3&2D^)}5iJ{5c zwdK1^vWFj4T!zSkh7S(WCP9|H>#owghpDR+LIWW>!mfe7l)cdSL>6Sd)9LbuOP2Bv zi%sOySE@$p+b+$+PG_APzxh(S8G&IR><=;lZi_O{u-P}ul0q?ES1{V~iA)&HM2GOb zBFe{YF0Q4N(B_9BX)wapURS>NWItUCem695zK^|OwI60)+Nqi`V)R3W!b|&&2J>S` z^x$txjxtpI;v>^IXcOGr*DM`W0*;rDXt7Keocunj3ZHB|iym@ZemP}TH@+kKWQM0i zIuUl*7+G?%>rs0+vs7?NrX09XJy0QPlVrkssvkP$(U$07Y-;x0Pe)hsqz%^mp4Z>7 zZE6R7$&qs7N0Z$;!kNBNvB$>{aEOoD@bNw4FG5s?#a-^dqzX$q+359lDO8y%%x~i| zJ11a!_6HY0^KH!42}$1qfHCELiNxNtlwLDjs%nPor)8l291E#Qruc3=M)IPwP%T(CK`!@tc#Z)&=%a21-* z+2-%jGwbU>7S=RsS8lu{$=p%OTWRn}BIf}0@AzgM+*E}Lsi*7T(o0B-!xk*|$0p-% zVYjsUXC=h&_@3x#z$lEZHJBc?AUp<2Q$;#=N;J+H!|tO?pLuJ27|d%w1o>&QZwEC` zBtNOzwL@>dm`QC#*Ha>8tsAkv^mW>icI(c(5**5V%P(@v9Q!?RGRUB}G*$V!>OS@NWHXEAr&L&yjb|0)9Um zF;d7y{~-IN7MLhXZ0sQCgdz_O*(q-^Js2G&nyWPhjUjYSd&jz4{2)ieeAqIv#k>Vf zHKQfO)HrNLOK^YbP(b(@IEfKg(@AWK(@;E5J}TKInYKZzDe;AZoBH@M5r6)~PVE() zbu}%#6Yt3y!nU)Vlzh8Vxw7BstkHFMoeD1N+h`n?u~f&^%LR^@U6kS1jQ=AEfC7aU5eROJYPEM!-*)Ch~QB|Uj$>2jG#&nM@(FyY})ikSlq+_YFd8(3p zsk>JXmMXh1dDmf{>@KW&rjRw+Khy8$v%6@(i}gTqCZfbnK0kmB+VDTfTa3uDSAS*z zqo}DAu=bUjD0uXAoJzv&@Ong}u9CYe|DiFAmovGPFEDXp%=_7d<1N{tOSZz&i+S_+ zNi_0cv2?H~Kw8q?>l=?&%(e_r7IWGRtIq^EkqMW{@~tj=7Sn!br%ANUe9mOc(376zk2VoG-h1|7hMa8)5v_>x=qs;o5DhU!uTPgnF9%+Ny3;Oz<1=-3@i z^mc6s#GxlT%Yfr?5q~tu&#Uw@_hL=Y!W(9(o@kAa4$K#OSgR>ZN3Q*9QF~c3r0J1) z%bHuPgWd=+xmPOjc}rwFsP>%uLs`=PZYj0b>?=b~gO85uv^vDS$cvw>B)!GWbw_lT ze}00eTPkcoe<)CD7wlIvaH^5kNZlXslYJ-M$?MV+^YG?x#8@XM(c=7V;g1Imp7FTS zDP(2PX;sD7?KCD?$wO^^QrA<6uWLw$pWiFv!-J7sCCI|@z}l!~NL-R`oF9C;Gs9>0 ze7P*+rK8x&cr0{9JT6d(G(k9FeR!(`opNgK^PJgtQv67+904BK$QyGa66%`^wMuDd z@7}9>pDDH=6gSlSq_)0GQ$Y5UB&~t?j;!O5ZZb;SWJlz^G-|@A?y*}<-0ue1S~kSD zguom9Y~E>pCu7M_?KQcEThx1r(I~-nzscIm%!rhS`TF&_wM%yj&a8^{uG1#& zah$9b`bISDr=ia|A?T9i+as;KqA24W-{lsdu&#(1bjg_RZyse!)Jh4H?x^E6=92ca zaig0N387bZj!JbtbR=vwh;5~~7MefvvsykL%6cSvu86BD6*XNrvjUljsIZaT;h?Va zZCq`HD>E|QQV2@m;+>c>G=aKR(LftC0mz1OwLW!WR7ugFsWsBsvfx+OU%u#*+Q;mLlQwbb&#Ab&?}^umoNghoO+Sv8Qg{dVAL%D_l;kff$rMxbYM&o3Cm9B{gI z*t|RMz}6mCzL$sNi!YiJLFg@OkCcj8?yzh%&ggZ6n!+Pid2q=`;3Ises5_%HDo-P0 zN~r;kWhz0)N!#ucSdCW7!D?HBi)cFzU<)%MyGqkAW}m@qCdtQ}mGy@b2GzwK#O#>X z+=UK`VIzrz6S$4<%OU1iEorOQXv~K4x`1teN&VctBUU7$dVB3)?O`b~JWKj%zq(eo zd52f;xI*)FjPreFU#m>1!%SIOPf7X3rIy`ZUU}z{(Hn3$Eb_JX-b0mhh7$ z7#U(W2z>X)$sHRnq<=b*%h_(4{#*y*yQRah*teG*+ASm5^Pz(>8muJ~fy7injJGI- zn4AihB#Jk(Ld;*cKAK0rW14*`dDBV=8?DQ~+;@p*8-acx;4MD`I0 zx&5p$Hm`llYLQ+;OxoMH^oGx;>o_?BJ>G)%)Z|_(p1(;qFC_acJ-B~#=p?ixLV#hCb?eYurE4 zufgMzk|bN(+czX4LVnfCmpUvorzE^%kNMbH-!ys;myHlRUUJzxxp2Mst-Vt$BZvXI zY@(5e>(@4FP%|{dX-L+8MqyO707qu7LM&$YQ?Kp|xWNaz6;_wi8W0IyAd9Q6@!^1m zQBbtx&}dLe(&!xzIzKN?%|^= zpJvw1AFkZ6r4)rT+P?d$Qau6Jp!Rh1OJQB_W`&#L9J?@+>Rs_Aao3Aob0#)+6PPkj zA=FqSgL0HjZz$=`G}yY%dCzC*ps$+_XCy%(vpyD4R2cz-g>O%X)Vwyy8u6_YinTEj zZhS%F7?iltcmn6gFg3o_fX$NXky0#@xIU*}9b{Se1iU7b(W9LY)D>{y#F}c-z`zld zl~wP$XnlReAvR)97^E9OCVy1ESWL0=wx~&_iJh{$LP8$JaW-4$Vrra zqtnS?mU9UT>iZIcJ~_3+gcNo4{s^c1s=_~ls*%(^Pc3~tCK{kVOMvP4fB|9k4K15E z&eYquH4smuKOAx|bX~J9oQF8YTr)RhnI~*bdYvqbt7#S z%G2excjmOFXMN77D@kR>uw)&o;CyfyIkEz&7P=HLI32r_oC{-ZDmb? zr6~}OomIN-vjx_Jt&1LanT=}6gVE-!L+K9$;MZ8)g$Vx==U7;+<%26C{kMh%gdg9chvYcviUr zH=6(LZ$jJg6OCvI6mOk@skIbJF|0Vk9+_GS&m^w1s42rS00yz zQh_FC#>m^@u0879JR%iS)qsYE7FJiwd8~&-eA0yu#qBm~L1Tl` zhUqUp9Vi5?d^DEWeJ`a4H`^HgGFWVKLF$h%@85J8kZ?`;?W?59O3$R2A(hexgC7Sr z)+3x^2L{*eNxG<*D5JMx-Ydw6D zQu^B}MRkG=Z8GSU?iF@k5rcZ?rQ5c)_?YH&90xT-6 z9_LBosC~~O*Cn3+VBD+Lu-*?(T$?^0M{&@sle@VQB}uK0kC9NKh*i^o>qJp6NZBT< zYplf#oQyD@`tOwvpv0iiDAKcvNA(+Xz1rGRpO}p7jq;AC$17ZhS`}Ot!)})K<>;O* z^yg|D)*D^asFgSiGfVWgS@Wf+87Dd$=HW{N0&zf$=$uVVG_v#KG; z{#_pn#0^=HmS#fgI<^V7j%n%VkHe*Ply{&=DU>5uS9K+}a&FajlszKfTrAHmgB~%_ z2{`ya$4@^LeA>Z+Ijm=LOAvj&l4?IIr85zTu*NCKm_Ycu>vj2LPsS}&1Un6341T8r zPd9t>+&5dTL7m=OQRP~69Go3XA8_-196EUv63frdn&<5&dPR9};3cu)A&0-FWc;y- z0d)m;pEt`=a>-lb!1N}H6R47p)}MOBl3xeqxs89Zqf6?)HVdEZ<=q^DiMWIJW5cR_6G!(yg zjFUZvN0U>TdbirN3e#%UNtN6ehN5W5na)OuQ6jhDfz^xmSH1^VPu_gc+y5SKWJ;?! zVlZKsC$Zqwd1&Gi@12Ubvx^VyX1sYGG43OvkWBW*o=fOxyarlH9(Dv0wZ`>6XAbvZ z>}*yV`^g0Ty1iJ$0}>V^N4e%rZ8mBqg|jU3N0esUSP^;))(GplOj3&9G&ImpxA>}$ zUqohoE;=9T(W0<$xe|S|qK&?%W-ovo<+(BZFp)_~0ID5Feroq_|7-O@F;jE3-0PN` zq?es}YrheHLIUqFUI_cxFD!oYO(+QGpQd@;fzYGjcuW#h(ls!ZO6k$!S$u;tsY@@E z-@z z%Tq+gZ~R8OFdWKJR;~^0_A*iA57S4vm}VTt9>fZcI%pA%7+%~Ia$rOT!Q-m^Zwrh|&aSsEAIv%IGqhlji$!c<(YqXyPBsqZxQzuoaSGJXiaMuX(EFH0$Z-vPB>wPJ z$MwgNrf-jfN0AU&M!U_YmI zYhL@Z#`0n@OIdLq)b-Q3GrEIRRQ_l4yc8JrE^cMSy9>TYIAwzwTMwxIJLl+szN5NC zSo)i?Xyn`398FuT4Cg43x9cYnj-p)f70c>slil1axU`F#HBBlI`zC%qt~L52uM-3Z zg9T)o|R>^YOpQl4az98$>MZca>j zwuj}27G9>g-@9X81YJ>}Nb0MxQVNwmBND73tbK)m7K_rdRmE2zFg{Ox^^)Dw*VZ>) zcWR(Wx1=i>S-!n8!5?s+RSs8Fg-h2xdH5E(UcXoYbrdrf0dZkXxJeE&D%?%aNwz$i zb}W5{T&a?q^8e4aLm5nPW^$BuK~4vUK(Iab=WHZi2p0|*2M+f;*{XsX5pBg88_!%z zr0<#f)f$RIp=I~VX(2d1IoCepe3%d^Vz@L$#Jz&X+Jv!LKhL(La|opg9Ks(7s@*wW zeUF+0nOGY)M-7%*r~8(6gu#sXx*KXtP7jA^Fvma^wQ}qCfX&T1RU^{WhmZQrbj)gL zRQ*Y@92L;l+GeHDZV8w7Jf>qT>%O|&uGZx4jHeDlXaq_D;*_Pb9L)GQZ|!@%_JC1Q_{{`k7KL# zIiJnZqhX&iM?XG>aF4O{9qWmI(kP~Y;R|e>oXL=6Mp3w{7X?TZCD^=uJm4H5@@(NM z{*^a=&fMY2>QQA$%!+T>DBl*IyLqJask;O@YRN~o!L!Ij17@2hE@rxRwm@?*zZc)u z#H-;l->Tqo8QWfu)?WioEi!r7E$OI; zVv3D!`T2N7-+<|+r3hDk;>)JJcSBg($akyRUGzx-b%hCDV8+$dyYb3FyR2y9)uliv z|3dP*K0Cm-@!{TN$|^jBx+#JVNI4LJXzN7J#U4Bo9M8cH`9s^rofEAYZm)_Oz7@A(raL-6g6q6q+RAY!C*WotGHE=K-rp6mbiD<%Z0JBW zk~q(^0zX?U$IZI;gSInal)DKP*~Nq5PjS&mEE7X;FDIQXW7JbaUpqTJe%u2J)^RLq zmv9Ku>_ZS3y^9@F!WDXIIpPIUBJ0;Hilk%uJ6%mzYMs$^-N7N((_6(iuoU7-nFl-HuqoN~ z4=A9_DcL>8hi1^Ohks4~RDzoqTyF2a3}uDbD@{8|m6+_qu|M*t>sAX3RjjfQe4@RN zU?mYE52gWZWgC%ikqU!5=(Mk`EL$VwU3>jajFgg9oW}qLmm@;WUgHI23@<;XoVN7n zG=(W?tv}^SqL2oWp!KQ6S5d1Ym6xF_7yB`Tcjk#!9k$km$45qu*p zUaPJG??xTt-n70uC|VcTQWHkK>K@nKwFxcY8gO4-6JRC9LYk5eB?q^oWH;X#TLWWr zzh3Hj+1a`&7qiA-4+wEob|W6ZD+7qM<(;N@#+zxnph2!iQ;wLaLI&LZ|JA4q5U?LI z>ud431^&Zs#)V+lt0#oLrg9Lal|#k4PZCST~_E5H@&-W>=rmk-$iBOIoNpuJsBM3F=BxoNsQd2oN+Yl+pdy>HTLdkm_N5{FIxdR@*Vj4Rg5rH$ zx`xD0-qn~VI;^qu_x%X)vNG<%sSNZYV6%`f)VXF$_5>&B#;PA1~$0QwsseHR_X=1_(uCtOC|BH&tT!* zxwpoOXLR0X|9heS+$j~9MS$4s&bz`qc_K%mKAq00I=t28NztW6b2qF5$3L2v5C(Me$!d>%USBJ=7zU$}7RSPtunX|HIW; zJ{#O|K8jJEQBRbeT>%S{WE%|A!;OqQRfHp8WiyTNMM4#`)5Q15;Y-O;DOOBD^_@>p zU>t>Fh@}sAk14*Ua>r8oA3UH%=70opHtu+mUG0ka_pKfp_gK=1ZEzcIq7pR!@NZz2 zUE(P7lD2{CKa1q=Ph^%TAm5!eza9090RP%L;QCdTcQ*n#-`@F8kk7x*rN|#mRZLKC z{~jCqcf$)`GtLFfUYD}frTedA4bB0YDleBo|7q&KYat8Ck9_M%mF%{kdiwioC72Cp zs-ztc{qK_!xD95JAkm_Kr1&RQ|LaN-5Z~egnnu+)F#PvP-6J4u74YhNFZd67_OGE+ zsQ^tQ2P|>_eNvY%QYnXjj#iBQ?^0F%(KLq-_unUF_5jF&znmugA?&|ORbCrt%H}>I z`rjuN2jy$=| zd?tfczkPdP_kv@phEgC{&FHv(uirO2^Ob@UBam=^>v3caz*tynTZu#>L)<(R9c0HG z#ko}a`gJUy&4XL%1mEKn8bySFA_8OIOb1S`m{w9 z#LmsFcJbmRJnz8aWd@qV6`ldf?S(_o2W|`e^5BWV`CZ1R0lhPMDs?DVtkX*dt;}ZD3AR2A7b6M#&~4Kj06Sy*jkC*jg8roU#T>*+V z)*`l+ozh$9r@Nm)#21`o)qg>EgA4snp?Q8Y-^@coz-1(ndd2#D?Ac8%?@MQvpmY(u z0t68%6Z#*xxgBt6l29Mz&$BgH!;z1^=$Nn@T+w-&b0SgxcrGSN15;L9dpi`Tsiqd4 zGCJxd)gdE`n9-6d?cQspVCBE-H(uAW&USGZeDwB3bWg;iU|kS~WpnZ#g7lfk#P+$h z@CQW0L?k&lBa;(8hDkoI@QzmxLVQNY4)%8Hgk3l8+uJitj2+RZo!tBhG&@K5l%}Tv zzwK1##Umh~Shg!a#NzUBq!vuCKTECQv*u!m@cGdMy$; zgpRd9+fetQ3ZaJl?|MWv@BPcXjuIvf8NhBS$x)3Q4I?!T#fr?U)PTZ>Dn_|6h@xW6 zs;wi1yHH`opY23XH{oGr>gikB2zCwt?C+9n_;{P?M1q6Z;rG6?xTr*^qzkL6DwCf` z6K5HMaUQp6jewVXJ(T!i8UlQ;^$0|kmkSkV?|6Oil{vO95{>+~)isN`eY`~{f z=Fc_<+)cdg1Ug~hXHo-TZg+JHAA=_It(gSfAJ3oh1(lF5Fg+rk*6>F$I$6ie{Fq^u zQbulWXL!gBX_3vskZ?@lAC)~oS85{CU8I*=-o1X^^g!&};V-86ge}9be`&(wPz)j! z2UP4dvr09;{CO2lc%BH>E>?Z*HFOwLXKaN0sQ00uJ0vMDCsBjL1CdD7>v{pypM(eO z;XGjBQcgAU{BYmwZ@#-xVjVa0iw_iRM}Rhy=ClqT7#dOmYJ_w#v2B0WfeWkDJq=Ua zP7)`{d=MDxO79iranCOAKaCEU4LJScW%?MdL?TjE_f85Qj=g*-(4TKUKAaiSkvmS} zCq|lQh|q;A>14Gt2Vu?*KQ9H>mi2y$2PTne^G6t-z?ZPk8cz&kQxuq*M${o;=W>E+A-a^58E z@gXRLGnFI8B+p@?2LEVd*xIq5r(8>Rw#hL!1kDI9Y)!U z=ADBMrm}>zL6)^YiyIJ+%z5FqNC&=E4I#gRrB@BF&U=&XRXW}$juLYiz17$;NZ_L& z2Gr?&Vf}u{a2Bm+3NuOD$FOe3ADvnG>DFz$Ua{yUWp0~^kY)Eg+r>|8^`dS$Vk!QqHt z{)c>L>4ke{WW>1LKoh>wZK(*4)~H-TkJaH|k|^oD79nCYHL%V__zKp3c7G<^`O)+3 z#fN3Xbso2WS;+tSNL2$KC5@^OE1Tyxt@JGqV-gw7(N~M^OjfhpOS4kZ(u#iCc#&O} z-vy1nFRS2iGl}>Pw|!1-#UsVIt4BpcLwznPV)(-MwOZdX^#G?@6b7 zonjMlo0~4SwzeYaN{#Y5-xg*sm-dUmZRF$v3k}Mf)MW>TN(u{&W$vO+SC&0gJv>lj zl|x1VjVSNOL;@6)JNmz_~aSY9w*Kou8jruiHiRL>!p zs}LJNo!-?RH;m@8-Ci@?An0^hubhrmwVderb}y&L-l2iV7NwJL`VQU6L&n{ZKbs$5 zGd{hlOfiGXa?vqYj8}fsYAWNQ9&*qtttRR;!ci^fIy)JNXn!Bs2z_ACoSwx(73NP8 zWTf#audwjT!nCBxLbEEB0p+yc)0wC+?1bHWJ@vqK)Y|+R2iO#eTkpb zl`#iW`l-cR**AlY4Gb)sT~9_AG-HIi#5=c78O>Mfd{0OWYTOb#5?y0bJh1s$TnK<+ z++x9Y8A2|#vR_cs)e^}%i?5^|z7*#cpb#qa4xstP?pSpu*{1o~1b&|PAw zNx4Do#bjQoXDp?zDY+ysv5->EE+NrMk{BHwtug8Nf!sKPPRP)zOX>^Bsax1rJyZCY z@$AFf)~W6_Vb=wWA%5_*5mWS797#Ma-*e260+HWUVqHKnfHaDXH9G4QJFG>v#=W8~ zk#o8;u?qKbAAD)VR~$#m9#KflK9QJn5M;nRxkwO)pkOB(9!T@vrnSAN8^P zcnby)4NF5+(vdQ;?48uFz%n4)^8a$ke!7na3||XA0+*e#lqdwYs;H>!q6$h?l04Q? z0dsPc5-d|BP2pqn^o%0RAdeipb1gcnE&KjqUA}E4nc~~+1SY%|(ztzA=MK0(4Ir@H5UWsw3A z>=4_RmRZA$_L7sWd=nblX|40-AcfwH*`9KKX9a`vR$>(C-z6M8=L)!_ll`2c5Jk05Ze#zsZ`hQid5yxJxtg_ZzR@fFfBJ3?R4 zH+=V>ddOm#cD|6Jugj@rU>-Z+oD!D?{pLp&T7lOo&2{_Lb))b6IN4>W_P=LG%oUhc zfAv*dvK~HINVOMYSuFO0Eil3#5P1arWw%CN2|gMa8h>Wq92QfQYdPQCu_IcQ;^Y%c zE+)Mw+@gMuPlXiYYGgf%gpC|AmJfu&Q^seJEt=5dviL%`P zNXUhQuvfV62*Q_NzW07>b7zT8h~k|d#9PC~)ztxOtAVSv*UMg#Hf9H?oXdjVFHN}D zlw`>!tklFJ^y+uDhlIaeqNy|YQ^(ASXng-Z)d(-L%d_QwNG>BLg1_kXFnU+HtGj#a zdwX}cSU!s3#4(-j!v2+>&=nseWM?fcycj=j+S<)*XUZ(uz*)lUhucakPFGrhFPTZ~ z#6-_oSDv=a>`b9~x_<++2ola~kDZ9#XgligWiTiF^Jxt%?RGNw%lRk~h!jB0-XB<~ zv#c)J)0te^>K{NCW$hF3km|x?Fp(t?C5RNU7fWJpO16lg<9F}-I(+HY%7&xN^BfapmCJXn@NdiI$VG_a{8?#a7@XgTH zVc4=cSM~{3zTbEEtaQYFPzLs)#9RXdf?|b}efQX-r%$5P_{z}BYO1PId|BW1xK4O_ z2l~#RKkvb#JT{*qq13+En=SRYx6}+BiumNaj#jX8!1hD^z3^D~&5h z-rhRPQ4Xf8Lv=v`jC0OWO|ABqH)S?Nl9L``FCt`oGMi%cOu5Ugn7A+y*9tOyPs@wF z>I~J@&r2>fy|bjc5cKIcr5haGr$-VvYJ6ZdgW_=PXXit9LN`>shsbnYK zcja9Y6U1LVTVuGQ=k%j}#0HBhvCpG74Vw@8-G(BLw*(}t)*KivfA@S4NJ1WkWvoDP zA{s0c(ykL8j)UM>;^<|m!SR(Xn>&*8mA;}jK8yJ}oVc{Gq&354rXhhy&jgP`1(?zD zN+TDRsA@E)ZxEm?Efl8Za39|8KV-^4r&Pq3LY`#hju=~H9c?_avtM!Gx4^fKVzE}* z)k(y}2A z3A?kKAv$S(6PoR_A#Y$%O~>qAyE2^(F5zWPUiRn%t=Ds=`_{;(Jzu6vbZ&_(#=WBT ztHA9fgn)C1o5Ja4u*f5G%vW*vvwq5YYd%F|)_6bso$BcoJ%D1*kA+*Wghm6T^*1J+ zMmd?96N71jwX^_22y6A5pAN>J%=;QYwl3@FZ<3eSh@vlT8`xDY@=Vpgh)3gkd*?Y z>wDOr-afDt)Uq6__PaR;cIlO-w;^5NJjBzVY-=Lg9 zv(zph{q>>ouMyI_FUiedd)pXi+luDR5045uJgk$Qlbb`sLyzOC_syric;c;xp9V3S z1rCqn);hOB`S!CG-$v;ZCZSB6&QABXcE7xKo@r|N6hP$jHlySwnra5{5wMu%uOZaN z`BOw_luwNgV^U_8gN~M-xi|4Gj_;?nPBkd}>9B|Z1yfGarQ18xdBU!d2|9iK{c~~2 z4eL@Bd-U@4r>~h?Osv9Yr(|S^q-o~=Qr&eyzQ}+6x_eFVlKBFnKgAo!B|YS>{t@^y z{Y_ha{k_QixOIMhzL2@nuFTH-vGHx{e@@i0w1I;k)A1to4G6iYfR|4 zw^6w4##e}*oGEK&VF_pmqpZR-vAaRN#HPH zw3||sU2}gZiODRpUeC)h*1GprMoA=qy&XUo0+#ckcAxw&GpJJ_9qw-J>}0a@@dm_U4M#JY1tBf+gF0CUJRle~vg z?>OgYl1O*yF`9c8p7)rP%E6C^o}>@4$DIr~Sg7870=%L72Ji;=S{R(z2a2y00KUy7l&F?)+2XBibJ`_|sV$iAc50}o z9T5=H5+YdSO~{gttWeslU9VrKmz7A^(I@#cn)*8|^~6-OY%!l&|q5nNzupRUXQ&OeAt+>IT@p*Qu8-zI{?D(s3c~1j` zY6kOy+HUqV5Yj$hsyi(@2UB8cBX&zM11KNv+G`0x=^m*~S~pKTl=<>h%-HzyaG>L zu=yPojk0K};=Xey3O_d|n3a=Lnfw&MMjwNLJO*b~FXH*`WZE?H(rd(r_xyKpl#65^ z+p}I6|G>U!q7@}U+&TdEE#F|eqtq)9DUw?81Nki*;?@4a{iB`c@C#rMaQ|EdxPQt> zs2&&VJDzM^3T0zwXJ_g@-yHLV5ZkUD*ph1`+B#s{4})(5Af4dzuNMr^cClkkAE(VA ztmq+&Z#GwY0J51#wMxg>RvpAk;|e^kKyF--#|a!XoFeY+!oy7HPRY{K$8n_upR&s^ zIV%KW3qTHB<>Km!{}FDeK|u_+zgZC0oM@|`Gx~#e=eMH!ekR3H-zwzw{Qt?@^c52dyE zWXk*ATZgfMC;&E{tjgD~No?)jjF+CK9J)k+Spqsb)LYxyqF#Kt54(hv+WOykni9(m zzd%XcG}ABJG{A<&#>Qc^#OHUeH+e=e{lE`CC6yG+dy*PXK9A6@B@y^Xy8^weBf3K* z*e}01^g|y~1uGG}fNpp_2C(p7ch64|?hHR-WRSrBU$Uz|?Z1EbqU#S9#Q%rC{ks(v z_>-JJxQvuk>*w$O!@pf%>nHg?XeLE`ferTTJMk|I_%|PcAwvH{UqAQre`AQ+(rMp@ zqX9Y~+x5k}m6}Vdt6`;BoiTkXpfD&Z#sbZ*R#v@Ua38nEz4Ucd%dcYP>%jc`|5cK| zNHbU?AmK8bXF`Uvy?xLk+z1v$#>SZpc8Q`=4ewOEUQ{vk(OFwNkL;GGs-0>rTXKer zVG`Nx!W;}L8Z0}by_mh>T0uc((Dmyx@zl%e8*g~~L@6E;xMK-%{%hCAI1~>JzrXn}lVT=2hwIyI;!(1`XGL$9fnbt2C36 zL9_l`1}?qTtZb~(Nc>^3yMxxC+b3HtgkG6#a%(GEt6USeJ3)cPfpTrNYAwhwcH?vn zzA<^v`Ne8iWGmFe2EA0&@F(6|rYpl~)Wsf*xQhe7T9%(ThAs=ot(SO4#=arVo@Uc% z^g%rL96G}O1c=xi%4s>oicJ(nCI-#7*>YZOLlkLjhQct|C$>EdDjDZ1H0*Gfb9+!H zE4In?OSA>Y{8Y0kD3oUPdI`f^H>FctXKw9WbS@~jkvN~L{=8@PmDNAE0KW7V!<`cI z{}9|SXZ7#LnHu5L(lYH7tD_iN1_v^`HP85zth>{R7suOOr^|P3kax4N+HVGLCvh-L znCLqDzWT?`Kgcji`e-fJn=2n~<(QT_KnWK!`UB|4*7_^?-30k72xw+K5hGK zHap1DMl%VzVx49@3uA@lE!RvO9_k-COl2_w>G|fB?VN`lK;o*r*zEp4Y+lkIBz&Gp zDeb91irAYxaE*$DwBt4l_1)sw(s_W-R-KEl?OjCtP^-PuqgF9KM$3K^r_sLI>Z}NB zqxRkF=8?VZiN)1Kq&dn@AvFMvDo*4r=@BvVe*^+wxi)K=0CuifEp&=zrEGQ1rSzNH zxri&+$F?^s&lHP}m}`I3`NB;FWap35mx}y@{x4Gg7%8{9%~Z{4#@l0=&`qJ)u;`0G zj-~3{JEAfZ^lN6gNAhLvj=Ka^#<)udJw!poh3fdO#{gg$6?VBhZ6Z)mC#S0;dzGK6 zSd^|9ziQezoGR!!|9}fuuXN`_(l>PThFyO$@P-kdL;+rq2PI#dy(TPdlUjb~Kkv## zR)X&LPnq#ZvD!>om+y8$l%0{hRy@N-z7?u6$4I{S*GLo2xzy5$q2yej*2cySX#$jA z>0C#bUKVJ)wg(+y?w%q#QblwjUeManqfaDch&=c)nfz(6O+=)a73F_c%daoM>hc$& zJ0|N@RMH5#^grQCBsH%KDf@c&Uu|WK;%GQ&Cpj2o9#XM4+VhndF=0Is6-IgM8l^8J z;2-SL_WWMi0oeG&@%(1mwznAdk25dMzSDB!uTM$i2-QfhTu`c|KvK^CgVh9YU-~M~ zBEc@9q8(LB`BG8VePZaN#Xh)tDtQJ9_HHfnF{nml;x2|U#@aS#n%HWSf^t6~6zuGb zI)>W=Q&dK4$!wAbP;{!9&^_bz9y+;MTG^Ca@g{e*)8N%9&QUPUVLbhhg!483#Q(ey zEL7Bl0#}qZ;|8u0w$>ZQklb=FoE2H|Y%NB3z;I>I%GJVkdW_fPr>nnFuiQvVUbA<{ zAV*V#L0y|V-SLUzX`Ou^3pAK~T?#IX^izt?@az0ooy4dcST$u#9(3KQK<7=UpoNl2 zXpEkyTB>b#>OAk0u_lu;m{zUH&3+_)^>cny9KGS)iM?@ZPdjm}`}DH&?0+8b*9fp3 z&kfZwvN(?9t6%cD0DH$|ILSv7UYX}Ebrf^U`wOxES>;DVJ}K*}fn>LVEgD_icp2WR zV@4;O`(4yD0fE?2XGwTu?P(pP-hE3jy38QwF29`bz8^JIYtEmWbC?iI^KXO52vl!z zgcZfD_|~bDP^!i@9Q(YM+EmXkoETsu>ZlsCwN?4u#HS?_9EJpNzGR3Q_iy;_Vdeb^6Q!uaP(VE*9{Mg+*rRV`V#5}~Y=_xSBJUk1TU z7lo_f?rzt>crs9Qr~NK|?IN-Qm300%1}U6J7ra>20!sp|*7(wBEw;8=In0J3JzABu zDn8FX5U|0GT@tNyyS@U)>ogw~kM!PZyePE#2D=Nw!mW9fMeof&=#TI;t=&&#So2_% z6}<5Wz5!GOil36a{WgQ>`b9P&oIO2NPQ!)^i{<5I9Er_I(-qKlw9F9r_iX2662lZA z1DA;Zf85*EJ{=Lqv8OLuTZyBueJdJ%G6Imf;vcROV^hBIp*>2so;4hCp1LI18^)>7 zricvh#E?1?ntVo4^rGHNM>Rfl10kVjQET@sOjLCYYAf-64Rt1IKA9a0B=ufH&m_(| z%+j|Ks+REQDrU~EoX?u<__jm zadcK>Ul|2*Fd%M|wHDUjIz-ObQ)W;i?64EUuKgKKs&9-2WYmuk&^-!m7>`&o({{b8 zqGFknla*;Z+aXf9az%b`?vK+0aMgk8DA~2uYd@db01fW?`Nhapt73w>%Zx%JIkuW= zwql=W*=&K5SIy`(tfz}nWi0ja&Ck-}U!>iSEMcY1rWE zbqTflncBzEaYQAtRchPrwVKAZ;Wz%=(@zdjz%Wg4tK<8mi{h+fVX+QPii6{BfbYQZ zPW`$BD%s3!NTwAjqQQ_B<)Cce>ei?K;O?Cx6u3im8UQiB`oiuX4CWuwa|6%=1p7Ze?_WCVb%9EG zcXIOoYwx|on##7Y@exH7MsZYNr0XbEz(Ns_qKGsp(g_4qKuRc50#Xvh0xHr6kgilA zB-Bt62qH?0^j<<#ga9F-h7dye4&Hmeaq!N}{r&lSp3gsgNY2SQd#}CM+H1Z0-D~}4 z4*%URLLEl_^Z38H?Ljz@F_`mk#^2oXpQiv#JoG=@_Wzo=+xP#E0KWcF*4Z`%pjW z2_KnciFL*YM_ps+>~=VxdhG;%^Fuc!M=KL_p^lC(;!R-tRu6vV;ck2S%b5$l z&Q#p9x?ociu#}^tqp^jxq`UhRn-M$9dFhyx6bZ$enhU{e_ge9toDAm`^vz25R8v#a z$F)-O-zIODKZ~ZO<_`A7Og{3guCfxXr)h@FN$pJE7;|fF(Jtp4f>^t4%LbwWGhn zNYPs7&%RP|1E{4Aw8Df7@Qr=qXC>xn-Ofh>dYdAr<_-qg4B`mGz^aZ%TgcvF}L1t z)Kd5cr&au+YY`9foCoER-?D^j?j)}cxTbTkIMztmN}+HkNw+)bTcYac`{U%EeuSJp zt~sCyG;iJZE#qt#{T@t))4#i-W4peN`5->4cKgy6_PSaiPt2*OxAt5sO>&;AOL9K@ z=BE8K-k=wZ<{=JVy}43<`)AibJRb_$b1iV5<~+FFNmtBp^ca>Lle&kc2Lw~vKVIy- zd~rEr7(7P2+?k!&0zLVZKg2^xL?AWl{BQv-!@o?R;D?;(zC3T1LmkjpEfbTRfNIX# zbVviE-((MA6w?ezk&P-eE{5Qfcp_BZ?ri%IEjTC;y9SOUjb2&}Wg!dA#5=13bINxX0UG4dkg zNl5}GqUSa^HkLN znH|yeoGkd3%>R4eVg=YfNE;taD&O6Q?{50H6ER@*Kz&ImzI4xSjQs~~h#6-Yo`D6X z3H<5K5;&`1;8&twfB#_OXsa3uI}n!Pr(08NYWGqRlDN4{Wx7$v0?aaW4Gf~v@4qXp zBugt>SS9}H8Q*l+NC7zWG1yLick_EVUj6xjv$hpOTfvJ@{GJ7g69Pxinb=~^u*P<( zl7A)-AR!6)=9ZQYPHE7?pI5!rCJGr5q2~rL|M=$Ei!4if%#m%xTTFYc z1AT0vJv}|^_fpdA1$fqGNHO<=l0k!wTT(l*niL3-wii+4vX>_WNUkP*{C+m}DnXD_U42Y%CmTH}fk{>-+1Vx1DB8oGkYBJi?_nZ&ZO8 zY>}NUq_|{~supr3vJ%;G9TNf->P%H2h8Vc618kPzkIChQn(m^Td zdqoy45q9RdN*!7b1e6Zss<|jCI$Bm9;Gx)Gtk}GZ{B2av+M^m{V`TIR{vy3>9OZrU zX6)t#zpF)CiasQ)&{l6T?aJJ~6lk$aA?>0FvyUA>m%6&1x0qMueH*438b$kp~=Xl`vT-ac>^RIRx7d?8*qB zvSPQwQV|j!B=Eghj(3qIkZnKkyP&K#_EW4`^n|F11Pj|`NKNr6ZJiV(6^6dmaCKYJ zc$9EBgbu?p21X&K?T!{U?!@f{`)}d|YDC6@?|nW47g|p{dsd>NQ)&!jCbs2Y!T?FqPVA5FUf!2FS0J_gH6?8JZFFUB8Q2V6p zhKZrNRNsXQ7YZ*g%qAkrPO%R$=R=%BE0BpORl$dO_`eM-EF2o!WI9xr&f*D`t?!)y1^+ww_ zugG?`qsPX|7;RC7n#)tDw6>{~$^!l8;}&#+k5iEZ74hqb{h7%?akS0Lt}FYA^I>DJ zsX&^?y8~k|X?e&%pOXKq1Lt^1G>wW)Xirz@RPviHImsCg`(6wG;{x>=3sbCtni*o# z$^mV@gT{9%B6&9vQlQ$?<_?pEW~=0C9S?#Sp8`Bi%DQr_SW;Sgb#!B`_g5yBnF)rJ zE>?O^N|*>cY^=57o_y%cZb|`(8fKoyPhrekb)P(WB5yzC#+)J9*+l4~@1#ytbz^3F z@ok$*9(RfiFz*v@5Da`s(j_j`5wpY!+eu^b0>t2i!KLB#RUv254BtZ7)`z661t_Q5 zN=v;Rh-X8uCf_vv#HPI2Y?r|3V+04QY!g+a3 z`-M8E&4wTGk=t1HVjexd=@5Sf!2oA~ersycpj(VvwX-9A))It_&R3_VdyiOE%F1*a z@U64)sczI+!anwaLzBy=M&9f6N~)+MEow}4B`r`DiAd18hQ}ZZ>8^0!n%q~KO{s1? zGFodmKU6RVZw3#9klkVQT$$Q6@3VIEsXklxU)PhM^F*LPQt3cINImuXwyMeJ#^}q^ z1E7V4?5J|j`pxk^O2rh-cFd2N?v8ig&!ii@30_T8^qZY=8lKwRKXfu&z+GWHI5p%6 zt$Su^5>JUH**REqj*ZtBXTnz*L$2u)nn^Yush*{gluD9nUgDFJb8)4nm^j`^Q>hg5^tEmGOqQ?4Q>$xL%z6#Q2mKanNgP{6=d_>O}8Y% z>IGPy*qP;E(#K>-y&COjPoKF((VEVwfYQdB{$D=(7-o8EbY5;wJPV%1t_k{)2&=84 znGD*6u3 zOHsGmin_gBp=Q=K63`MuLC#OX+_02NG(chMNgB-jJdbnI@Eal6F}JbQ{oC`0CN1c= zp7UGGQc?7?`XpaFaRI;g=U031#Y2KY6w+RpQ#veTM(}2j6IvC|_VY-CohZ6Ub*egk z1GA<^p1}2>v7hs-H~mA$FIExY`D!Ax10{HBP!f4{6QFZdsnu|A=q3;ltxCi;sw6CP zX7d&O*|-cwsE>x;ioCxht^re6Q=VVvGa-LP6f@Lx zJc&xXQmIMARZc`HuYqUw)P^161C7tlua|85rd`LPqB`;?YOZ&RtEmyUW&@48oN{f~ zi!1~W{s0^p+r0wHQgD4V{#1FzAj*BXJ{syw91t-`n}y4QKZm68lODF{r^@@0*FlIx zDYu@lE~*R4_EY>OJj2#26bf8;bS#=C2WxU8UO;O_qj0n#ZkWO{V?^ub&C>ddBGniR z#FLD{nHxVa2%TJ&7Jj|yvQcsZWnfI;p6+^$q%T^1HQC6&3T5@jo1cFvJ#J)G&tm5=J^Dh z{v0xTw=Qs`S?F+;eY9eabnWy7A>onR;S_MmbiuC;OrhXUA(!U~K^N7U=0a?E5S)aN z;yMN~$^CQIhgA|Dwc;q3!T2p&)uWyeB!gW|LClR~=S#-!w$EjvxTXbz<^&PZ$r#BJ z9n#^%c~zPG8|ldl!U@GRi6mW@f}l)Upr*WE%QlR1Ms0he+;HuuXWT3IVw>K>NFl|e zTuF9c9w~#&dzjZJ#5hC9P%IOreB;WLXlCF*v5Dk|Cmi@D%?#OqvJfL3NfE=0FOROU zK4D$0;n)w`-i%(&$1vIxNwYIDWZX1L0y*DC~nwd(mA)zuko9$CNnD=J@K=X@fI=cl{yY|aGp(Iyo9 z$n6SiZ(}jdW}l|t*c((Bq$^=ML;Yd%dqOUef`xt}29N~Y-#2HzZ#r#$i(HVOi3a-< zTDRx}$~Zi!SrFC*-=OL#&viWlFCgcZe@iAIK9zvzZBsFiIDI*>MJJj;k+Z5 zOB{yGpSDb>DL?a-RN@fYwEyK|&mEEUj>Z>}{ z7%iYG5BKfrEs=U^wS9EiF~dt8@NyE>uYo~YuMOSHHspb&&XFdz$NcbzDr-1S+pUr! z-15`?o+9DRD%w8Vb^gN>(W(xfI7a36Tz}i_xJ5a5kbJwAa?j3%*&3g}F1%JU>QUxD zR>x?sB3j+A{v<+Ie>dpC7|s_eAN8nf6@<+lB&K64BMe({#VfW-6Gc9ob<6L{4M$2w zJu6AJ_gh0k-aLT-G-bjgEk{nlY0HfJvnPati|1_3Y8=u%9q9>UvIYyIp18ZeY1NYE z*`N?q2#F9xKew&8RIgwQWgy*F=Z3eGjhgc++=egIBc~*>#TBYKAE==%$rlHM$7hMJ z0=2J(EpiCqbA~tiBI8qsznp;xj=w-^m!E)zg&$An446^s?>azGAoSUW z&@{JuoXBARBp6)YUqvcrcNDKK3}u})6Amb4E{>gTRKorg2JZs0cc3|p<;xr4U9e(x~TSE{L@%=kOIC{oP4nMW_FnBks^FXLc(M*{N*|;-6D$8CQ79;1Ff-%9wT9!H2cXK%jPg9k)F=?X zZE)RG*Dhoe3F)tVFAe0^g7gAXAeL|63oCds<<%@e*~{g6rFLF5Xtb8WamSvoeyvB+@8fx`0B+ViF3XwWa%>Q1 zMFmHPa&y(S!^nIkf2sp14VEWRvW*+a(K)u==x;(-Jv3i$T81oc9;q_qw4M^|N>-GZ?G)oEW=#>fWr@EM=QN!?b{#T z-lh)|9!0y=ecJGG>($3HgbN?~zJ_>Ark`Jtg-qZO2Fer%q0dkq)#-6U z(#>ol2A@j)nIXd=u zKhBr5x$Z_-ROjNhsxxrNud}ztLR28QYY)|DzG{53M1yl_FfWVZyLnh`F6Ozp=ts4g z_Y>|9IPP)s%Dx4T92pUxUphfg@beoukykDrDUE$kL|`eH2!W8f?$woxj`PVAV|1NgEo`KI?|--c>Cxe$ z728A2wxi3)Ib4rw*kP3qR0c_400&d9*Ms>>#1!Y;Dg==VM@h3k$Cpae6Np#FGNZNN zUxYF)FTd#BShS&D))-`%oj?>mUzG_`aVw+S27&zP^ADCgC4;n2dC(`h{YSjmf|f%( zfs~AR)e9X;O(RHRCedwl^pohJ=+MF*FsgUA>IZlhqKeOad*JWb zaQUUz<`BATWOe(1bs|UKtX2^EorRGj;A-8WxhXrp;w+mE56V3(Fw#6A=Wfh>Puvgr zTGnIkmvEskA=4K3u3o9A2M3`;Wb{*23DnKOy*MtLAxq>5v`nrvSpMMf4HHxK`B*9W zdB^Og7gZmNZji@H)7#TjIuD&G>09?KwQ8%=lCD|N-HvJL>NPA_c|P3`e&mg5!xidg zR^l`E)!B=-QfIRZ&_Va?!Nvz}xTNOkr>=#o9RIn;vYp*Fyds@!ZqDibUKDNI=k@bF z!rAbgPY&AY1m?NZtf2`@7L(QytL+r~!7@vvol|FuyEPV-LKCns{(|EJlba}2d^Xe+ z>L=BUeIToum)X%3h%Ij<=Yc}5%ESa-1rG-WVj#A_F&nh*fp!eZv@-^M$zL}aT~5Dr zJI>|fXIquQ%hj*!&3aS{+3uh)>mWYmRSWXxwzEE*4J*%lO{g5^%Z4?bSHXOPQoa}B zL0aLm&Yyk?0vzRdKRc+i5QE>p8Py4|yW5dAY3&rgdDxFoQ@_v?^6ris22Mq|P_JMU zCsE;;&BIdsoN9Boh>_F^mtIQ$;5LN0;U`0suwygpuH!viT}iSYhULPJ^CS(ONwU3d z7qX13-|o8#=Dgl_x_=dya?UI65P$WQ3W^S`ZqC0^FlO0o-MuBMpE9@i$>+36DCebX z+nfAL*}bVAYk+Uvtcp9c8bHbr0DlPPJ>X#31akUiJB9*cZTX&+^Ubjg{r$)r3#qvN zEUyo<=O^Cv-{k1Ij`~mn5-av47-_|WIC-i)o{Qc{`?A-5_HdBiAR3MNtw>@DvEEnr zs*&Dbwe{lHtB{cE8fB==_?2ZP^jx93ygmp@s1;>NFU zZy@Uy#^OE#_+R&$k0$#QxsjNWz|xo#{o)HrToF-lzJsb6pSiSdaP>lL&mE z#m3q2y?36NcNS$b3y~o*n#BY|waqzDq(42#EXJzAo{(BxBaMny$t!A(XruP`ha>V2 z+$q0(7u-=*#?+-1NY0?Zn3v-dvm#q9za1`*V;5BIdnC~9_KN6dY9gVC|l0MnnEMmbr-)p{ed+keBks}|D_`Rau<%lgjXzB0N`76svKjDO_Byr zVQ6kscCP2M7C{Mp{j?X!-l@xg->ndu9nxvajFAkP6p*%<6~L88fd3WnT)Qyw0)mErR=CL9~THz9=^ zo!O+1Htzsh{+%)l6Ij=cJCQ;89*PKE*O@mSmpz62l3dcdVodWvy-&{DgcAa)(&0_R zkh<`z3=wJ_PgC@vfEy+n>J3#}n`3K>($hc&50mpV4bLW`6h~AyoUbK>Z-1HPPUYpZ z3N?w;FO>e&ud+a(Z{gX@xIT9Oits1EJQHYUX6o}F()~xeJ+KqfYIlnT$JRC?Wb9ML z&&dU^1;MQdO?3Z;9#O)j4*)Qu`ZUKYrr));ENAg`|DnxWgFRMPBqP00i=kYys7@_w61E^QM$u?}7y?)kdFn>WA4Fta^P-(RXJP%K8@(FK?i zkU?o2-VNqaU<)lTgkh|uMU{i%wr2(NPMp7!r*;>*=KrA6CS0w)n#~)>n8HGb-UUCn-kkN*8lo778=sdH7~5h}$f}4;?>f&L z3xj5%uVcP4Iu`slUseHe{Yb5$5V3!4FQ>|vM>(^s8dnOz=0ppn!zx8N=c{PoGNuQ1 zO#?Bv;~;cbV7}Q?%yQz?@Xm2c!#%uTzMi1pGLH?a7ng(5Qy${*NiuZ&Y~)0FXZ->} zMbeP)wwMg-Z#~osF#N$o!ZS(?|{IPv%aNZ56u**$DOk2=Dw=!20qB%nx!SRQJMM;*Zd54 zV#v!cz#A*h+c&Q>?UC;szTcYs2H2_V9yHw|d+Da@_Ol^MBZGYBXR!rapPSFidyJhP z6mZs3h_d%l3ric&PgiP$`;z+-&`sLr_wL1a2oNkY%iUI{?Z6Qqy-=FodP2VraQYqM z{rYlta}^6fc_g#aM@D*u87kP}o-+X+X+zzp4+F(G$xdmHkeroYjAC*iNd~2*WhRRs zj|+F-k4geB^6;H=W@9cpS`4=8re8PpSd)ZW-xb(i# zhb-3@Iw1NR!Mm46RfZH&N|vds04g=)LH!&PhRQ#523j2SoO#<$hp0y%SNT{^syre4 zes!EKtW5bm9z3{e&7g5@cHhTQzzVC6_Rl+D=PHxt3*p7Yxz9ltjHTc;LA2+1X+NYUJ<2SDMzK9#~BCvMXRqW~0`Rg0azVeDt~sW(Ko*nL5#Y zkkcawGeC9qf>-lhze4=5gN5D3KF{k{v2(ZUhUG$e!`D1R>c@!|Oo4k(1^lKPsKl6y zn~fao7&^5snKoOV>)BcybPvVxm_F(qL#f7Rf|H>JV2F!rypwLdBAAyDJ(*vxD_Ju1+`7M}Ono#LG%Asm<56 zOXI$JKWufm*RII={mvVZ>SkRk=Cgs?zIZty+cpleY;h7iHzHHQaN?{}O(JJK#^qhb zt%f^;04n>KTo})22$~;`N%uz>bh{>r`yw^oak?+^%{2eA`Ib9VqRm1PZHjt>P6xTq zXc=q{>0T9%ean;iqC|y0BH3N&Iys|aoJv6-L)#kT?V3HWDUj~pm8%oK9nEb@w+s3-TaSX>z^uIHZ#T7BwK)X6WPbztB1!80kv zGmP0#Zr1e)HH|(c-(0?I#TN$!2>GkIi>dv0taR$)-}pbimKobk85pbu-GsEfxR%*y zMzFw$%D#WA=#*(iX*8)Kxi$zk6~en%dx(KS)paWyy<7vab4*?39+jSVDhoW@@Sb|) z%DK2Gt%hOe!a3W>#E6c;ufdX-;uW}&-ltnUgy<<+dSSTE)t(?N`}AgF=4}`>Z#ECa z`CtZnL3QT7@4Tz?vug#XCayUqI$Q~0S$^0Q35uOpZfHi6;hw8|w5C@RQ*t(AU z>K(t|d)~$F6_|6v>36<3cAK=Si9MQt#sUmLx3LZJJJgWM0Mp9iNJ&Ege2Hc zL5PdQf`kNp-=b$rE3d9;>NJ}Sqjel?Zi3qegC-sm(_JmV0RHLyaCBa1y8$<3GBy)2&W8YQ)oFVHZ%Nvi(laV{Qm0;daxe zH#_6Jeb}K8x=PTO(s0D)1I?j9eFa;m;=0u^AwD#)Gq^g7?_{7-8`mS{`Wr2Hiv#Ec zf3(k*(PmRNi>>$0y7#F+|Ax@n+F1YgOakkH}M7uwIRGqJkksz(&2- zK}4pqCkpm8ti*_Cl#BL0=3e9RR{p>d@jRY_J9}8;51s;caC!f1Blql^#XMLCnfv$a zrf|wkK7po0&-W;u&379dpr&ab=sOXL=|V%(8$PKY(H1rurQU#GVGlJtmhW%JYL81o%Slfm2P* zVlTfxXBirJ=2KIQw3HOGJbx~_UBJF)hl`P;VSI8oHDN{yNE=yKEaMdZpKZ{cS8yEw za^JW!7*Dv02y4Si@_$R_03JXnK1ce~0}isL$ho-bEt{XVvEaD?byI3`$X^c}Z}rPj z-7VA}@T(5CxQK`dWnZvmmjq2zKufT_~xt zF7Lj5xAVfjJ)sK#%SFRwIIDo`IM?u(TzotjiX``*pBeIf(P}`W)y7k_VY|hcgH=!G zJniJ@XjMLDld9%#fU)D~D9-pdnWpc}&EFuyg$eB$a)>;$5&;${NS$6uT}%;yMSsQ6 zf1Qs_VK3Vuij*v}uAD%1F41C@Dj<&d#NvvYW$w{JGgdz6M~BE~MfP2#(=UD9$ddho z%eHnIeG%Wwct>-T*!yaq4esxo?!rCNe|c_vz7&~iVf5g!dLhRf$H<2*oD}`n}|l&L0p}F+PQ|ohM*kt-`#c+ zX1W=LE`ZO$Mr6suh{3>Ne*?cn=uF=Lw~Up?GLIDc;loot-Ct>C#S)V3Eek-jN1j=w zfXuCG38-DN@ELuV`*Ir=~D8R;NQP{YA3LN1vcsj)~9M}U^aP8hs@tE<=-4X36!5^@!A9hLs(u=xq z4L=*lZbjMkw4IOp;%eA_Xwi?2ZUb1<(#;J&rc3$pk)aOMA6xW8qeHz}h9?t^-CkGp z6;SJIc~}wB;P#?s}M`V~xe#yi`N;_P$3y48or}rcU729##kVK&4#V zNtQY;d0bphYXvO$)BEDiyn5?(_j-Y2((f3T*OLy8AU{9zvci19-BxRt1ZIoW+gRiJ zmoC+p456=elswFG8$4RmG2(qoT>4cIqFT0*2sv>gnR@%lQAr8$vM@y}T(0-?Ou_IU z7uP?x^a+bNm-gzFuMh7?-jj-ncz$BM<{hH#c@Brzn>4#=&}pZHmkHd~jr;e-$4A|G z@~7YaAOq-i;oPiJ*Jn45)O3s~)0Wg%etJZ`LWns151s2V6Lw^2)* zWezoUn)vd?7;kNBike>dW!Y`|gW6D=**F}!x_0&aDek!KTwzO<$-7^Eiwpsbey&Iccw=s3LS3ZK9XGl&V8a+4nGj=LV zRo)+t+msdQjJotHo`@?cd7lyN5(Z-sPW8$S725eIQ>r}%Ds-$~F`n_{TQ{#BlB$38 zUUkhObaIkwq+_(IGCrE>dV==JdnV&!$62)77iwux?1{e})6kV8+RwOKb5RT@9T%0S zH$fKKMOz%SJYd{EPp>n=b(N#i2J^MX-dq^_2AZL5g zq7#{nhWxw{txTyBf}fi`8%B5~Iy-3uN!NcWFu7udnCo`R8}?U|Dt$y)Pp^cyd*T!Z zMQ+#%O2&6w#E3#Y|8brvg#PXvYvW3-59BQlg01n7=7n%5&#wq>jgR^vxc#OwLn=5` z(>>WJga+FHNF|L>liXYwwy>_S84Q=j%oQL@Sd*J)2QkpODa zvGmdlAB=a-Ol}JCHJlwk{oiJaYSl(GJ9SW0p;A>ToBF06ihRN~W>(eD9?X5*TxLNLVt{kmh6Tz+m<{JU z4ST&gU1g6EK=MvukQM$8A!1r3Sn^L-?VllkmTG2Qbf^s6S4@lIsus-Da*<&DQ z!_jp>7H?kT^^7AzcOww38f6%O;+RtdUu*-R+e!t&sV`YN$Z@9i#^rgC*@2-J%wYz@ zk>Faa2b-}p=f)`flRul2s;*n1-Er?1?8g_g=p6lgj=r~%K}Fmx6C%hHKGm;E-sj!0 zbD@mNo$Kfi$)^HUR}u}1Vh!7NxxH3sbtimrUcl7G;6`D;H6JECQ`i65R85* zl3f2k&YlCOA;HACqV-?2%?G=9Gw(B=mzmdN-H0PNA@qCP*6q^Hpe=MV4nLD#1)%^S z^Zu&J%%-zwPSs>jNeiygq8dh}M12vu43lS$m<-@xpUdv#{vGSD40U$q;Ne+YiXd!# zu@3U5cC|!5x*YsIIQ6polXgEEZmYu$Lb%XeIbD~BB?F23%2^5V|BJxhrobb}3(1a- zcQFH*Pf*sAAJHrs(6thXuQQg?HA00ulxH|!6+?zm50*;7=HM=V`n9MS^Ef= z-sfj_wPTeL~Sb0mB?aCuZ3}tn! zM!#la*pHl8X%)>tG0B-QdOw|53$3BKIy0M1u%iN;24#2@-vrs{2;=A%YeZ5L3oKAW=+hm(v2D)9t*)<&5*r0ZVh3h(Z1l@TD=c7SyhX(63ZDLXTOF4v$rj7w#%}eG9r7{|3-p)JeABlbxFaWH|zQE-6V$YziXa270P6BW!BRn5-_j*jIrlinK(pWbbgLa7Ccblh zZDUm^@wCVtQJ7t}-s_c4Z7BL^>~EO&aa2@5X73K~{!dc-^T!fFR%3~y1LvAqjrH&> zQ!|1$Y@-L$3Lz(7348BVkT0v}f!yRw{iCSH?*9C%Q%S%>V$wdZ2YL*>WsT>E07rBk zl@!z6J|9nBYB$M@(kHx7Xpx3ID-tfFYW|ZeJR=cf9O?kx$GX5P*CHR8oR)mk;Y@Ba z3PJu^p}oYIXzh=&mFR$IaEO_wC4a`0_({cFyr?^0^*ZCHpZF_uu3a%bD=HaJEmBy~ zycO~{T?d-Zrzt$i(t1T)Ss7neR<`3TmJ#lwb92vl^f{esZ3uUvuwMAMNy=)qvZ5v= zPfS7VMCJag1pY9NG3+ejeA?V7mY`wRGqZtMk$*7cJHI@wC45n_--zSy2I^mLP{#l# z2@R4YTLb=~8Nls2M}gB1r?m^e5BLAO_uQiiR7Ako=ydG;@7KR`b+qGvfa3HO<3s=0 z));9Z0O+06^%ng5F#xWr#{s~E=)pMG?_TtSSO2YPp}xNWoszbQTmJ9Yzi)pW5F{z; z#F+krix0>@Cj#h{Z%tep+duc}G!UcdJk0q4@%f?YK*XIV?T&#$PXi&4 z!O_$G|2(KOr+`j@QKv~irs~`+=F>XBsKyBw{Ftn3cZ0NffKJVLpHcj~Du4eHxUdc| zs`2}DY<}1OkOY)gs%=lgpQpZ>oLk<|71l3Dxa>=v>jy09)v_ zJ34?GMpO*C_QO>224Wj+^CJQMg-1v8?0oR89b*10yW{_yaP`|a3-nWKdRDd{?2GT6 zNb%<0HJ}BOF-O7Hh%?@U9gzo5ug6# zVhbPr`tA8YJ^XFhk*;m#`JC>sn7cxMx&r8;sdNlbB%{qR6utY(E@A9^Yz0dBq}|Y; z{eJcR-UR$H(RS6;prox))Uj{Z zLmdu^IV;(lLLoJAi4f8k1O8?Pt{9EZ`Fo0&6&`18AfQ3&-9jqe*wsokg;r<|LejNM2 zv!HHq{Bnq_OzrvRlxps`C({EzimY}#WynLDbge&wHsm3o)qccV%37;qs2%#=xKouJ z^1h)ODgw5`NI@ahn0HHyQ8{r};`MYtqMzE%;wMR1)+Bk#*ic?gVl(^c?G5||<;iLN zVBD72{i4kZ&)&DIV+CmNT9w@#%OJ*5Dz6{Jhz>b1ftL_Vr+~yI!Tzmx&5gc-OtH(V z3knps=IUGJn0DOCoS@$_EIwFasN%+|+s0oxW5zp0sdR1S5A*J*|1Ep=H)!hWXhn%3 z&ekD)M4_U=8eNj7UpBVZf-mx?i{x>?D?XG7X~rx@UL1SSpb7X6XKFx%mhe#nwS)H4@qjQx=r6^v->#li$d=Ql%Z;2xy;h$blC%MIx3Pv zFyvlKY>&?`uFzLXKnqHHH{6PhE)w>Z6*oji_Oq<7#O$+{_!kX!G-BFww2qp5(c^EVW@P+op>y6cYXha`XK{uX2PsjGt($XszO`Lhq#=i)J8MbMO}6IEk* z)!aA}8-xw(D+`P?g005<1FwwYAQX&Lzo*$MXS6!AJl}>vL?r^yl?QzBIbU;)ILq(y!x*daQ5+APs05sfe`@zi?V)+sqr9To{o1w zp><>EEi;}$t}~Gl8|{XA?oDZCm82*nWy3@vvQD&k5_y)Qe4Piv0Yz$^E$;>O@} z%PXXsWsYEa4+l5bP)jj4!{YPo(nuyRpHPLr@^;U!?XyR%_fX)llw=U6=WvzPT*>uK z%*RS!hAwaOS`=h`9m91zQ(29uRIOeH(k1#j3gO$^D}n6O4I&2M6QimhH!dl4`bQ%_ z1!&LmVlO;0iu&s@C2(6Nse3y|9nbsxv4TI7XW-w4U6``3&&+px=~RfVqV$?lTVy0q zu=urSdfK!@y-1CV0h>99=n7922#;)bZ@+Uu}<%RuN~3@mF=>T!zCYNi|dqt z602QL7FnzG!K83RPB>e9gm7 z47K4}}N^j}B6|=%#A$QkI4gKKXGR zAG(kAksfk;cA({UkQ#K`SIn0T0Q{xk5UWgYM4)etMu}( zd)RzE$_JPN<*gWlO3FYx#d^?@ri!i7w`})9-3SicsxPM?IZ4fBqBpF1Pg#*weUTA{ zN@eAqG$u1!e(}nvlU?eh^~P2|THYN0wJGu<<+)GL$RugyMSu1QRO>$bh6Onj)q?FD71@ZA;);SEtoGdXYwT0dViUSV>-xrrD>NSPA z0X&@c@X2$T0N|!HJ}LSg;Ff*^nqKpWc{}xAE4(`RmlkVt2M+KjQ^4ameyji2M%@q6 zLzf%T!qiHg-|G3dwFtKq{3d=?@FH9fmxXxX&=A7g!BTHCD|+uNND1UAX5H_*USy^^ zBv9|ZQ8s%s12f|>e7Tt|tzX~oQQCsx-tvNrV6Xt+dTB}{eABWE5e?qs4s}BIjX~qn z6U^=&X}j<*=jxRROJ+z_brUDdB?P@0(v`x0addZNQF4CYQlgYKqzb_36nv7`Un|!3 zvEB7mJu6vK#F#c+4zz+=pJu)rxdnZ0cbIYGUz^`=c!1+dmc=nwk67WYl235$k44)8 zg|D7~& ze{EONe|Z{BX_67W+$Eg0-upEZ)0SW-{9mCUCG%IP{L!~#^4R_p_`XtN@c;bvc0bqCrhARGht-#L7kkUb)dK|V}JK9R#WzjGZ4nh}byHG%2o!_3%-)8%9n@2s8_3ACN-f2Cq>w`}O9$&aU zY?vMTwdAH)jI*NY(E%6G7u(y4ZmE4Pq^LvgBOeoh?c73L$Nx0#+d%Emtd3ay_4B{j zSA(K(SzOJ{0rvReZsUVfW=7Eu!(A$#F1^!h_)1Hx9JxFQ=S_7|dtvLU`C;VDuE`}# z*w=T|>Wagrn((eGK-lJb_6RRaxTQz1=E+aId5h#tZ?jMbE@Re{FZulvoo6L&>_S#F zSky#{WWclkG+Lpuzi1!FM^4SiqHSEB`?(9)ox^y&jHU|1RpCL2yE!L+4DtW{OTI`w zm|p=?^jo*Lb~hu2l)oqym(8jn`L*PVWxmUOh0(M>jlduJ^8H_}Tn83y^s~={DQDgXOO9sC93!4m zgg~J#@iJsEn4)- z#@&(Q zZsTCwRy~VgEi;x?QxXF6OdZot;L(4*I=kbNO~%V)pWg zyjwA}`zLQ-Tk_RHF|{J6|6$Hx9(*Z$21o#|dR8mHKY0*-wdNZ0#iZsVbaw#PQ|WL< zTi$K(ko?(jmzHP)x#HteCW(!I>9qdeHRTnY{XJVyqxVbQGan(mQyOqflq+u=gg1^T z!uu9bgR8(iTs~P`STGwQb8PjOyxXwO1vwsnx+na`O|gi>#QoURL_SwP z4l3Zd;`eK!;k$)0QYCwm?LS(d^jmFfrfhs$+OLenh-y4|m)Pc9u}^*uJ}l6{TQ zUHg10TRAGRzyMzH^ZzixU`O6u=;8}MB4yVdJaihP`qc#_T`v+!xHkHp^g#yF{A}rW z!+(ZkkG#oHuX!*(tN&&BOOn~yo3=v}AadEelzqL0EcIN-VllM_>6ZWDF_vth=!ZB& z6?kx?1pj!{j9dFKpE=jBC|B5<@W1q>{;*K$lzm6{!;hI-nbqhH7V90U#yBFZr5kGg zfkgDp#u@Dm)!o||yIyF9%DX~L@yMS*v{%M1+jIZl5&SE(_l*KeKl@J>uSz>cx73C& X)(zVjY8m_l{L|4ixQ4oV>*4ubf>g*3re>LNSCzI9n#$$(%s$N;5+zxo)ho6>)!L{ zT?-b&o;|Z;c6>jvLzNVyULoQm0s!zzMp{Az0HE{$0MZs75=<$X-ev*+AUH^CI|Bep z*UK+NJOc^=nE2X7Qp-iv-rU8_$jJ;)wX<|Ea&|G(#~E1y08&6kLR8H?^)SstO?M`F zSD3g5wXLFpO52KZqsuZ0v#%QZY}QqvIW*4?k?D(5%4S2_Ww5C`EoGYyD_gou&%5me zmv${QRlj7qs_*<)PBGSaOj%;=GPx06GR;w&u=ydA3d&04Wc~Kx?e9CEOfo2lWTZ~u zAbnc9jb$>f=N|Yye0EY#JRjm+ysYRsD4@`wMZuq_#-z<04dCSx4O;v27@fpF>HqTr zAmx0PWM*VsY~U0Y7WUa0>FDSXd&Cm?n_osNCN@@8B}TJEr~30%;pXOT_sRM`=1cY_ zUVd)w*3Yi<-#Lp^RaMtN6~gg=c}#Pl?eYn(dT4gZhpNzJQp7BTBMoR-B8RUiD+SN2R`REDwteQKzBy> z`fp22>#IHq@XL_4RkNFi0i`n9B{EBq9Cm|J-te z0^0#rpXBEdcxz;Iv`nWO`oM(Z@7-bnjS|_k48wGVwKRStp6_UXn?^~WotwK@UnS5O ziGz*pFwXY3Yoyh{N*a`!Ain;m&SnsNLH`s1|35D>RsX5DKky&-{%ew4C?}U}3_| z$@mA!-%5SqX7DyKwpMI@GV$##B4+kswMtI+xViZA@%oEd<%8PhSIoUfuK0Cxu=o+k=W!qG+p#zkR(P8|aKUdYzinM2`Ra_{zu7 z`_HxO+E%SYXALWYg9$TY18+TNGpi+3()FT6PfpWB&O%GeRpZ2~)&}vM+rH;psgD34 z{V7M#FxxDb#9FW?#oY%MkWKm66w})`HrV~o=nrK^*uhjOmRWW}1==D8kuU;g3|lPk zuU5<~n5tDE=9F80VvTTl#+}Q0c+>s7xG_0PWSKD#hD&#%T{){b989z>%UEc6o?)>_ z+hc3?f_VRMpLYSY;c?1;+S+=6>caWwE0I$ur*#OX_~<_~0lqBHYWEX+1U_|+`|NS% z5N(gC8v`W6&dz{k3VVz5N$@XB-?;*U3xKYOeYzwI#Z6|Gy_Lh`?m%vbg{kAdn!m9(}P{*>YaX(7G36(pPCl%OI&c}lgleW-s|x?DB}r&UH10-lL6j*55f1+ zbXW7r{e$t~qq5B$sJ1P|w?3C;7vbLK2j6h2bV(NAf%hClpDzXq1|{qib)gQ&pb%?2 zkeSHX#5&}mCKfI(FIuX9Iv@){&h|dlJ?dI`q`vO8UtYGKf!5UhXP~b|?<%ZC2#*?o zANb)L8rY)>K9Ws#gZRF4+QVhJBRuB!!Wm1-&z}nFRWn9~8k}DZ8Sq}f0n&G8 zH#LCgM#55Be<^oadRox0hv^pb(IkR~$*V?~cSU>rM=PH^p+r8(96U44*JwB z-v3UknwP_fw8d<{dQNA^V-}yEt}c6IrLex9?%h8i(Vd-4OBIGY9doOaSkcR)OnrzX z{Mp2}BQ1*Em(-D)KZ*Cx*gpb}xBP#+hK!+6sy7o)XWaV+5 zYo@66{CK!LRF9jRzp0+zX*>#dT@(isJx%eGw_6(}Dk6}jUVv!Iq&9w#h zM1byqr0x$vd3$}RrSB^Ti~Wwhvc}Il#ek>xK;S{SE)D>wkf3F|o9zW(rSJopmO@1k z4iPY($&c-+v4jCgURz&r#=8NgPzku@nvyd5&o$m=T$PRGkICjeZcl9X} zC_t6PpQq7RB#hZhwYj%`lu6BA%NM)d1Q!s$mX%vJHk<$}I=mT)Sc={x3(;YTWt!za zf$979)5yL7&QddLT<^`G1L6I<;2ed2_S7GuV4ZB_@$*K8p&qAlGn(C5fYc*ikDjTJ z#^*CH>t*6(LC)2_N{B;)Kew<6gq4*O?C+m@9v5Md4$*+cddFuuz?bNz1g_3yKLExz z?mY3&dWZnfo4Dh{t@sY@b?F=ghsFEn$elbnw_GWAY>VodQHZvdcR9x#(RYfQK9A5( zW~PT{=9Og#3Vd&0>O@J*NR!8EqL0`{gqu8$+dASP-+aSgYdFz$5T-e71-nBHLA=uc z&iT0<@jdbVA6Lxlm4^WZg}ZYCp{hG0qn-jVQPtNWLCL^`Wip`ZCiHX^ zxa$`r{Jh=6Yk`uSy1t}2g51$th{XL?!#=tB=?twg_?W>ymS<&t`dVGEdS;DgPAYvC z{u_%&-*^DKFk36b_Ztgfx`smK1WsS$YME*b~62`_f?fcGYr8wn(W@T*BDf8K9z2#bGz zKiob;JX-+^)Wkhe+78n5BUkxN5PVwtoW9AC$v}{S;Kn$^@-kIk9@l-i8tVCsA zeEH@k{6a!CKV3WbJnxED&@>b>#IwA$?cDmm*g9_#OXaHC>#D5XtMyqixot!_w> zJ=BvB)L@c7Q$%HWTm*6}vvn6>g{RV=zPO0|6TWo$n&Hryc31C6O$!~j#``d6>;(MX z!z;7jXO9UJ3_Ke-?l899U#2avB?SKyNwG6@(#hip#vM1SasI6~JUZo|<@G-?4m>)= z|BOoiBLztNC!j-v{{LALscQk&sj2z(bhq40ZmtD34o;#D4mg@k@nYlR;*wiFUgUaA zmufdpHjqNpx$MPsnmh9l*4nQaSn02~?@tw-EY^3fIq(Q9=e|ox&>{NT7t8ikH_~ zd>h;DrS=IrI9((tDMu|2Cx51!Z>Te+a4E2HjKKK%Nsxf#F)W0TYeA(*JX)(|X7X}K z@L(cQ2kE7uTMnc5mj!#tIn$75A)RZhwsVz}I*brVVPOZ{HZDAbawYJR#=JpcVPUv` zOZ_1&>%@+tqUd0^(&BZ~1uv+jrzf9k6u0a5H~#dO2r7enK5jjEYD66tC5cjEVcf+e z{~H8Ij9iWCd~bcsfckSL%<@>gRdpa&@(%ak(JeYzZMf9;=atg!#E-=W&EjVl`mH`! zeRH~UC93)VkqH6JWVPJfT3|H#`P}O%{XXEP)v$T-QOxBfx{hkZ_prxOj5^vWYf5C} zoh+m)o1C3Q?wtkv1MP7TH5`Gp)GjnyxI<&Bt@0APvP%cIuH0hB(F6~uo zH2^bb3rl|UV2sIM{M{+?Mh^Bf)srfDK0eE?vr9e$UIdoFh?{Cg+1_u8@sDgZ(bL>6 z?oC@#8DHK>mr<(A9;CKOSc%Dv#Bfh9xpaoU`Zn=2c2``NxopbuOD;>)f^CkGnmaNI zx3CyXXLGal7tD7vu)Ok&y_xDh{omEH!}ZJb>6zs^{7Ovy+jMXcIyvdD>pHBMICSB6 z51N9_Nvo4{a7yxiZMwNfoW@>37PZcZL z_9fQ@OWp5|3uGB`d#1nS%^Zq|**&s1qKXK`j&y)vf$_T^`Z*@nl)*H zFnx%bPi#c*H1p`ixoa8_3v>itEkr_wepy?xVse#S7`;5ecT-Id@yKAWEgsx%(&j7- zO;Mp?BUTm3Yd5V*vI+iJQ0%q&VNcvlpKDMluQ-3=edW{%?EIkV<15#gl+Y{+`=*Y! z#;)EaRJY^xS?Mk6Kk={^q=_VAz=b>q31WA(nEl^M{ zpUQbO8IX9P`4wustIyOmRpMp~iox%BCAkDGNe%(-`IKB$7AL<2BU0l zemj)wJHYav2WUhptM7+9B` zVB}cGAC@!!JTXF3YE-Vh-NY|tbHpoFnnID%Ch=YjoPNvh-Cqj(-dXKtmgp}{fVo02S+DuT`FMN}i5!n0dOUks42yfHg66;^nqQkn zArfs@1qIznj%VxfQR9){B0^Ndb8haw8tAUNTw`GA)_d-(M3ddmX2r%!+&;?i%ka6( z3gXH1pU-7(lHiS#WTBIAxf7O7Hd?mzO{*se+XnEl{0O$thF<8Gm1TH(t!Z~p@e2}` zs`WguJ079-$4n1%_HPo$DVeTW1r2r%628M??6)SL)F3Y;zI+}ME~9p^hOv;V=k#NU z6^Rg|$(2JOsjWJt`jwIYzHsw8URkrEln*P{Ve!WdusqmUMl`Td+4yNB*n45Ws}QuTN$af6 zSZy?5e#n17#o1m;_d7DBx;cGKb=Uuih7y%@pG{&<*u}l*pvPmj{KKACdQ!zRJg?); z*B^FnqZx-+Z(w&w%qm(6M>0)m361xV9~YPR`0)6e)C&x=FI*nNve$&}c7L9teze3T zGHa@5wF})d%+Dh!bjA{3AXmY?jYk4R${34Bl=%ZJ(qKQg`PFE^*pIUmoa{qf4%k?v z+DLHHzZxrdnq!=pA-oq8T(59}!)@ih*G_xB84Bvz z1l$2r0`h#^GF{3G%v0ZKw1O&rN9t<)-u&u~r&x;_f4KQF9fH(0+l7^(F$g8m!C<)9i0N#4ntI29oR&bsn!ePcue2Kr#(hRWUj0Hx2(JT>v$c7YV=40E`KNiDwpx zKZ_tT;x*SBAKB7H*fhzdu3d@ci@g{Hk(wme5&qzsEN$%J_Qe~E3zK^sPDu*$dj6mu zE>SMCn=Cd~BS&vLrKm>S)?d9Us=&9<3i5Snh$)Mm6)O6D0g1QfUvA#8S6!)Hxr8w+ zkb+Y*hCuXo)}t|nfFUUoW8BM}UuS=M!ESd|W(ZL(Q4dWT*Q@J6eax)~0(g&`UCpWZ zVec&j?d$?zvaJ+?+z>1-W93@RBz^u1TzPUvVBYL>yL4a}CY6;8BYoZ^uPtUUUitm9uFSAM+9Tnmt?O49 zxOVF>g|`p4M_^tm`BrSo9_}Q3T490!M4B>Q&Q} zCj%rvTj)K4Ew_*sCmiOOWoEOk5i{*3{Zv#*IFxC^bPcy3>YWn9ksV1zoD)Qw@pONn z{aFxWM^Zumk~VS(?2%axMn(i*(8C-jrJBnSYkv}yHJ%%K(F3!B!x)fmXJ z%BOeOtp4e#o0zH+QF}F!9^YEsg7C+ghUJ;kk8g)(Qn6fOGfZ!l+V@srA)um2YmFV& zX}gNCx?HhUiSW*HBgC8W7NDIR;=vsow$QAePfim8*i*?|g7d^q9<<=(?J7(pAtS#%%+lC$1TWM` z#rXY3b?Kd%8r)ZLuY8RiuT=G)R%a7uWSGBMn6H-$NzG6AC*xl?lN?0O>?g6b#4NoN zal_N%q%V9BY07)O%Pbetkm6!kiTEVi;bioY@Kg?q_bIQWXQEWbRxCQa$qP2m*Ui1( zc>1@q_f_v+&kuv+rACUo4o}-7KQw9q`~}ES<*QJGY&c-^r3(${>`??&f7kpl*FL?6m#p;l)BXM>mk)md`q1DTNoUQ?M{W;! zl5eKl#iM9+Qr?qqe$eA{!S&58>ta2xOMwexo_Noksvh)ZNu(perMBiT{NpL~7Ra-% zS?WC℘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 GPy9Czq2Cbz From 3ac57587b2657957d8d1d68220389fb36acb70a2 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 8 Jan 2025 15:54:34 +0800 Subject: [PATCH 29/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- include/util/taoserror.h | 1 - source/client/src/clientTmq.c | 17 ++++- source/dnode/mnode/impl/src/mndConsumer.c | 2 +- source/util/src/terror.c | 1 - tests/parallel_test/cases.task | 1 + tests/system-test/7-tmq/tmq_td32471.py | 54 +++++++++++++ utils/test/c/CMakeLists.txt | 8 ++ utils/test/c/tmq_td32471.c | 93 +++++++++++++++++++++++ utils/test/c/tmq_td32526.c | 2 +- 9 files changed, 171 insertions(+), 8 deletions(-) create mode 100644 tests/system-test/7-tmq/tmq_td32471.py create mode 100644 utils/test/c/tmq_td32471.c diff --git a/include/util/taoserror.h b/include/util/taoserror.h index a45a017688..464dffa937 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -1016,7 +1016,6 @@ int32_t taosGetErrSize(); #define TSDB_CODE_TMQ_NO_TABLE_QUALIFIED TAOS_DEF_ERROR_CODE(0, 0x4015) #define TSDB_CODE_TMQ_NO_NEED_REBALANCE TAOS_DEF_ERROR_CODE(0, 0x4016) #define TSDB_CODE_TMQ_INVALID_STATUS TAOS_DEF_ERROR_CODE(0, 0x4017) -#define TSDB_CODE_TMQ_POLL_TIMEOUT TAOS_DEF_ERROR_CODE(0, 0x4018) // stream #define TSDB_CODE_STREAM_TASK_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x4100) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 90aa2d8c65..17990761a4 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -64,6 +64,7 @@ enum { enum { TMQ_CONSUMER_STATUS__INIT = 0, TMQ_CONSUMER_STATUS__READY, + TMQ_CONSUMER_STATUS__LOST, TMQ_CONSUMER_STATUS__CLOSED, }; @@ -1318,6 +1319,9 @@ static int32_t askEpCb(void* param, SDataBuf* pMsg, int32_t code) { if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_MND_CONSUMER_NOT_READY){ tqErrorC("consumer:0x%" PRIx64 ", get topic endpoint error, code:%s", tmq->consumerId, tstrerror(code)); + if (code == TSDB_CODE_MND_CONSUMER_NOT_EXIST){ + atomic_store_8(&tmq->status, TMQ_CONSUMER_STATUS__LOST); + } } goto END; } @@ -2253,8 +2257,13 @@ static int32_t tmqPollImpl(tmq_t* tmq, int64_t timeout) { return TSDB_CODE_INVALID_MSG; } int32_t code = 0; - taosWLockLatch(&tmq->lock); + + if (atomic_load_8(&tmq->status) == TMQ_CONSUMER_STATUS__LOST){ + code = TSDB_CODE_TMQ_CONSUMER_MISMATCH; + goto end; + } + int32_t numOfTopics = taosArrayGetSize(tmq->clientTopics); tqDebugC("consumer:0x%" PRIx64 " start to poll data, numOfTopics:%d", tmq->consumerId, numOfTopics); @@ -2366,7 +2375,7 @@ static int32_t processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ if (code != 0) { tqErrorC("consumer:0x%" PRIx64 " failed to ask ep, code:%s", tmq->consumerId, tstrerror(code)); } - } else if (code == TSDB_CODE_TMQ_NO_TABLE_QUALIFIED){ + } else if (pRspWrapper->code == TSDB_CODE_TMQ_NO_TABLE_QUALIFIED){ code = 0; } tqInfoC("consumer:0x%" PRIx64 " msg from vgId:%d discarded, since %s", tmq->consumerId, pollRspWrapper->vgId, @@ -2533,7 +2542,7 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { if (timeout >= 0) { int64_t currentTime = taosGetTimestampMs(); int64_t elapsedTime = currentTime - startTime; - TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, code, lino, END, TSDB_CODE_TMQ_POLL_TIMEOUT); + TSDB_CHECK_CONDITION(elapsedTime <= timeout && elapsedTime >= 0, code, lino, END, 0); (void)tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { (void)tsem2_timewait(&tmq->rspSem, 1000); @@ -2578,7 +2587,7 @@ int32_t tmq_unsubscribe(tmq_t* tmq) { tqInfoC("consumer:0x%" PRIx64 " start to unsubscribe consumer, status:%d", tmq->consumerId, status); displayConsumeStatistics(tmq); - if (status != TMQ_CONSUMER_STATUS__READY) { + if (status != TMQ_CONSUMER_STATUS__READY && status != TMQ_CONSUMER_STATUS__LOST) { tqInfoC("consumer:0x%" PRIx64 " status:%d, already closed or not in ready state, no need unsubscribe", tmq->consumerId, status); goto END; } diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 6e9dc6ab17..c70f10fc44 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -263,7 +263,7 @@ static int32_t mndProcessMqHbReq(SRpcMsg *pMsg) { MND_TMQ_RETURN_CHECK(mndAcquireConsumer(pMnode, consumerId, &pConsumer)); MND_TMQ_RETURN_CHECK(checkPrivilege(pMnode, pConsumer, &rsp, pMsg->info.conn.user)); atomic_store_32(&pConsumer->hbStatus, 0); - mDebug("consumer:0x%" PRIx64 " receive hb pollFlag:%d %d", consumerId, req.pollFlag, pConsumer->pollStatus); + mDebug("consumer:0x%" PRIx64 " receive hb pollFlag:%d pollStatus:%d", consumerId, req.pollFlag, pConsumer->pollStatus); if (req.pollFlag == 1){ atomic_store_32(&pConsumer->pollStatus, 0); } diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 572a1b23fe..ba2d471ccf 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -859,7 +859,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT, "Replay is disabled TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_TABLE_QUALIFIED, "No table qualified for query") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_NO_NEED_REBALANCE, "No need rebalance") TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_INVALID_STATUS, "Invalid status, please subscribe topic first") -TAOS_DEFINE_ERROR(TSDB_CODE_TMQ_POLL_TIMEOUT, "TMQ poll timeout") // stream TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_TASK_NOT_EXIST, "Stream task not exist") diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 4c1e53f87f..103d65144b 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -333,6 +333,7 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/td-33225.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq_ts4563.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq_td32526.py +,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq_td32471.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmq_replay.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/tmqSeekAndCommit.py ,,n,system-test,python3 ./test.py -f 7-tmq/tmq_offset.py diff --git a/tests/system-test/7-tmq/tmq_td32471.py b/tests/system-test/7-tmq/tmq_td32471.py new file mode 100644 index 0000000000..2672c1c3b8 --- /dev/null +++ b/tests/system-test/7-tmq/tmq_td32471.py @@ -0,0 +1,54 @@ +import taos +import sys +import time +import socket +import os +import threading + +from util.log import * +from util.sql import * +from util.cases import * +from util.dnodes import * +from util.common import * +from taos.tmq import * +sys.path.append("./7-tmq") +from tmqCommon import * + +class TDTestCase: + updatecfgDict = {'debugFlag': 135, 'asynclog': 0} + def init(self, conn, logSql, replicaVar=1): + self.replicaVar = int(replicaVar) + tdLog.debug(f"start to excute {__file__}") + tdSql.init(conn.cursor()) + #tdSql.init(conn.cursor(), logSql) # output sql.txt file + + def run(self): + tdSql.execute(f'create database if not exists db_32471') + tdSql.execute(f'use db_32471') + tdSql.execute(f'CREATE STABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)') + tdSql.execute("INSERT INTO d1001 USING meters TAGS('California.SanFrancisco', 2) VALUES('2018-10-05 14:38:05.000',10.30000,219,0.31000)") + + buildPath = tdCom.getBuildPath() + cmdStr = '%s/build/bin/tmq_td32471'%(buildPath) + # tdLog.info(cmdStr) + # os.system(cmdStr) + # + # tdSql.execute("drop topic db_32471_topic") + tdSql.execute(f'alter stable meters add column item_tags nchar(500)') + tdSql.execute(f'alter stable meters add column new_col nchar(100)') + tdSql.execute("create topic db_32471_topic as select * from db_32471.meters") + + tdSql.execute("INSERT INTO d1001 USING meters TAGS('California.SanFrancisco', 2) VALUES('2018-10-06 14:38:05.000',10.30000,219,0.31000, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '1')") + + tdLog.info(cmdStr) + if os.system(cmdStr) != 0: + tdLog.exit(cmdStr) + + return + + def stop(self): + tdSql.close() + tdLog.success(f"{__file__} successfully executed") + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) \ No newline at end of file diff --git a/utils/test/c/CMakeLists.txt b/utils/test/c/CMakeLists.txt index cb0410e9bf..d1c049ef1e 100644 --- a/utils/test/c/CMakeLists.txt +++ b/utils/test/c/CMakeLists.txt @@ -6,6 +6,7 @@ add_executable(tmq_taosx_ci tmq_taosx_ci.c) add_executable(tmq_ts5466 tmq_ts5466.c) add_executable(tmq_td32526 tmq_td32526.c) add_executable(tmq_td32187 tmq_td32187.c) +add_executable(tmq_td32471 tmq_td32471.c) add_executable(tmq_write_raw_test tmq_write_raw_test.c) add_executable(write_raw_block_test write_raw_block_test.c) add_executable(sml_test sml_test.c) @@ -72,6 +73,13 @@ target_link_libraries( PUBLIC common PUBLIC os ) +target_link_libraries( + tmq_td32471 + PUBLIC ${TAOS_LIB} + PUBLIC util + PUBLIC common + PUBLIC os +) target_link_libraries( tmq_td32526 PUBLIC ${TAOS_LIB} diff --git a/utils/test/c/tmq_td32471.c b/utils/test/c/tmq_td32471.c new file mode 100644 index 0000000000..bf14e3f61b --- /dev/null +++ b/utils/test/c/tmq_td32471.c @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include "cJSON.h" +#include "taos.h" +#include "tmsg.h" +#include "types.h" + +void tmq_commit_cb_print(tmq_t* tmq, int32_t code, void* param) { + printf("commit %d tmq %p param %p\n", code, tmq, param); +} + +tmq_t* build_consumer() { + tmq_conf_t* conf = tmq_conf_new(); + tmq_conf_set(conf, "group.id", "g1"); + tmq_conf_set(conf, "client.id", "my app 1"); + tmq_conf_set(conf, "td.connect.user", "root"); + tmq_conf_set(conf, "td.connect.pass", "taosdata"); + tmq_conf_set(conf, "msg.with.table.name", "true"); + tmq_conf_set(conf, "enable.auto.commit", "true"); + tmq_conf_set(conf, "auto.offset.reset", "earliest"); + tmq_conf_set(conf, "msg.consume.excluded", "1"); + tmq_conf_set(conf, "max.poll.interval.ms", "2000"); + tmq_conf_set(conf, "heartbeat.interval.ms", "100"); + + tmq_conf_set_auto_commit_cb(conf, tmq_commit_cb_print, NULL); + tmq_t* tmq = tmq_consumer_new(conf, NULL, 0); + assert(tmq); + tmq_conf_destroy(conf); + return tmq; +} + +tmq_list_t* build_topic_list() { + tmq_list_t* topic_list = tmq_list_new(); + tmq_list_append(topic_list, "db_32471_topic"); + return topic_list; +} + +void basic_consume_loop(tmq_t* tmq, tmq_list_t* topics) { + int32_t code; + + if ((code = tmq_subscribe(tmq, topics))) { + fprintf(stderr, "%% Failed to start consuming topics: %s\n", tmq_err2str(code)); + printf("subscribe err\n"); + return; + } + int32_t cnt = 0; + while (1) { + TAOS_RES* tmqmessage = tmq_consumer_poll(tmq, 1000); + if (tmqmessage) { + cnt++; + taos_free_result(tmqmessage); + } else { + ASSERT(taos_errno(NULL) == 0); + break; + } + } + + taosSsleep(5); + TAOS_RES* tmqmessage = tmq_consumer_poll(tmq, 1000); + ASSERT(tmqmessage == NULL); + ASSERT(taos_errno(NULL) == TSDB_CODE_TMQ_CONSUMER_MISMATCH); + + code = tmq_consumer_close(tmq); + if (code) + fprintf(stderr, "%% Failed to close consumer: %s\n", tmq_err2str(code)); + else + fprintf(stderr, "%% Consumer closed\n"); +} + +int main(int argc, char* argv[]) { + tmq_t* tmq = build_consumer(); + tmq_list_t* topic_list = build_topic_list(); + basic_consume_loop(tmq, topic_list); + tmq_list_destroy(topic_list); +} \ No newline at end of file diff --git a/utils/test/c/tmq_td32526.c b/utils/test/c/tmq_td32526.c index 0150745f57..b6e68c5efc 100644 --- a/utils/test/c/tmq_td32526.c +++ b/utils/test/c/tmq_td32526.c @@ -181,7 +181,7 @@ void basic_consume_loop(tmq_t* tmq, tmq_list_t* topics) { printResult(tmqmessage); taos_free_result(tmqmessage); } else { - ASSERT(taos_errno(NULL) == TSDB_CODE_TMQ_POLL_TIMEOUT); + ASSERT(taos_errno(NULL) == 0); break; } } From 9afd44f51072c8549028f3cdb7564220c69d7278 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 8 Jan 2025 16:53:22 +0800 Subject: [PATCH 30/30] fix:[TD-32471]set error code to terrno if tmq_consumer_poll return NULL --- docs/en/14-reference/09-error-code.md | 1 - docs/zh/14-reference/09-error-code.md | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/en/14-reference/09-error-code.md b/docs/en/14-reference/09-error-code.md index 6737fd1124..233ac78a19 100644 --- a/docs/en/14-reference/09-error-code.md +++ b/docs/en/14-reference/09-error-code.md @@ -535,6 +535,5 @@ This document details the server error codes that may be encountered when using | 0x80004001 | Consumer mismatch | The vnode requested for subscription and the reassigned vnode are inconsistent, usually occurs when new consumers join the same consumer group | Internal error, not exposed to users | | 0x80004002 | Consumer closed | The consumer no longer exists | Check if it has already been closed | | 0x80004017 | Invalid status, please subscribe topic first | tmq status invalidate | Without calling subscribe, directly poll data | -| 0x80004018 | TMQ poll timeout | timeout is too small or there is no data to consume | Adjust the timeout parameter appropriately or check if the data has been consumed | | 0x80004100 | Stream task not exist | The stream computing task does not exist | Check the server-side error logs | diff --git a/docs/zh/14-reference/09-error-code.md b/docs/zh/14-reference/09-error-code.md index d2b48d509b..afc44c97db 100644 --- a/docs/zh/14-reference/09-error-code.md +++ b/docs/zh/14-reference/09-error-code.md @@ -555,6 +555,5 @@ description: TDengine 服务端的错误码列表和详细说明 | 0x80004001 | Consumer mismatch | 订阅请求的vnode和重新分配的vnode不一致,一般存在于有新消费者加入相同消费者组里时 | 内部错误,不暴露给用户 | | 0x80004002 | Consumer closed | 消费者已经不存在了 | 查看是否已经close掉了 | | 0x80004017 | Invalid status, please subscribe topic first | 数据订阅状态不对 | 没有调用 subscribe,直接poll数据 | -| 0x80004018 | TMQ poll timeout | 数据订阅超时,超时时间太短,或者数据消费完毕 | 可适当调大timeout 参数或者检测数据是否消费完毕 | | 0x80004100 | Stream task not exist | 流计算任务不存在 | 具体查看server端的错误日志 |