diff --git a/cmake/cmake.options b/cmake/cmake.options index e12de3e4e6..fc17ddecf6 100644 --- a/cmake/cmake.options +++ b/cmake/cmake.options @@ -47,27 +47,20 @@ IF(${TD_WINDOWS}) MESSAGE("build wingetopt Win32") option( - BUILD_WINGETOPT + BUILD_WINGETOPT "If build wingetopt on Windows" ON ) - + option( TDENGINE_3 "TDengine 3.x for taos-tools" ON ) - + option( BUILD_CRASHDUMP - "If build crashdump on Windows" - ON - ) - - MESSAGE("build geos Win32") - option( - BUILD_GEOS - "If build geos on Windows" + "If build crashdump on Windows" ON ) @@ -79,7 +72,7 @@ ENDIF () option( BUILD_GEOS - "If build geos on Windows" + "If build with geos" ON ) @@ -95,6 +88,12 @@ option( ON ) +option( + BUILD_PCRE2 + "If build with pcre2" + ON +) + option( JEMALLOC_ENABLED "If build with jemalloc" @@ -114,14 +113,14 @@ option( ) option( - BUILD_WITH_LEVELDB - "If build with leveldb" + BUILD_WITH_LEVELDB + "If build with leveldb" OFF ) option( - BUILD_WITH_ROCKSDB - "If build with rocksdb" + BUILD_WITH_ROCKSDB + "If build with rocksdb" ON ) @@ -170,46 +169,46 @@ ENDIF () option( BUILD_WITH_SQLITE - "If build with sqlite" + "If build with sqlite" OFF ) option( BUILD_WITH_BDB - "If build with BDB" + "If build with BDB" OFF ) option( - BUILD_WITH_LUCENE - "If build with lucene" - off + BUILD_WITH_LUCENE + "If build with lucene" + off ) option( BUILD_WITH_NURAFT - "If build with NuRaft" + "If build with NuRaft" OFF ) option( BUILD_WITH_UV - "If build with libuv" - ON + "If build with libuv" + ON ) option( BUILD_WITH_UV_TRANS - "If build with libuv_trans " - ON + "If build with libuv_trans " + ON ) IF(${TD_LINUX} MATCHES TRUE) option( - BUILD_DEPENDENCY_TESTS - "If build dependency tests" + BUILD_DEPENDENCY_TESTS + "If build dependency tests" ON ) @@ -217,14 +216,14 @@ ENDIF () option( BUILD_DOCS - "If use doxygen build documents" + "If use doxygen build documents" OFF ) option( BUILD_WITH_INVERTEDINDEX - "If use invertedIndex" - ON + "If use invertedIndex" + ON ) option( diff --git a/cmake/curl_CMakeLists.txt.in b/cmake/curl_CMakeLists.txt.in index 197d978fb7..8e06569f4d 100644 --- a/cmake/curl_CMakeLists.txt.in +++ b/cmake/curl_CMakeLists.txt.in @@ -12,7 +12,7 @@ ExternalProject_Add(curl2 BUILD_IN_SOURCE TRUE BUILD_ALWAYS 1 UPDATE_COMMAND "" - CONFIGURE_COMMAND ./configure --prefix=$ENV{HOME}/.cos-local.2 --with-ssl=$ENV{HOME}/.cos-local.2 --enable-shared=no --disable-ldap --disable-ldaps --without-brotli --without-zstd --without-libidn2 --without-nghttp2 #--enable-debug + CONFIGURE_COMMAND ./configure --prefix=$ENV{HOME}/.cos-local.2 --with-ssl=$ENV{HOME}/.cos-local.2 --enable-shared=no --disable-ldap --disable-ldaps --without-brotli --without-zstd --without-libidn2 --without-nghttp2 --without-libpsl #--enable-debug BUILD_COMMAND make -j INSTALL_COMMAND make install TEST_COMMAND "" diff --git a/cmake/pcre2_CMakeLists.txt.in b/cmake/pcre2_CMakeLists.txt.in new file mode 100644 index 0000000000..c3115d8201 --- /dev/null +++ b/cmake/pcre2_CMakeLists.txt.in @@ -0,0 +1,13 @@ + +# pcre2 +ExternalProject_Add(pcre2 + GIT_REPOSITORY https://github.com/PCRE2Project/pcre2.git + GIT_TAG pcre2-10.43 + SOURCE_DIR "${TD_CONTRIB_DIR}/pcre2" + #BINARY_DIR "${TD_CONTRIB_DIR}/pcre2" + #BUILD_IN_SOURCE TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) diff --git a/cmake/xz_CMakeLists.txt.in b/cmake/xz_CMakeLists.txt.in index dc79974fda..e704fcbbbf 100644 --- a/cmake/xz_CMakeLists.txt.in +++ b/cmake/xz_CMakeLists.txt.in @@ -1,7 +1,5 @@ -# xz - -if (${TD_LINUX}) +# xz ExternalProject_Add(xz GIT_REPOSITORY https://github.com/xz-mirror/xz.git GIT_TAG v5.4.4 @@ -13,5 +11,4 @@ ExternalProject_Add(xz BUILD_COMMAND "" INSTALL_COMMAND "" TEST_COMMAND "" -) -endif() \ No newline at end of file +) \ No newline at end of file diff --git a/cmake/zlib_CMakeLists.txt.in b/cmake/zlib_CMakeLists.txt.in index 8f45ecc497..87a17c7377 100644 --- a/cmake/zlib_CMakeLists.txt.in +++ b/cmake/zlib_CMakeLists.txt.in @@ -2,7 +2,6 @@ # zlib -if (${TD_LINUX}) ExternalProject_Add(zlib GIT_REPOSITORY https://github.com/taosdata-contrib/zlib.git GIT_TAG v1.2.11 @@ -14,4 +13,3 @@ ExternalProject_Add(zlib INSTALL_COMMAND "" TEST_COMMAND "" ) -endif() diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index ccd60df19a..33179662fd 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -121,7 +121,7 @@ if (${BUILD_CONTRIB}) cat("${TD_SUPPORT_DIR}/rocksdb_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) add_definitions(-DUSE_ROCKSDB) endif() -else() +else() if (NOT ${TD_LINUX}) if(${BUILD_WITH_ROCKSDB}) cat("${TD_SUPPORT_DIR}/rocksdb_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) @@ -183,6 +183,11 @@ if(${BUILD_GEOS}) cat("${TD_SUPPORT_DIR}/geos_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) endif() +# +if(${BUILD_PCRE2}) + cat("${TD_SUPPORT_DIR}/pcre2_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) +endif() + # download dependencies configure_file(${CONTRIB_TMP_FILE} "${TD_CONTRIB_DIR}/deps-download/CMakeLists.txt") execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . @@ -250,6 +255,10 @@ target_include_directories( # zlib set(CMAKE_PROJECT_INCLUDE_BEFORE "${TD_SUPPORT_DIR}/EnableCMP0048.txt.in") +if(${TD_DARWIN}) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-non-prototype") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-non-prototype") +endif(${TD_DARWIN}) add_subdirectory(zlib EXCLUDE_FROM_ALL) target_include_directories( zlibstatic @@ -266,8 +275,8 @@ unset(CMAKE_PROJECT_INCLUDE_BEFORE) # add_subdirectory(xz EXCLUDE_FROM_ALL) # target_include_directories( # xz -# PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/xz -# PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/xz +# PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/xz +# PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/xz # ) # leveldb @@ -347,7 +356,7 @@ if (${BUILD_WITH_ROCKSDB}) rocksdb PUBLIC $ ) - else() + else() if (NOT ${TD_LINUX}) MESSAGE(STATUS "ROCKSDB CXX STATUS CONFIG: " ${CMAKE_CXX_FLAGS}) MESSAGE(STATUS "ROCKSDB C STATUS CONFIG: " ${CMAKE_C_FLAGS}) @@ -396,8 +405,8 @@ if (${BUILD_WITH_ROCKSDB}) rocksdb PUBLIC $ ) - endif() - + endif() + endif() endif() @@ -601,6 +610,10 @@ if(${BUILD_GEOS}) ) endif(${BUILD_GEOS}) +if (${BUILD_PCRE2}) + add_subdirectory(pcre2 EXCLUDE_FROM_ALL) +endif(${BUILD_PCRE2}) + # ================================================================================================ # Build test # ================================================================================================ diff --git a/docs/en/01-index.md b/docs/en/01-index.md index 54271659ec..b5b01745da 100644 --- a/docs/en/01-index.md +++ b/docs/en/01-index.md @@ -13,7 +13,7 @@ TDengine greatly improves the efficiency of data ingestion, querying, and storag If you are a developer, please read the [Developer Guide](./develop) carefully. This section introduces the database connection, data modeling, data ingestion, query, continuous query, cache, data subscription, user-defined functions, and other functionality in detail. Sample code is provided for a variety of programming languages. In most cases, you can just copy and paste the sample code, and make a few changes to accommodate your application, and it will work. -We live in the era of big data, and scale-up is unable to meet the growing needs of the business. Any modern data system must have the ability to scale out, and clustering has become an indispensable feature of big data systems. Not only did the TDengine team develop the cluster feature, but also decided to open source this important feature. To learn how to deploy, manage and maintain a TDengine cluster please refer to [Cluster Deployment](../deployment). +We live in the era of big data, and scale-up is unable to meet the growing needs of the business. Any modern data system must have the ability to scale out, and clustering has become an indispensable feature of big data systems. Not only did the TDengine team develop the cluster feature, but also decided to open source this important feature. To learn how to deploy, manage and maintain a TDengine cluster please refer to [Cluster Deployment](./deployment). TDengine uses ubiquitous SQL as its query language, which greatly reduces learning costs and migration costs. In addition to the standard SQL, TDengine has extensions to better support time series data analysis. These extensions include functions such as roll-up, interpolation, and time-weighted average, among many others. The [SQL Reference](./taos-sql) chapter describes the SQL syntax in detail and lists the various supported commands and functions. diff --git a/docs/en/07-develop/01-connect/index.md b/docs/en/07-develop/01-connect/index.md index 2f826920ad..f84a65d326 100644 --- a/docs/en/07-develop/01-connect/index.md +++ b/docs/en/07-develop/01-connect/index.md @@ -36,7 +36,7 @@ For REST and native connections, client libraries provide similar APIs for perfo Key differences: 3. The REST connection is more accessible with cross-platform support, however it results in a 30% performance downgrade. -1. The TDengine client driver (taosc) has the highest performance with all the features of TDengine like [Parameter Binding](../../client-libraries/cpp#parameter-binding-api), [Subscription](../../client-libraries/cpp#subscription-and-consumption-api), etc. +1. The TDengine client driver (taosc) has the highest performance with all the features of TDengine like [Parameter Binding](../../client-libraries/cpp#parameter-binding-api), [Subscription](../../client-libraries/cpp#subscription-api), etc. ## Install Client Driver taosc diff --git a/docs/en/07-develop/02-model/index.mdx b/docs/en/07-develop/02-model/index.mdx index a18e1932ab..6df4d6a0e7 100644 --- a/docs/en/07-develop/02-model/index.mdx +++ b/docs/en/07-develop/02-model/index.mdx @@ -41,7 +41,7 @@ Without the current database specified, table name must be preceded with the cor ## Create STable -In a time-series application, there may be multiple kinds of data collection points. For example, in the electrical power system there are meters, transformers, bus bars, switches, etc. For easy and efficient aggregation of multiple tables, one STable needs to be created for each kind of data collection point. For example, for the meters in [table 1](../../concept/#model_table1), the SQL statement below can be used to create the super table. +In a time-series application, there may be multiple kinds of data collection points. For example, in the electrical power system there are meters, transformers, bus bars, switches, etc. For easy and efficient aggregation of multiple tables, one STable needs to be created for each kind of data collection point. For example, for the meters in [table 1](../../concept/), the SQL statement below can be used to create the super table. ```sql CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int); diff --git a/docs/en/07-develop/03-insert-data/30-influxdb-line.mdx b/docs/en/07-develop/03-insert-data/30-influxdb-line.mdx index b90b92510a..ddcaad8914 100644 --- a/docs/en/07-develop/03-insert-data/30-influxdb-line.mdx +++ b/docs/en/07-develop/03-insert-data/30-influxdb-line.mdx @@ -46,7 +46,7 @@ meters,location=California.LosAngeles,groupid=2 current=13.4,voltage=223,phase=0 ::: -For more details please refer to [InfluxDB Line Protocol](https://docs.influxdata.com/influxdb/v2.0/reference/syntax/line-protocol/) and [TDengine Schemaless](../../../reference/schemaless/#Schemaless-Line-Protocol) +For more details please refer to [InfluxDB Line Protocol](https://docs.influxdata.com/influxdb/v2.0/reference/syntax/line-protocol/) and [TDengine Schemaless](../../../reference/schemaless/) ## Examples diff --git a/docs/en/08-client-libraries/03-cpp.mdx b/docs/en/08-client-libraries/03-cpp.mdx index 59c5af9c03..dda436f553 100644 --- a/docs/en/08-client-libraries/03-cpp.mdx +++ b/docs/en/08-client-libraries/03-cpp.mdx @@ -32,7 +32,7 @@ The version number of the TDengine client driver and the version number of the T ## Installation Steps -Please refer to the [Installation Steps](../#installation-steps) for TDengine client driver installation +Please refer to [Install Client Driver](../#install-client-driver) for TDengine client driver installation ## Establishing a connection @@ -372,7 +372,7 @@ The specific functions related to the interface are as follows (see also the [pr Execute the prepared statement. Currently, a statement can only be executed once. - `int taos_stmt_affected_rows(TAOS_STMT *stmt)` - + Gets the number of rows affected by executing bind statements multiple times. - `int taos_stmt_affected_rows_once(TAOS_STMT *stmt)` diff --git a/docs/en/08-client-libraries/04-java.mdx b/docs/en/08-client-libraries/04-java.mdx index 9feab378e0..8af4e86899 100644 --- a/docs/en/08-client-libraries/04-java.mdx +++ b/docs/en/08-client-libraries/04-java.mdx @@ -160,7 +160,7 @@ For Java connector, the jts library can be used to easily create GEOMETRY type o Before using Java client library to connect to the database, the following conditions are required. - Java 1.8 or above runtime environment and Maven 3.6 or above installed -- TDengine client driver installed (required for native connections, not required for REST connections), please refer to [Installing Client Driver](../#Install-Client-Driver) +- TDengine client driver installed (required for native connections, not required for REST connections), please refer to [Install Client Driver](../#install-client-driver) ### Install the client library @@ -368,7 +368,7 @@ The configuration parameters in properties are as follows. - TSDBDriver.PROPERTY_KEY_MESSAGE_WAIT_TIMEOUT: message transmission timeout in milliseconds, the default value is 60000 ms. It only takes effect when using JDBC REST connection and batchfetch is true. - TSDBDriver.PROPERTY_KEY_USE_SSL: connecting Securely Using SSL. true: using SSL connection, false: not using SSL connection. It only takes effect when using JDBC REST connection. - TSDBDriver.HTTP_POOL_SIZE: size of REST concurrent requests. The default value is 20. - For JDBC native connections, you can specify other parameters, such as log level, SQL length, etc., by specifying URL and Properties. For more detailed configuration, please refer to [Client Configuration](../../reference/config/#Client-Only). + For JDBC native connections, you can specify other parameters, such as log level, SQL length, etc., by specifying URL and Properties. For more detailed configuration, please refer to [Client Configuration](../../reference/config/#configuration-file-on-client-side). ### Priority of configuration parameters diff --git a/docs/en/08-client-libraries/05-go.mdx b/docs/en/08-client-libraries/05-go.mdx index 11930e2429..528a21707e 100644 --- a/docs/en/08-client-libraries/05-go.mdx +++ b/docs/en/08-client-libraries/05-go.mdx @@ -129,7 +129,7 @@ username:password@protocol(address)/dbname?param=value _taosSql_ implements Go's `database/sql/driver` interface via cgo. You can use the [`database/sql`](https://golang.org/pkg/database/sql/) interface by simply introducing the driver. -Use `taosSql` as `driverName` and use a correct [DSN](#DSN) as `dataSourceName`, DSN supports the following parameters. +Use `taosSql` as `driverName` and use a correct DSN as `dataSourceName`, DSN supports the following parameters. * cfg specifies the `taos.cfg` directory @@ -160,7 +160,7 @@ func main() { _taosRestful_ implements Go's `database/sql/driver` interface via `http client`. You can use the [`database/sql`](https://golang.org/pkg/database/sql/) interface by simply introducing the driver. -Use `taosRestful` as `driverName` and use a correct [DSN](#DSN) as `dataSourceName` with the following parameters supported by the DSN. +Use `taosRestful` as `driverName` and use a correct DSN as `dataSourceName` with the following parameters supported by the DSN. * `disableCompression` whether to accept compressed data, default is true do not accept compressed data, set to false if transferring data using gzip compression. * `readBufferSize` The default size of the buffer for reading data is 4K (4096), which can be adjusted upwards when the query result has a lot of data. @@ -191,7 +191,7 @@ func main() { _taosRestful_ implements Go's `database/sql/driver` interface via `http client`. You can use the [`database/sql`](https://golang.org/pkg/database/sql/) interface by simply introducing the driver (driver-go minimum version 3.0.2). -Use `taosWS` as `driverName` and use a correct [DSN](#DSN) as `dataSourceName` with the following parameters supported by the DSN. +Use `taosWS` as `driverName` and use a correct DSN as `dataSourceName` with the following parameters supported by the DSN. * `writeTimeout` The timeout to send data via WebSocket. * `readTimeout` The timeout to receive response data via WebSocket. diff --git a/docs/en/08-client-libraries/06-rust.mdx b/docs/en/08-client-libraries/06-rust.mdx index ff4c1bf92b..cb27a2529d 100644 --- a/docs/en/08-client-libraries/06-rust.mdx +++ b/docs/en/08-client-libraries/06-rust.mdx @@ -321,7 +321,7 @@ let rs = taos.query_with_req_id("select * from stable where tag1 is null", 1)?; TDengine has significantly improved the bind APIs to support data writing (INSERT) scenarios. Writing data in this way avoids the resource consumption of SQL syntax parsing, resulting in significant write performance improvements in many cases. -Parameter binding details see [API Reference](#stmt-api) +Parameter binding details see [API Reference](#bind-interface) @@ -447,7 +447,7 @@ The following parameters can be configured for the TMQ DSN. Only `group.id` is m - `auto.commit.interval.ms`: Interval for automatic commits. #### Full Sample Code - + For more information, see [GitHub sample file](https://github.com/taosdata/TDengine/blob/3.0/docs/examples/rust/nativeexample/examples/subscribe_demo.rs). ### Use with connection pool @@ -559,7 +559,7 @@ The [Taos][struct.Taos] object provides an API to perform operations on multiple // binary/varchar to String location: String, } - + let records: Vec = taos .query("select * from `meters`") .await? @@ -578,11 +578,7 @@ Note that Rust asynchronous functions and an asynchronous runtime are required. In addition, this structure is also the entry point for Parameter Binding and Line Protocol Interface. Please refer to the specific API descriptions for usage. -

- -Bind Interface - -

+### Bind Interface Similar to the C interface, Rust provides the bind interface's wrapping. First, the [Taos][struct.taos] object creates a parameter binding object [Stmt] for an SQL statement. diff --git a/docs/en/08-client-libraries/07-python.mdx b/docs/en/08-client-libraries/07-python.mdx index 3110afcf10..220d676c2b 100644 --- a/docs/en/08-client-libraries/07-python.mdx +++ b/docs/en/08-client-libraries/07-python.mdx @@ -95,7 +95,7 @@ TDengine currently supports timestamp, number, character, Boolean type, and the 1. Install Python. The recent taospy package requires Python 3.6.2+. The earlier versions of taospy require Python 3.7+. The taos-ws-py package requires Python 3.7+. If Python is not available on your system, refer to the [Python BeginnersGuide](https://wiki.python.org/moin/BeginnersGuide/Download) to install it. 2. Install [pip](https://pypi.org/project/pip/). In most cases, the Python installer comes with the pip utility. If not, please refer to [pip documentation](https://pip.pypa.io/en/stable/installation/) to install it. -If you use a native connection, you will also need to [Install Client Driver](../#Install-Client-Driver). The client install package includes the TDengine client dynamic link library (`libtaos.so` or `taos.dll`) and the TDengine CLI. +If you use a native connection, you will also need to [Install Client Driver](../#install-client-driver). The client install package includes the TDengine client dynamic link library (`libtaos.so` or `taos.dll`) and the TDengine CLI. ### Install via pip diff --git a/docs/en/08-client-libraries/08-node.mdx b/docs/en/08-client-libraries/08-node.mdx index 71f360c6d1..5c8e9d87af 100644 --- a/docs/en/08-client-libraries/08-node.mdx +++ b/docs/en/08-client-libraries/08-node.mdx @@ -58,7 +58,7 @@ Please refer to [version support list](../#version-support) ### Pre-installation preparation - Install the Node.js development environment -- If you are using the REST client library, skip this step. However, if you use the native client library, please install the TDengine client driver. Please refer to [Install Client Driver](../#Install-Client-Driver) for more details. We use [node-gyp](https://github.com/nodejs/node-gyp) to interact with TDengine instances and also need to install some dependencies mentioned below depending on the specific OS. +- If you are using the REST client library, skip this step. However, if you use the native client library, please install the TDengine client driver. Please refer to [Install Client Driver](../#install-client-driver) for more details. We use [node-gyp](https://github.com/nodejs/node-gyp) to interact with TDengine instances and also need to install some dependencies mentioned below depending on the specific OS. diff --git a/docs/en/08-client-libraries/80-php.mdx b/docs/en/08-client-libraries/80-php.mdx index a83391c19c..b31a1d256e 100644 --- a/docs/en/08-client-libraries/80-php.mdx +++ b/docs/en/08-client-libraries/80-php.mdx @@ -40,7 +40,7 @@ Because the version of TDengine client driver is tightly associated with that of ### Install TDengine Client Driver -Regarding how to install TDengine client driver please refer to [Install Client Driver](../#installation-steps) +Regarding how to install TDengine client driver please refer to [Install Client Driver](../#install-client-driver) ### Install php-tdengine diff --git a/docs/en/14-reference/05-taosbenchmark.md b/docs/en/14-reference/05-taosbenchmark.md index 2f953b1f8c..e4884b889c 100644 --- a/docs/en/14-reference/05-taosbenchmark.md +++ b/docs/en/14-reference/05-taosbenchmark.md @@ -92,7 +92,7 @@ taosBenchmark -f -## Command-line argument in detail +## Command-line arguments in detail - **-f/--file <json file>** : specify the configuration file to use. This file includes All parameters. Users should not use this parameter with other parameters on the command-line. There is no default value. diff --git a/docs/en/14-reference/14-taosKeeper.md b/docs/en/14-reference/14-taosKeeper.md index a289ecf35f..f8148af869 100644 --- a/docs/en/14-reference/14-taosKeeper.md +++ b/docs/en/14-reference/14-taosKeeper.md @@ -23,7 +23,7 @@ Methods of installing taosKeeper: ### Configuration -taosKeeper needs to be executed on the terminal of the operating system, it supports three configuration methods: [Command-line arguments](#command-line-arguments-in-detail), [environment variable](#environment-variable-in-detail) and [configuration file](#configuration-file-parameters-in-detail). The precedence of those is Command-line, environment variable and configuration file. +taosKeeper needs to be executed on the terminal of the operating system, it supports three configuration methods: Command-line arguments, environment variable and configuration file. The precedence of those is Command-line, environment variable and configuration file. **Make sure that the TDengine cluster is running correctly before running taosKeeper.** Ensure that the monitoring service in TDengine has been started. At least the values of `monitor` and `monitorFqdn` need to be set in `taos.cfg`. @@ -32,7 +32,7 @@ monitor 1 monitorFqdn localhost # taoskeeper's FQDN ``` -For more information, see [TDengine Monitoring Configuration](../config/#monitoring). +For more information, see [TDengine Monitoring Configuration](../config/#monitoring-parameters). ### Quick Launch diff --git a/docs/en/20-third-party/03-telegraf.md b/docs/en/20-third-party/03-telegraf.md index 900262f51f..93586c701c 100644 --- a/docs/en/20-third-party/03-telegraf.md +++ b/docs/en/20-third-party/03-telegraf.md @@ -73,6 +73,6 @@ Query OK, 3 row(s) in set (0.013269s) - TDengine take influxdb format data and create unique ID for table names by the rule. The user can configure `smlChildTableName` parameter to generate specified table names if he/she needs. And he/she also need to insert data with specified data format. -For example, Add `smlChildTableName=tname` in the taos.cfg file. Insert data `st,tname=cpu1,t1=4 c1=3 1626006833639000000` then the table name will be cpu1. If there are multiple lines has same tname but different tag_set, the first line's tag_set will be used to automatically creating table and ignore other lines. Please refer to [TDengine Schemaless](../../reference/schemaless/#Schemaless-Line-Protocol) +For example, Add `smlChildTableName=tname` in the taos.cfg file. Insert data `st,tname=cpu1,t1=4 c1=3 1626006833639000000` then the table name will be cpu1. If there are multiple lines has same tname but different tag_set, the first line's tag_set will be used to automatically creating table and ignore other lines. Please refer to [TDengine Schemaless](../../reference/schemaless/) ::: diff --git a/include/common/tdataformat.h b/include/common/tdataformat.h index 49ffd8ec35..ce9b95522a 100644 --- a/include/common/tdataformat.h +++ b/include/common/tdataformat.h @@ -95,6 +95,15 @@ const static uint8_t BIT2_MAP[4] = {0b11111100, 0b11110011, 0b11001111, 0b001111 #define COL_VAL_IS_NULL(CV) ((CV)->flag == CV_FLAG_NULL) #define COL_VAL_IS_VALUE(CV) ((CV)->flag == CV_FLAG_VALUE) +#define tRowGetKey(_pRow, _pKey) \ + do { \ + (_pKey)->ts = (_pRow)->ts; \ + (_pKey)->numOfPKs = 0; \ + if ((_pRow)->numOfPKs > 0) { \ + tRowGetPrimaryKey((_pRow), (_pKey)); \ + } \ + } while (0) + // SValueColumn ================================ typedef struct { int8_t cmprAlg; // filled by caller @@ -125,8 +134,8 @@ void tRowDestroy(SRow *pRow); int32_t tRowSort(SArray *aRowP); int32_t tRowMerge(SArray *aRowP, STSchema *pTSchema, int8_t flag); int32_t tRowUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aColData, int32_t nColData, int32_t flag); -void tRowGetKey(SRow *pRow, SRowKey *key); -int32_t tRowKeyCompare(const void *p1, const void *p2); +void tRowGetPrimaryKey(SRow *pRow, SRowKey *key); +int32_t tRowKeyCompare(const SRowKey *key1, const SRowKey *key2); int32_t tRowKeyAssign(SRowKey *pDst, SRowKey *pSrc); // SRowIter ================================ diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 7c2d63e025..17ed732af8 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -258,7 +258,7 @@ extern bool tsExperimental; int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, bool tsc); int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc); + bool tsc, bool isDumpCfg); void taosCleanupCfg(); int32_t taosCfgDynamicOptions(SConfig *pCfg, const char *name, bool forServer); diff --git a/include/common/tgrant.h b/include/common/tgrant.h index 5a2ed58045..7e7162204e 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -56,6 +56,10 @@ typedef enum { TSDB_GRANT_VIEW, TSDB_GRANT_MULTI_TIER, TSDB_GRANT_BACKUP_RESTORE, + TSDB_GRANT_OBJECT_STORAGE, + TSDB_GRANT_ACTIVE_ACTIVE, + TSDB_GRANT_DUAL_REPLICA_HA, + TSDB_GRANT_DB_ENCRYPTION, } EGrantType; int32_t checkAndGetCryptKey(const char *encryptCode, const char *machineId, char **key); diff --git a/include/common/tmsg.h b/include/common/tmsg.h index ed23290be4..3ed6b40d4d 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -329,6 +329,7 @@ typedef enum ENodeType { QUERY_NODE_SHOW_DB_ALIVE_STMT, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT, QUERY_NODE_BALANCE_VGROUP_LEADER_STMT, + QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT, QUERY_NODE_RESTORE_DNODE_STMT, QUERY_NODE_RESTORE_QNODE_STMT, QUERY_NODE_RESTORE_MNODE_STMT, @@ -2425,10 +2426,11 @@ int32_t tDeserializeSRedistributeVgroupReq(void* buf, int32_t bufLen, SRedistrib void tFreeSRedistributeVgroupReq(SRedistributeVgroupReq* pReq); typedef struct { - int32_t useless; + int32_t reserved; int32_t vgId; int32_t sqlLen; char* sql; + char db[TSDB_DB_FNAME_LEN]; } SBalanceVgroupLeaderReq; int32_t tSerializeSBalanceVgroupLeaderReq(void* buf, int32_t bufLen, SBalanceVgroupLeaderReq* pReq); diff --git a/include/libs/executor/storageapi.h b/include/libs/executor/storageapi.h index ec92bd56dd..2d507ab6bb 100644 --- a/include/libs/executor/storageapi.h +++ b/include/libs/executor/storageapi.h @@ -270,7 +270,7 @@ typedef struct SStoreMeta { int32_t (*putCachedTableList)(void* pVnode, uint64_t suid, const void* pKey, int32_t keyLen, void* pPayload, int32_t payloadLen, double selectivityRatio); - void* (*storeGetIndexInfo)(); + void* (*storeGetIndexInfo)(void *pVnode); void* (*getInvertIndex)(void* pVnode); // support filter and non-filter cases. [vnodeGetCtbIdList & vnodeGetCtbIdListByFilter] int32_t (*getChildTableList)(void* pVnode, int64_t suid, SArray* list); diff --git a/include/libs/nodes/cmdnodes.h b/include/libs/nodes/cmdnodes.h index 2b60e20902..c2e5be96ad 100644 --- a/include/libs/nodes/cmdnodes.h +++ b/include/libs/nodes/cmdnodes.h @@ -582,6 +582,7 @@ typedef struct SBalanceVgroupStmt { typedef struct SBalanceVgroupLeaderStmt { ENodeType type; int32_t vgId; + char dbName[TSDB_DB_NAME_LEN]; } SBalanceVgroupLeaderStmt; typedef struct SMergeVgroupStmt { diff --git a/include/os/osSemaphore.h b/include/os/osSemaphore.h index e26a9d16d1..5b46706790 100644 --- a/include/os/osSemaphore.h +++ b/include/os/osSemaphore.h @@ -33,6 +33,13 @@ int tsem_timewait(tsem_t *sim, int64_t milis); int tsem_post(tsem_t *sem); int tsem_destroy(tsem_t *sem); +#define tsem2_t tsem_t +#define tsem2_init tsem_init +#define tsem2_wait tsem_wait +#define tsem2_timewait tsem_timewait +#define tsem2_post tsem_post +#define tsem2_destroy tsem_destroy + #elif defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) #include @@ -44,6 +51,13 @@ int tsem_timewait(tsem_t *sim, int64_t milis); int tsem_post(tsem_t *sem); int tsem_destroy(tsem_t *sem); +#define tsem2_t tsem_t +#define tsem2_init tsem_init +#define tsem2_wait tsem_wait +#define tsem2_timewait tsem_timewait +#define tsem2_post tsem_post +#define tsem2_destroy tsem_destroy + #else #define tsem_t sem_t @@ -53,6 +67,20 @@ int tsem_timewait(tsem_t *sim, int64_t milis); #define tsem_post sem_post #define tsem_destroy sem_destroy +typedef struct tsem2_t { + TdThreadMutex mutex; + TdThreadCond cond; + TdThreadCondAttr attr; + int count; +} tsem2_t; + +// #define tsem2_t sem_t +int tsem2_init(tsem2_t* sem, int pshared, unsigned int value); +int tsem2_wait(tsem2_t* sem); +int tsem2_timewait(tsem2_t* sem, int64_t milis); +int tsem2_post(tsem2_t* sem); +int tsem2_destroy(tsem2_t* sem); + #endif #if defined(_TD_DARWIN_64) diff --git a/include/os/osString.h b/include/os/osString.h index 1aca119293..ac7dd7eda8 100644 --- a/include/os/osString.h +++ b/include/os/osString.h @@ -22,7 +22,11 @@ extern "C" { typedef wchar_t TdWchar; typedef int32_t TdUcs4; +#if !defined(DISALLOW_NCHAR_WITHOUT_ICONV) && defined(DARWIN) +#include "iconv.h" +#else typedef void *iconv_t; +#endif typedef enum { M2C = 0, C2M } ConvType; // If the error is in a third-party library, place this header file under the third-party library header file. diff --git a/include/os/osThread.h b/include/os/osThread.h index 4ef4550419..38c1b366f0 100644 --- a/include/os/osThread.h +++ b/include/os/osThread.h @@ -222,6 +222,7 @@ int32_t taosThreadCondTimedWait(TdThreadCond *cond, TdThreadMutex *mutex, const int32_t taosThreadCondAttrDestroy(TdThreadCondAttr *attr); int32_t taosThreadCondAttrGetPshared(const TdThreadCondAttr *attr, int32_t *pshared); int32_t taosThreadCondAttrInit(TdThreadCondAttr *attr); +int32_t taosThreadCondAttrSetclock(TdThreadCondAttr *attr, int clockId); int32_t taosThreadCondAttrSetPshared(TdThreadCondAttr *attr, int32_t pshared); int32_t taosThreadDetach(TdThread thread); int32_t taosThreadEqual(TdThread t1, TdThread t2); diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 03a024bb8c..dafdac9649 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -327,6 +327,7 @@ int32_t* taosGetErrno(); #define TSDB_CODE_MND_DB_IN_CREATING TAOS_DEF_ERROR_CODE(0, 0x0396) // #define TSDB_CODE_MND_INVALID_SYS_TABLENAME TAOS_DEF_ERROR_CODE(0, 0x039A) #define TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE TAOS_DEF_ERROR_CODE(0, 0x039B) +#define TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED TAOS_DEF_ERROR_CODE(0, 0x039C) // mnode-node #define TSDB_CODE_MND_MNODE_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x03A0) diff --git a/include/util/tgeosctx.h b/include/util/tgeosctx.h index b5ac5a9333..267ba9e049 100644 --- a/include/util/tgeosctx.h +++ b/include/util/tgeosctx.h @@ -21,6 +21,7 @@ extern "C" { #endif #include +#include typedef struct SGeosContext { GEOSContextHandle_t handle; @@ -31,6 +32,9 @@ typedef struct SGeosContext { GEOSWKBReader *WKBReader; GEOSWKBWriter *WKBWriter; + pcre2_code *WKTRegex; + pcre2_match_data *WKTMatchData; + char errMsg[512]; } SGeosContext; diff --git a/include/util/tpcre2.h b/include/util/tpcre2.h new file mode 100644 index 0000000000..4fd461cfc8 --- /dev/null +++ b/include/util/tpcre2.h @@ -0,0 +1,34 @@ +/* + * 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 . + */ + +#ifndef _TD_ULIT_PCRE2_H_ +#define _TD_ULIT_PCRE2_H_ + +#define PCRE2_CODE_UNIT_WIDTH 8 +#include "pcre2.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t doRegComp(pcre2_code** ppRegex, pcre2_match_data** ppMatchData, const char* pattern); +int32_t doRegExec(const char* pString, pcre2_code* pRegex, pcre2_match_data* pMatchData); +void destroyRegexes(pcre2_code* pWktRegex, pcre2_match_data* pWktMatchData); + +#ifdef __cplusplus +} +#endif + +#endif // _TD_UTIL_PAGEDBUF_H_ diff --git a/packaging/tools/makepkg.sh b/packaging/tools/makepkg.sh index 3744892526..5733c35ebe 100755 --- a/packaging/tools/makepkg.sh +++ b/packaging/tools/makepkg.sh @@ -101,6 +101,7 @@ else ${script_dir}/remove.sh \ ${script_dir}/set_core.sh \ ${script_dir}/startPre.sh \ + ${script_dir}/quick_deploy.sh \ ${script_dir}/taosd-dump-cfg.gdb" fi @@ -258,7 +259,7 @@ cp ${install_files} ${install_dir} cp ${install_dir}/install.sh install_temp.sh if [ "$verMode" == "cluster" ]; then sed -i 's/verMode=edge/verMode=cluster/g' install_temp.sh - sed -i "s/PREFIX=\"taos\"/PREFIX=\"${serverName2}\"/g" install_temp.sh + sed -i "s/PREFIX=\"taos\"/PREFIX=\"${clientName2}\"/g" install_temp.sh sed -i "s/productName=\"TDengine\"/productName=\"${productName2}\"/g" install_temp.sh cusDomain=`echo "${cusEmail2}" | sed 's/^[^@]*@//'` sed -i "s/emailName=\"taosdata.com\"/emailName=\"${cusDomain}\"/g" install_temp.sh diff --git a/source/client/CMakeLists.txt b/source/client/CMakeLists.txt index a17c27c297..84747860e9 100644 --- a/source/client/CMakeLists.txt +++ b/source/client/CMakeLists.txt @@ -23,13 +23,6 @@ target_link_libraries( PRIVATE os util common transport monitor nodes parser command planner catalog scheduler function qcom geometry ) -if(TD_DARWIN_ARM64) - target_link_libraries( - taos - PRIVATE "-arch x86_64" - ) -endif() - if(TD_WINDOWS) INCLUDE_DIRECTORIES(jni/windows) INCLUDE_DIRECTORIES(jni/windows/win32) diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index 439103e5c4..036cf0420a 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -725,7 +725,7 @@ void taos_init_imp(void) { return; } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true) != 0) { tscInitRes = -1; return; } diff --git a/source/client/src/clientHb.c b/source/client/src/clientHb.c index 78e8b04a13..7d30a19140 100644 --- a/source/client/src/clientHb.c +++ b/source/client/src/clientHb.c @@ -738,7 +738,7 @@ static int32_t hbGetUserAuthInfo(SClientHbKey *connKey, SHbParam *param, SClient _return: releaseTscObj(connKey->tscRid); if (code) { - tscError("hb got user auth info failed since %s", terrstr(code)); + tscError("hb got user auth info failed since %s", tstrerror(code)); } return code; diff --git a/source/client/src/clientRawBlockWrite.c b/source/client/src/clientRawBlockWrite.c index 427e238a7b..c5069d46aa 100644 --- a/source/client/src/clientRawBlockWrite.c +++ b/source/client/src/clientRawBlockWrite.c @@ -30,6 +30,11 @@ static tb_uid_t processSuid(tb_uid_t suid, char* db) { return suid + MurmurHash3 static char* buildCreateTableJson(SSchemaWrapper* schemaRow, SSchemaWrapper* schemaTag, char* name, int64_t id, int8_t t, SColCmprWrapper* pColCmprRow) { + int8_t buildDefaultCompress = 0; + if (pColCmprRow->nCols <= 0) { + buildDefaultCompress = 1; + } + char* string = NULL; cJSON* json = cJSON_CreateObject(); if (json == NULL) { @@ -70,13 +75,20 @@ static char* buildCreateTableJson(SSchemaWrapper* schemaRow, SSchemaWrapper* sch cJSON_AddItemToObject(column, "isPrimarykey", isPk); cJSON_AddItemToArray(columns, column); - if (pColCmprRow == NULL || pColCmprRow->nCols <= i) { + if (pColCmprRow == NULL) { continue; } - SColCmpr* pColCmpr = pColCmprRow->pColCmpr + i; - const char* encode = columnEncodeStr(COMPRESS_L1_TYPE_U32(pColCmpr->alg)); - const char* compress = columnCompressStr(COMPRESS_L2_TYPE_U32(pColCmpr->alg)); - const char* level = columnLevelStr(COMPRESS_L2_TYPE_LEVEL_U32(pColCmpr->alg)); + + uint32_t alg = 0; + if (buildDefaultCompress) { + alg = createDefaultColCmprByType(s->type); + } else { + SColCmpr* pColCmpr = pColCmprRow->pColCmpr + i; + alg = pColCmpr->alg; + } + const char* encode = columnEncodeStr(COMPRESS_L1_TYPE_U32(alg)); + const char* compress = columnCompressStr(COMPRESS_L2_TYPE_U32(alg)); + const char* level = columnLevelStr(COMPRESS_L2_TYPE_LEVEL_U32(alg)); cJSON* encodeJson = cJSON_CreateString(encode); cJSON_AddItemToObject(column, "encode", encodeJson); @@ -767,14 +779,25 @@ static int32_t taosCreateStb(TAOS* taos, void* meta, int32_t metaLen) { code = TSDB_CODE_INVALID_PARA; goto end; } + + int8_t createDefaultCompress = 0; + SColCmprWrapper* p = &req.colCmpr; + if (p->nCols == 0) { + createDefaultCompress = 1; + } // build create stable pReq.pColumns = taosArrayInit(req.schemaRow.nCols, sizeof(SFieldWithOptions)); for (int32_t i = 0; i < req.schemaRow.nCols; i++) { SSchema* pSchema = req.schemaRow.pSchema + i; SFieldWithOptions field = {.type = pSchema->type, .flags = pSchema->flags, .bytes = pSchema->bytes}; strcpy(field.name, pSchema->name); - SColCmpr *p = &req.colCmpr.pColCmpr[i]; - field.compress = p->alg; + + if (createDefaultCompress) { + field.compress = createDefaultColCmprByType(pSchema->type); + } else { + SColCmpr* p = &req.colCmpr.pColCmpr[i]; + field.compress = p->alg; + } taosArrayPush(pReq.pColumns, &field); } pReq.pTags = taosArrayInit(req.schemaTag.nCols, sizeof(SField)); diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 2a94c7a9c0..907a6ebe3c 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -105,7 +105,7 @@ struct tmq_t { STaosQueue* mqueue; // queue of rsp STaosQall* qall; STaosQueue* delayedTask; // delayed task queue for heartbeat and auto commit - tsem_t rspSem; + tsem2_t rspSem; }; typedef struct SAskEpInfo { @@ -727,7 +727,7 @@ static void generateTimedTask(int64_t refId, int32_t type) { *pTaskType = type; taosWriteQitem(tmq->delayedTask, pTaskType); - tsem_post(&tmq->rspSem); + tsem2_post(&tmq->rspSem); taosReleaseRef(tmqMgmt.rsetId, refId); } @@ -742,7 +742,7 @@ void tmqReplayTask(void* param, void* tmrId) { tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, refId); if (tmq == NULL) goto END; - tsem_post(&tmq->rspSem); + tsem2_post(&tmq->rspSem); taosReleaseRef(tmqMgmt.rsetId, refId); END: taosMemoryFree(param); @@ -1033,7 +1033,7 @@ void tmqFreeImpl(void* handle) { } taosFreeQall(tmq->qall); - tsem_destroy(&tmq->rspSem); + tsem2_destroy(&tmq->rspSem); taosArrayDestroyEx(tmq->clientTopics, freeClientVgImpl); taos_close_internal(tmq->pTscObj); @@ -1121,7 +1121,7 @@ tmq_t* tmq_consumer_new(tmq_conf_t* conf, char* errstr, int32_t errstrLen) { pTmq->consumerId = tGenIdPI64(); // init semaphore - if (tsem_init(&pTmq->rspSem, 0, 0) != 0) { + if (tsem2_init(&pTmq->rspSem, 0, 0) != 0) { tscError("consumer:0x %" PRIx64 " setup failed since %s, consumer group %s", pTmq->consumerId, terrstr(), pTmq->groupId); SET_ERROR_MSG_TMQ("init t_sem failed") @@ -1132,7 +1132,7 @@ tmq_t* tmq_consumer_new(tmq_conf_t* conf, char* errstr, int32_t errstrLen) { pTmq->pTscObj = taos_connect_internal(conf->ip, user, pass, NULL, NULL, conf->port, CONN_TYPE__TMQ); if (pTmq->pTscObj == NULL) { tscError("consumer:0x%" PRIx64 " setup failed since %s, groupId:%s", pTmq->consumerId, terrstr(), pTmq->groupId); - tsem_destroy(&pTmq->rspSem); + tsem2_destroy(&pTmq->rspSem); SET_ERROR_MSG_TMQ("init tscObj failed") goto _failed; } @@ -1434,7 +1434,7 @@ END: taosReleaseRef(tmqMgmt.rsetId, refId); FAIL: - if (tmq) tsem_post(&tmq->rspSem); + if (tmq) tsem2_post(&tmq->rspSem); taosMemoryFree(pParam); if (pMsg) taosMemoryFreeClear(pMsg->pData); if (pMsg) taosMemoryFreeClear(pMsg->pEpSet); @@ -2132,10 +2132,10 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { tmq->consumerId, tmq->epoch, startTime, currentTime); return NULL; } - tsem_timewait(&tmq->rspSem, (timeout - elapsedTime)); + tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { // use tsem_timewait instead of tsem_wait to avoid unexpected stuck - tsem_timewait(&tmq->rspSem, 1000); + tsem2_timewait(&tmq->rspSem, 1000); } } } diff --git a/source/common/src/cos.c b/source/common/src/cos.c index b249d3eff2..6c46f4ff42 100644 --- a/source/common/src/cos.c +++ b/source/common/src/cos.c @@ -27,6 +27,8 @@ static S3UriStyle uriStyleG = S3UriStylePath; static int retriesG = 5; static int timeoutMsG = 0; +extern int8_t tsS3Oss; + int32_t s3Begin() { S3Status status; const char *hostname = tsS3Hostname; @@ -42,6 +44,9 @@ int32_t s3Begin() { } protocolG = !tsS3Https; + if (tsS3Oss) { + uriStyleG = S3UriStyleVirtualHost; + } return 0; } @@ -58,6 +63,11 @@ static int32_t s3ListBucket(char const *bucketname); int32_t s3CheckCfg() { int32_t code = 0; + if (!tsS3Enabled) { + fprintf(stderr, "s3 not configured.\n"); + goto _exit; + } + code = s3Begin(); if (code != 0) { fprintf(stderr, "failed to initialize s3.\n"); diff --git a/source/common/src/tcol.c b/source/common/src/tcol.c index 90420b7441..fc9dd1fb4c 100644 --- a/source/common/src/tcol.c +++ b/source/common/src/tcol.c @@ -250,7 +250,7 @@ bool checkColumnEncodeOrSetDefault(uint8_t type, char encode[TSDB_CL_COMPRESS_OP strncpy(encode, getDefaultEncodeStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnEncode(encode); + return checkColumnEncode(encode) && validColEncode(type, columnEncodeVal(encode)); } bool checkColumnCompress(char compress[TSDB_CL_COMPRESS_OPTION_LEN]) { if (0 == strlen(compress)) return true; @@ -267,7 +267,8 @@ bool checkColumnCompressOrSetDefault(uint8_t type, char compress[TSDB_CL_COMPRES strncpy(compress, getDefaultCompressStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnCompress(compress); + + return checkColumnCompress(compress) && validColCompress(type, columnCompressVal(compress)); } bool checkColumnLevel(char level[TSDB_CL_COMPRESS_OPTION_LEN]) { if (0 == strlen(level)) return true; @@ -288,7 +289,7 @@ bool checkColumnLevelOrSetDefault(uint8_t type, char level[TSDB_CL_COMPRESS_OPTI strncpy(level, getDefaultLevelStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnLevel(level); + return checkColumnLevel(level) && validColCompressLevel(type, columnLevelVal(level)); } void setColEncode(uint32_t* compress, uint8_t l1) { diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 1c63174bf6..1c0b696aaa 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -2411,13 +2411,24 @@ _end: void buildCtbNameAddGroupId(const char* stbName, char* ctbName, uint64_t groupId) { char tmp[TSDB_TABLE_NAME_LEN] = {0}; - if (stbName == NULL) { - snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%" PRIu64, groupId); - } else { - snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%s_%" PRIu64, stbName, groupId); + if (stbName == NULL){ + snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%"PRIu64, groupId); + }else{ + int32_t i = strlen(stbName) - 1; + for(; i >= 0; i--){ + if (stbName[i] == '.'){ + break; + } + } + snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%s_%"PRIu64, stbName + i + 1, groupId); } ctbName[TSDB_TABLE_NAME_LEN - strlen(tmp) - 1] = 0; // put stbname + groupId to the end strcat(ctbName, tmp); + for(int i = 0; i < strlen(ctbName); i++){ + if(ctbName[i] == '.'){ + ctbName[i] = '_'; + } + } } // auto stream subtable name starts with 't_', followed by the first segment of MD5 digest for group vals. diff --git a/source/common/src/tdataformat.c b/source/common/src/tdataformat.c index 04ad00e1dc..ae3fe6a2a0 100644 --- a/source/common/src/tdataformat.c +++ b/source/common/src/tdataformat.c @@ -1183,8 +1183,7 @@ int32_t tRowUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aColData, in } } -void tRowGetKey(SRow *row, SRowKey *key) { - key->ts = row->ts; +void tRowGetPrimaryKey(SRow *row, SRowKey *key) { key->numOfPKs = row->numOfPKs; if (key->numOfPKs == 0) { @@ -1283,10 +1282,7 @@ int32_t tValueCompare(const SValue *tv1, const SValue *tv2) { // NOTE: // set key->numOfPKs to 0 as the smallest key with ts // set key->numOfPKs to (TD_MAX_PK_COLS + 1) as the largest key with ts -int32_t tRowKeyCompare(const void *p1, const void *p2) { - SRowKey *key1 = (SRowKey *)p1; - SRowKey *key2 = (SRowKey *)p2; - +FORCE_INLINE int32_t tRowKeyCompare(const SRowKey *key1, const SRowKey *key2) { if (key1->ts < key2->ts) { return -1; } else if (key1->ts > key2->ts) { diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 9223aa3c7a..650a639964 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -32,22 +32,22 @@ SConfig *tsCfg = NULL; // cluster -char tsFirst[TSDB_EP_LEN] = {0}; -char tsSecond[TSDB_EP_LEN] = {0}; -char tsLocalFqdn[TSDB_FQDN_LEN] = {0}; -char tsLocalEp[TSDB_EP_LEN] = {0}; // Local End Point, hostname:port -char tsVersionName[16] = "community"; -uint16_t tsServerPort = 6030; -int32_t tsVersion = 30000000; -int32_t tsStatusInterval = 1; // second -int32_t tsNumOfSupportVnodes = 256; -char tsEncryptAlgorithm[16] = {0}; -char tsEncryptScope[100] = {0}; -EEncryptAlgor tsiEncryptAlgorithm = 0; -EEncryptScope tsiEncryptScope = 0; -//char tsAuthCode[500] = {0}; -//char tsEncryptKey[17] = {0}; -char tsEncryptKey[17] = {0}; +char tsFirst[TSDB_EP_LEN] = {0}; +char tsSecond[TSDB_EP_LEN] = {0}; +char tsLocalFqdn[TSDB_FQDN_LEN] = {0}; +char tsLocalEp[TSDB_EP_LEN] = {0}; // Local End Point, hostname:port +char tsVersionName[16] = "community"; +uint16_t tsServerPort = 6030; +int32_t tsVersion = 30000000; +int32_t tsStatusInterval = 1; // second +int32_t tsNumOfSupportVnodes = 256; +char tsEncryptAlgorithm[16] = {0}; +char tsEncryptScope[100] = {0}; +EEncryptAlgor tsiEncryptAlgorithm = 0; +EEncryptScope tsiEncryptScope = 0; +// char tsAuthCode[500] = {0}; +// char tsEncryptKey[17] = {0}; +char tsEncryptKey[17] = {0}; // common int32_t tsMaxShellConns = 50000; @@ -240,8 +240,8 @@ int64_t tsTickPerMin[] = {60000L, 60000000L, 60000000000L}; int64_t tsTickPerHour[] = {3600000L, 3600000000L, 3600000000000L}; // lossy compress 7 -char tsLossyColumns[32] = ""; // "float|double" means all float and double columns can be lossy compressed. set empty - // can close lossy compress. +char tsLossyColumns[32] = "float|double"; // "float|double" means all float and double columns can be lossy compressed. + // set empty can close lossy compress. // below option can take effect when tsLossyColumns not empty float tsFPrecision = 1E-8; // float column precision double tsDPrecision = 1E-16; // double column precision @@ -296,6 +296,8 @@ char tsS3AccessKeySecret[TSDB_FQDN_LEN] = ""; char tsS3BucketName[TSDB_FQDN_LEN] = ""; char tsS3AppId[TSDB_FQDN_LEN] = ""; int8_t tsS3Enabled = false; +int8_t tsS3EnabledCfg = false; +int8_t tsS3Oss = false; int8_t tsS3StreamEnabled = false; int8_t tsS3Https = true; @@ -310,7 +312,7 @@ bool tsExperimental = true; int32_t tsMaxTsmaNum = 3; int32_t tsMaxTsmaCalcDelay = 600; -int64_t tsmaDataDeleteMark = 1000 * 60 * 60 * 24; // in ms, default to 1d +int64_t tsmaDataDeleteMark = 1000 * 60 * 60 * 24; // in ms, default to 1d #ifndef _STORAGE int32_t taosSetTfsCfg(SConfig *pCfg) { @@ -366,10 +368,15 @@ int32_t taosSetS3Cfg(SConfig *pCfg) { tstrncpy(tsS3AppId, appid + 1, TSDB_FQDN_LEN); } } + char *oss = strstr(tsS3Endpoint, "aliyuncs."); + if (oss) { + tsS3Oss = true; + } if (tsS3BucketName[0] != '<') { #if defined(USE_COS) || defined(USE_S3) #ifdef TD_ENTERPRISE /*if (tsDiskCfgNum > 1) */ tsS3Enabled = true; + tsS3EnabledCfg = true; #endif tsS3StreamEnabled = true; #endif @@ -563,11 +570,12 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { if (cfgAddBool(pCfg, "monitor", tsEnableMonitor, CFG_SCOPE_BOTH, CFG_DYN_BOTH) != 0) return -1; if (cfgAddInt32(pCfg, "monitorInterval", tsMonitorInterval, 1, 200000, CFG_SCOPE_BOTH, CFG_DYN_NONE) != 0) return -1; - if (cfgAddBool(pCfg, "multiResultFunctionStarReturnTags", tsMultiResultFunctionStarReturnTags, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT) != 0) return -1; + if (cfgAddBool(pCfg, "multiResultFunctionStarReturnTags", tsMultiResultFunctionStarReturnTags, CFG_SCOPE_CLIENT, + CFG_DYN_CLIENT) != 0) + return -1; if (cfgAddInt32(pCfg, "countAlwaysReturnValue", tsCountAlwaysReturnValue, 0, 1, CFG_SCOPE_BOTH, CFG_DYN_CLIENT) != 0) return -1; - if (cfgAddInt32(pCfg, "maxTsmaCalcDelay", tsMaxTsmaCalcDelay, 600, 86400, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT) != - 0) + if (cfgAddInt32(pCfg, "maxTsmaCalcDelay", tsMaxTsmaCalcDelay, 600, 86400, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT) != 0) return -1; if (cfgAddInt32(pCfg, "tsmaDataDeleteMark", tsmaDataDeleteMark, 60 * 60 * 1000, INT64_MAX, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT) != 0) @@ -618,11 +626,12 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { tsNumOfSupportVnodes = tsNumOfCores * 2; tsNumOfSupportVnodes = TMAX(tsNumOfSupportVnodes, 2); - if (cfgAddInt32(pCfg, "supportVnodes", tsNumOfSupportVnodes, 0, 4096, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) return -1; + if (cfgAddInt32(pCfg, "supportVnodes", tsNumOfSupportVnodes, 0, 4096, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) + return -1; if (cfgAddString(pCfg, "encryptAlgorithm", tsEncryptAlgorithm, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddString(pCfg, "encryptScope", tsEncryptScope, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; - //if (cfgAddString(pCfg, "authCode", tsAuthCode, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; + // if (cfgAddString(pCfg, "authCode", tsAuthCode, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddInt32(pCfg, "statusInterval", tsStatusInterval, 1, 30, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddInt32(pCfg, "minSlidingTime", tsMinSlidingTime, 1, 1000000, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT) != 0) @@ -749,8 +758,7 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { if (cfgAddInt32(pCfg, "tmqMaxTopicNum", tmqMaxTopicNum, 1, 10000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) return -1; - if (cfgAddInt32(pCfg, "tmqRowSize", tmqRowSize, 1, 1000000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) - return -1; + if (cfgAddInt32(pCfg, "tmqRowSize", tmqRowSize, 1, 1000000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) return -1; if (cfgAddInt32(pCfg, "maxTsmaNum", tsMaxTsmaNum, 0, 3, CFG_SCOPE_SERVER, CFG_DYN_SERVER) != 0) return -1; if (cfgAddInt32(pCfg, "transPullupInterval", tsTransPullupInterval, 1, 10000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != @@ -807,7 +815,6 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { CFG_DYN_ENT_SERVER) != 0) return -1; - if (cfgAddString(pCfg, "lossyColumns", tsLossyColumns, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddFloat(pCfg, "fPrecision", tsFPrecision, 0.0f, 100000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddFloat(pCfg, "dPrecision", tsDPrecision, 0.0f, 1000000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddInt32(pCfg, "maxRange", tsMaxRange, 0, 65536, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; @@ -1181,7 +1188,7 @@ static int32_t taosSetServerCfg(SConfig *pCfg) { tsQueryBufferSize = cfgGetItem(pCfg, "queryBufferSize")->i32; tstrncpy(tsEncryptAlgorithm, cfgGetItem(pCfg, "encryptAlgorithm")->str, 16); tstrncpy(tsEncryptScope, cfgGetItem(pCfg, "encryptScope")->str, 100); - //tstrncpy(tsAuthCode, cfgGetItem(pCfg, "authCode")->str, 100); + // tstrncpy(tsAuthCode, cfgGetItem(pCfg, "authCode")->str, 100); tsNumOfRpcThreads = cfgGetItem(pCfg, "numOfRpcThreads")->i32; tsNumOfRpcSessions = cfgGetItem(pCfg, "numOfRpcSessions")->i32; @@ -1268,7 +1275,6 @@ static int32_t taosSetServerCfg(SConfig *pCfg) { tsCacheLazyLoadThreshold = cfgGetItem(pCfg, "cacheLazyLoadThreshold")->i32; - tstrncpy(tsLossyColumns, cfgGetItem(pCfg, "lossyColumns")->str, sizeof(tsLossyColumns)); tsFPrecision = cfgGetItem(pCfg, "fPrecision")->fval; tsDPrecision = cfgGetItem(pCfg, "dPrecision")->fval; tsMaxRange = cfgGetItem(pCfg, "maxRange")->i32; @@ -1388,7 +1394,7 @@ static int32_t taosCheckGlobalCfg() { } int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc) { + bool tsc, bool isDumpCfg) { if (tsCfg != NULL) return 0; tsCfg = cfgInit(); @@ -1435,7 +1441,7 @@ int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile taosSetAllDebugFlag(tsCfg, cfgGetItem(tsCfg, "debugFlag")->i32); - cfgDumpCfg(tsCfg, tsc, false); + if(isDumpCfg) cfgDumpCfg(tsCfg, tsc, false); if (taosCheckGlobalCfg() != 0) { return -1; diff --git a/source/common/src/tmisce.c b/source/common/src/tmisce.c index 0a9e8f434b..d2b52b201e 100644 --- a/source/common/src/tmisce.c +++ b/source/common/src/tmisce.c @@ -228,6 +228,8 @@ int32_t dumpConfToDataBlock(SSDataBlock* pBlock, int32_t startCol) { blockDataEnsureCapacity(pBlock, cfgGetSize(pConf)); SConfigIter* pIter = cfgCreateIter(pConf); + cfgLock(pConf); + while ((pItem = cfgNextIter(pIter)) != NULL) { col = startCol; @@ -253,6 +255,8 @@ int32_t dumpConfToDataBlock(SSDataBlock* pBlock, int32_t startCol) { numOfRows++; } + cfgUnLock(pConf); + pBlock->info.rows = numOfRows; cfgDestroyIter(pIter); diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 3836f13a2f..b7d1417451 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -5962,9 +5962,11 @@ int32_t tSerializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceVgr tEncoderInit(&encoder, buf, bufLen); if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeI32(&encoder, pReq->useless) < 0) return -1; + if (tEncodeI32(&encoder, pReq->reserved) < 0) return -1; if (tEncodeI32(&encoder, pReq->vgId) < 0) return -1; ENCODESQL(); + if (tEncodeCStr(&encoder, pReq->db) < 0) return -1; + tEndEncode(&encoder); int32_t tlen = encoder.pos; @@ -5977,12 +5979,15 @@ int32_t tDeserializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceV tDecoderInit(&decoder, buf, bufLen); if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->useless) < 0) return -1; + if (tDecodeI32(&decoder, &pReq->reserved) < 0) return -1; if (!tDecodeIsEnd(&decoder)) { if (tDecodeI32(&decoder, &pReq->vgId) < 0) return -1; } - DECODESQL(); + if (!tDecodeIsEnd(&decoder)) { + if (tDecodeCStrTo(&decoder, pReq->db) < 0) return -1; + } + tEndDecode(&decoder); tDecoderClear(&decoder); diff --git a/source/common/test/dataformatTest.cpp b/source/common/test/dataformatTest.cpp index 2dfa706728..e8b7b132f2 100644 --- a/source/common/test/dataformatTest.cpp +++ b/source/common/test/dataformatTest.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wwrite-strings" @@ -475,6 +476,45 @@ TEST(testCase, AllNormTest) { taosMemoryFree(pTSchema); } +TEST(testCase, StreamAllNormTest) { + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(NULL, ctbName, groupId); + + ASSERT_STREQ("_12345", ctbName); +} + +TEST(testCase, StreamWithStbName) { + char stbName[] = "1.table.stb"; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("_stb_12345", ctbName); +} + +TEST(testCase, StreamWithoutDotInStbName) { + char stbName[] = "table"; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("_table_12345", ctbName); +} + +TEST(testCase, StreamWithoutDotInStbName2) { + char stbName[] = ""; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("__12345", ctbName); +} + #if 1 TEST(testCase, NoneTest) { const static int nCols = 14; diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index 98459512f3..f7fcd7697f 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -205,11 +205,11 @@ static int32_t dmParseArgs(int32_t argc, char const *argv[]) { if(i < argc - 1) { int32_t len = strlen(argv[++i]); if (len < ENCRYPT_KEY_LEN_MIN) { - printf("encrypt key is too short, it should be great or equal to %d\n", ENCRYPT_KEY_LEN_MIN); + printf("Error: Encrypt key should be at least %d characters\n", ENCRYPT_KEY_LEN_MIN); return -1; } if (len > ENCRYPT_KEY_LEN) { - printf("encrypt key overflow, it should be less or equal to %d\n", ENCRYPT_KEY_LEN); + printf("Error: Encrypt key overflow, it should be at most %d characters\n", ENCRYPT_KEY_LEN); return -1; } tstrncpy(global.encryptKey, argv[i], ENCRYPT_KEY_LEN); @@ -325,7 +325,7 @@ int main(int argc, char const *argv[]) { } if (dmParseArgs(argc, argv) != 0) { - printf("failed to start since parse args error\n"); + //printf("failed to start since parse args error\n"); taosCleanupArgs(); return -1; } @@ -380,7 +380,11 @@ int mainWindows(int argc, char **argv) { dmPrintArgs(argc, argv); - if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0) != 0) { + bool isDumpCfg = true; + if(global.generateCode) { + isDumpCfg = false; + } + if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0, isDumpCfg) != 0) { dError("failed to start since read config error"); taosCloseLog(); taosCleanupArgs(); diff --git a/source/dnode/mgmt/mgmt_snode/src/smWorker.c b/source/dnode/mgmt/mgmt_snode/src/smWorker.c index 9220d3395d..1c57685414 100644 --- a/source/dnode/mgmt/mgmt_snode/src/smWorker.c +++ b/source/dnode/mgmt/mgmt_snode/src/smWorker.c @@ -37,7 +37,7 @@ static void smProcessWriteQueue(SQueueInfo *pInfo, STaosQall *qall, int32_t numO dTrace("msg:%p, get from snode-write queue", pMsg); int32_t code = sndProcessWriteMsg(pMgmt->pSnode, pMsg, NULL); if (code < 0) { - dGError("snd, msg:%p failed to process write since %s", pMsg, terrstr(code)); + dGError("snd, msg:%p failed to process write since %s", pMsg, tstrerror(code)); if (pMsg->info.handle != NULL) { tmsgSendRsp(pMsg); } @@ -58,7 +58,7 @@ static void smProcessStreamQueue(SQueueInfo *pInfo, SRpcMsg *pMsg) { dTrace("msg:%p, get from snode-stream queue", pMsg); int32_t code = sndProcessStreamMsg(pMgmt->pSnode, pMsg); if (code < 0) { - dGError("snd, msg:%p failed to process stream msg %s since %s", pMsg, TMSG_INFO(pMsg->msgType), terrstr(code)); + dGError("snd, msg:%p failed to process stream msg %s since %s", pMsg, TMSG_INFO(pMsg->msgType), tstrerror(code)); smSendRsp(pMsg, terrno); } diff --git a/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c b/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c index 73a73d19f5..0295e88106 100644 --- a/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c +++ b/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c @@ -316,7 +316,7 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { if (vmTsmaAdjustDays(&vnodeCfg, &req) < 0) { dError("vgId:%d, failed to adjust tsma days since %s", req.vgId, terrstr()); - code = terrno; + code = terrno != 0 ? terrno : -1; goto _OVER; } @@ -344,21 +344,21 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { dError("vgId:%d, failed to create vnode since %s", req.vgId, terrstr()); vmReleaseVnode(pMgmt, pVnode); tFreeSCreateVnodeReq(&req); - code = terrno; + code = terrno != 0 ? terrno : -1; return code; } SVnode *pImpl = vnodeOpen(path, diskPrimary, pMgmt->pTfs, pMgmt->msgCb, true); if (pImpl == NULL) { dError("vgId:%d, failed to open vnode since %s", req.vgId, terrstr()); - code = terrno; + code = terrno != 0 ? terrno : -1; goto _OVER; } code = vmOpenVnode(pMgmt, &wrapperCfg, pImpl); if (code != 0) { dError("vgId:%d, failed to open vnode since %s", req.vgId, terrstr()); - code = terrno; + code = terrno != 0 ? terrno : code; goto _OVER; } @@ -379,7 +379,7 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { code = vmWriteVnodeListToFile(pMgmt); if (code != 0) { - code = terrno; + code = terrno != 0 ? terrno : code; goto _OVER; } diff --git a/source/dnode/mgmt/mgmt_vnode/src/vmWorker.c b/source/dnode/mgmt/mgmt_vnode/src/vmWorker.c index e4adfdb6b1..7b7c51bbc7 100644 --- a/source/dnode/mgmt/mgmt_vnode/src/vmWorker.c +++ b/source/dnode/mgmt/mgmt_vnode/src/vmWorker.c @@ -103,7 +103,7 @@ static void vmProcessStreamQueue(SQueueInfo *pInfo, SRpcMsg *pMsg) { if (code != 0) { if (terrno != 0) code = terrno; dGError("vgId:%d, msg:%p failed to process stream msg %s since %s", pVnode->vgId, pMsg, TMSG_INFO(pMsg->msgType), - terrstr(code)); + tstrerror(code)); vmSendRsp(pMsg, code); } @@ -201,7 +201,7 @@ static int32_t vmPutMsgToQueue(SVnodeMgmt *pMgmt, SRpcMsg *pMsg, EQueueType qtyp case QUERY_QUEUE: code = vnodePreprocessQueryMsg(pVnode->pImpl, pMsg); if (code) { - dError("vgId:%d, msg:%p preprocess query msg failed since %s", pVnode->vgId, pMsg, terrstr(code)); + dError("vgId:%d, msg:%p preprocess query msg failed since %s", pVnode->vgId, pMsg, tstrerror(code)); } else { dGTrace("vgId:%d, msg:%p put into vnode-query queue", pVnode->vgId, pMsg); taosWriteQitem(pVnode->pQueryQ, pMsg); @@ -219,13 +219,13 @@ static int32_t vmPutMsgToQueue(SVnodeMgmt *pMgmt, SRpcMsg *pMsg, EQueueType qtyp if (!vmDataSpaceSufficient(pVnode)) { terrno = TSDB_CODE_NO_ENOUGH_DISKSPACE; code = terrno; - dError("vgId:%d, msg:%p put into vnode-write queue failed since %s", pVnode->vgId, pMsg, terrstr(code)); + dError("vgId:%d, msg:%p put into vnode-write queue failed since %s", pVnode->vgId, pMsg, tstrerror(code)); break; } if (pMsg->msgType == TDMT_VND_SUBMIT && (grantCheck(TSDB_GRANT_STORAGE) != TSDB_CODE_SUCCESS)) { terrno = TSDB_CODE_VND_NO_WRITE_AUTH; code = terrno; - dDebug("vgId:%d, msg:%p put into vnode-write queue failed since %s", pVnode->vgId, pMsg, terrstr(code)); + dDebug("vgId:%d, msg:%p put into vnode-write queue failed since %s", pVnode->vgId, pMsg, tstrerror(code)); break; } if (pMsg->msgType != TDMT_VND_ALTER_CONFIRM && pVnode->disable) { diff --git a/source/dnode/mgmt/node_mgmt/src/dmEnv.c b/source/dnode/mgmt/node_mgmt/src/dmEnv.c index 12712d6585..8e760c28be 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmEnv.c +++ b/source/dnode/mgmt/node_mgmt/src/dmEnv.c @@ -17,6 +17,7 @@ #include "dmMgmt.h" #include "audit.h" #include "libs/function/tudf.h" +#include "tgrant.h" #define DM_INIT_AUDIT() \ do { \ @@ -150,6 +151,7 @@ static bool dmCheckDataDirVersion() { extern int32_t s3Begin(); extern void s3End(); +extern int8_t tsS3Enabled; #endif diff --git a/source/dnode/mgmt/node_mgmt/src/dmMgmt.c b/source/dnode/mgmt/node_mgmt/src/dmMgmt.c index 11453fcfef..e6d8663e58 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmMgmt.c +++ b/source/dnode/mgmt/node_mgmt/src/dmMgmt.c @@ -18,12 +18,10 @@ #include "dmNodes.h" #include "index.h" #include "qworker.h" -#include "tstream.h" -#ifdef TD_TSZ #include "tcompression.h" #include "tglobal.h" #include "tgrant.h" -#endif +#include "tstream.h" static bool dmRequireNode(SDnode *pDnode, SMgmtWrapper *pWrapper) { SMgmtInputOpt input = dmBuildMgmtInputOpt(pWrapper); @@ -48,10 +46,8 @@ int32_t dmInitDnode(SDnode *pDnode) { goto _OVER; } -#ifdef TD_TSZ // compress module init tsCompressInit(tsLossyColumns, tsFPrecision, tsDPrecision, tsMaxRange, tsCurRange, (int)tsIfAdtFse, tsCompressor); -#endif pDnode->wrappers[DNODE].func = dmGetMgmtFunc(); pDnode->wrappers[MNODE].func = mmGetMgmtFunc(); @@ -88,7 +84,7 @@ int32_t dmInitDnode(SDnode *pDnode) { streamMetaInit(); dmInitStatusClient(pDnode); - dmInitSyncClient(pDnode); + dmInitSyncClient(pDnode); dmReportStartup("dnode-transport", "initialized"); dDebug("dnode is created, ptr:%p", pDnode); @@ -120,10 +116,8 @@ void dmCleanupDnode(SDnode *pDnode) { indexCleanup(); taosConvDestroy(); -#ifdef TD_TSZ // compress destroy tsCompressExit(); -#endif dDebug("dnode is closed, ptr:%p", pDnode); } diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 6d638dab3b..f254fb16a5 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -821,6 +821,10 @@ static int32_t mndCheckDbEncryptKey(SMnode *pMnode, SCreateDbReq *pReq) { #ifdef TD_ENTERPRISE if (pReq->encryptAlgorithm == TSDB_ENCRYPT_ALGO_NONE) goto _exit; + if (grantCheck(TSDB_GRANT_DB_ENCRYPTION) != 0) { + code = TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED; + goto _exit; + } if (tsEncryptionKeyStat != ENCRYPT_KEY_STAT_LOADED) { code = TSDB_CODE_MND_INVALID_ENCRYPT_KEY; mError("db:%s, failed to check encryption key:%" PRIi8 " in mnode leader since it's not loaded", pReq->db, @@ -903,6 +907,13 @@ static int32_t mndProcessCreateDbReq(SRpcMsg *pReq) { goto _OVER; } + if (createReq.replications == 2) { + if ((terrno = grantCheck(TSDB_GRANT_DUAL_REPLICA_HA)) != 0) { + code = terrno; + goto _OVER; + } + } + if ((code = mndCheckDbEncryptKey(pMnode, &createReq)) != 0) { terrno = code; goto _OVER; @@ -1163,6 +1174,12 @@ static int32_t mndProcessAlterDbReq(SRpcMsg *pReq) { goto _OVER; } + if (alterReq.replications == 2) { + if ((code = grantCheck(TSDB_GRANT_DUAL_REPLICA_HA)) != 0) { + goto _OVER; + } + } + int32_t numOfTopics = 0; if (mndGetNumOfTopics(pMnode, pDb->name, &numOfTopics) != 0) { goto _OVER; diff --git a/source/dnode/vnode/CMakeLists.txt b/source/dnode/vnode/CMakeLists.txt index 43e680c382..d776271131 100644 --- a/source/dnode/vnode/CMakeLists.txt +++ b/source/dnode/vnode/CMakeLists.txt @@ -1,6 +1,9 @@ # vnode add_subdirectory(src/tqCommon) add_library(vnode STATIC "") +if(${TD_DARWIN}) + target_compile_options(vnode PRIVATE -Wno-error=single-bit-bitfield-constant-conversion) +endif(${TD_DARWIN}) set( VNODE_SOURCE_FILES "src/vnd/vnodeOpen.c" diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 01db196479..c85316f810 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -120,12 +120,32 @@ static FORCE_INLINE int64_t tsdbLogicToFileSize(int64_t lSize, int32_t szPage) { #define tsdbRowFromBlockData(BLOCKDATA, IROW) \ ((TSDBROW){.type = TSDBROW_COL_FMT, .pBlockData = (BLOCKDATA), .iRow = (IROW)}) +#define TSDBROW_INIT_KEY(_ROW, _KEY) \ + { \ + if ((_ROW)->type == TSDBROW_ROW_FMT) { \ + _KEY.version = (_ROW)->version; \ + _KEY.ts = (_ROW)->pTSRow->ts; \ + } else { \ + _KEY.version = (_ROW)->pBlockData->aVersion[(_ROW)->iRow]; \ + _KEY.ts = (_ROW)->pBlockData->aTSKEY[(_ROW)->iRow]; \ + } \ + } + +#define tColRowGetKey(_pBlock, _irow, _key) \ + { \ + (_key)->ts = (_pBlock)->aTSKEY[(_irow)]; \ + (_key)->numOfPKs = 0; \ + if ((_pBlock)->nColData > 0) { \ + tColRowGetPrimaryKey((_pBlock), (_irow), (_key)); \ + } \ + } + void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *pColVal); int32_t tsdbRowCompare(const void *p1, const void *p2); int32_t tsdbRowCompareWithoutVersion(const void *p1, const void *p2); int32_t tsdbRowKeyCmpr(const STsdbRowKey *key1, const STsdbRowKey *key2); void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key); -void tColRowGetKey(SBlockData *pBlock, int32_t irow, SRowKey *key); +void tColRowGetPrimaryKey(SBlockData *pBlock, int32_t irow, SRowKey *key); // STSDBRowIter @@ -902,9 +922,16 @@ typedef struct { SColVal colVal; } SLastCol; +typedef struct { + int8_t lflag; + STsdbRowKey tsdbRowKey; + SColVal colVal; +} SLastUpdateCtx; + int32_t tsdbOpenCache(STsdb *pTsdb); void tsdbCloseCache(STsdb *pTsdb); -int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *row); +int32_t tsdbCacheRowFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, int64_t version, int32_t nRow, SRow **aRow); +int32_t tsdbCacheColFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SBlockData *pBlockData); int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKEY eKey); int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, TSDBROW *row, STsdb *pTsdb); @@ -946,7 +973,28 @@ static FORCE_INLINE int32_t tsdbKeyCmprFn(const void *p1, const void *p2) { // #define SL_NODE_FORWARD(n, l) ((n)->forwards[l]) // #define SL_NODE_BACKWARD(n, l) ((n)->forwards[(n)->level + (l)]) -TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter); +static FORCE_INLINE TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter) { + if (pIter == NULL) return NULL; + + if (pIter->pRow) { + return pIter->pRow; + } + + if (pIter->backward) { + if (pIter->pNode == pIter->pTbData->sl.pHead) { + return NULL; + } + } else { + if (pIter->pNode == pIter->pTbData->sl.pTail) { + return NULL; + } + } + + pIter->pRow = &pIter->row; + pIter->row = pIter->pNode->row; + + return pIter->pRow; +} typedef struct { int64_t suid; diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 6f26e3a63f..d1488fa0b6 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -16,6 +16,7 @@ #include "functionMgt.h" #include "tsdb.h" #include "tsdbDataFileRW.h" +#include "tsdbIter.h" #include "tsdbReadUtil.h" #include "vnd.h" @@ -359,7 +360,10 @@ static int32_t tsdbCacheDeserializeV0(char const *value, SLastCol *pLastCol) { if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { pLastCol->colVal.value.nData = pLastColV0->colVal.value.nData; - pLastCol->colVal.value.pData = (uint8_t *)(&pLastColV0[1]); + pLastCol->colVal.value.pData = NULL; + if (pLastCol->colVal.value.nData > 0) { + pLastCol->colVal.value.pData = (uint8_t *)(&pLastColV0[1]); + } return sizeof(SLastColV0) + pLastColV0->colVal.value.nData; } else { pLastCol->colVal.value.val = pLastColV0->colVal.value.val; @@ -372,7 +376,7 @@ static SLastCol *tsdbCacheDeserialize(char const *value, size_t size) { return NULL; } - SLastCol* pLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); + SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); if (NULL == pLastCol) { return NULL; } @@ -401,8 +405,11 @@ static SLastCol *tsdbCacheDeserialize(char const *value, size_t size) { offset += sizeof(SValue); if (IS_VAR_DATA_TYPE(pLastCol->rowKey.pks[i].type)) { - pLastCol->rowKey.pks[i].pData = (uint8_t *)value + offset; - offset += pLastCol->rowKey.pks[i].nData; + pLastCol->rowKey.pks[i].pData = NULL; + if (pLastCol->rowKey.pks[i].nData > 0) { + pLastCol->rowKey.pks[i].pData = (uint8_t *)value + offset; + offset += pLastCol->rowKey.pks[i].nData; + } } } @@ -940,10 +947,37 @@ typedef struct { SLastKey key; } SIdxKey; -static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal *pColVal) { - uint8_t *pVal = NULL; +static int32_t tsdbCacheUpdateValue(SValue *pOld, SValue *pNew) { + uint8_t *pFree = NULL; int nData = 0; + if (IS_VAR_DATA_TYPE(pOld->type)) { + pFree = pOld->pData; + nData = pOld->nData; + } + + *pOld = *pNew; + if (IS_VAR_DATA_TYPE(pNew->type)) { + if (nData < pNew->nData) { + pOld->pData = taosMemoryCalloc(1, pNew->nData); + } else { + pOld->pData = pFree; + pFree = NULL; + } + + if (pNew->nData) { + memcpy(pOld->pData, pNew->pData, pNew->nData); + } else { + pFree = pOld->pData; + pOld->pData = NULL; + } + } + + taosMemoryFreeClear(pFree); + return 0; +} + +static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal *pColVal) { // update rowkey pLastCol->rowKey.ts = pRowKey->ts; pLastCol->rowKey.numOfPKs = pRowKey->numOfPKs; @@ -951,87 +985,43 @@ static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal SValue *pPKValue = &pLastCol->rowKey.pks[i]; SValue *pNewPKValue = &pRowKey->pks[i]; - if (IS_VAR_DATA_TYPE(pPKValue->type)) { - pVal = pPKValue->pData; - nData = pPKValue->nData; - } - *pPKValue = *pNewPKValue; - if (IS_VAR_DATA_TYPE(pPKValue->type)) { - if (nData < pPKValue->nData) { - taosMemoryFree(pVal); - pPKValue->pData = taosMemoryCalloc(1, pNewPKValue->nData); - } else { - pPKValue->pData = pVal; - } - if (pNewPKValue->nData) { - memcpy(pPKValue->pData, pNewPKValue->pData, pNewPKValue->nData); - } - } + (void)tsdbCacheUpdateValue(pPKValue, pNewPKValue); } // update colval - if (IS_VAR_DATA_TYPE(pColVal->value.type)) { - nData = pLastCol->colVal.value.nData; - pVal = pLastCol->colVal.value.pData; - } - pLastCol->colVal = *pColVal; - if (IS_VAR_DATA_TYPE(pColVal->value.type)) { - if (nData < pColVal->value.nData) { - taosMemoryFree(pVal); - pLastCol->colVal.value.pData = taosMemoryCalloc(1, pColVal->value.nData); - } else { - pLastCol->colVal.value.pData = pVal; - } - if (pColVal->value.nData) { - memcpy(pLastCol->colVal.value.pData, pColVal->value.pData, pColVal->value.nData); - } - } + pLastCol->colVal.cid = pColVal->cid; + pLastCol->colVal.flag = pColVal->flag; + (void)tsdbCacheUpdateValue(&pLastCol->colVal.value, &pColVal->value); if (!pLastCol->dirty) { pLastCol->dirty = 1; } } -int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow) { +static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray *updCtxArray) { + if (!updCtxArray || TARRAY_SIZE(updCtxArray) == 0) { + return 0; + } + int32_t code = 0; - // 1, fetch schema - STSchema *pTSchema = NULL; - int32_t sver = TSDBROW_SVERSION(pRow); - - code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); - if (code != TSDB_CODE_SUCCESS) { - terrno = code; - return -1; - } - - // 2, iterate col values into array - SArray *aColVal = taosArrayInit(32, sizeof(SColVal)); - - STSDBRowIter iter = {0}; - tsdbRowIterOpen(&iter, pRow, pTSchema); - - for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal; pColVal = tsdbRowIterNext(&iter)) { - taosArrayPush(aColVal, pColVal); - } - - tsdbRowClose(&iter); - - // 3, build keys & multi get from rocks - int num_keys = TARRAY_SIZE(aColVal); + int num_keys = TARRAY_SIZE(updCtxArray); SArray *remainCols = NULL; SLRUCache *pCache = pTsdb->lruCache; - STsdbRowKey tsdbRowKey = {0}; - tsdbRowGetKey(pRow, &tsdbRowKey); - SRowKey *pRowKey = &tsdbRowKey.key; - taosThreadMutexLock(&pTsdb->lruMutex); for (int i = 0; i < num_keys; ++i) { - SColVal *pColVal = (SColVal *)taosArrayGet(aColVal, i); - int16_t cid = pColVal->cid; + SLastUpdateCtx *updCtx = (SLastUpdateCtx *)taosArrayGet(updCtxArray, i); - SLastKey *key = &(SLastKey){.lflag = LFLAG_LAST_ROW, .uid = uid, .cid = cid}; + int8_t lflag = updCtx->lflag; + SRowKey *pRowKey = &updCtx->tsdbRowKey.key; + SColVal *pColVal = &updCtx->colVal; + + if (lflag == LFLAG_LAST && !COL_VAL_IS_VALUE(pColVal)) { + continue; + } + + SLastKey *key = &(SLastKey){.lflag = lflag, .uid = uid, .cid = pColVal->cid}; size_t klen = ROCKS_KEY_LEN; LRUHandle *h = taosLRUCacheLookup(pCache, key, klen); if (h) { @@ -1047,23 +1037,6 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow } taosArrayPush(remainCols, &(SIdxKey){i, *key}); } - - if (COL_VAL_IS_VALUE(pColVal)) { - key->lflag = LFLAG_LAST; - LRUHandle *h = taosLRUCacheLookup(pCache, key, klen); - if (h) { - SLastCol *pLastCol = (SLastCol *)taosLRUCacheValue(pCache, h); - if (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1) { - tsdbCacheUpdateLastCol(pLastCol, pRowKey, pColVal); - } - taosLRUCacheRelease(pCache, h, false); - } else { - if (!remainCols) { - remainCols = taosArrayInit(num_keys * 2, sizeof(SIdxKey)); - } - taosArrayPush(remainCols, &(SIdxKey){i, *key}); - } - } } if (remainCols) { @@ -1091,12 +1064,17 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow rocksdb_writebatch_t *wb = pTsdb->rCache.writebatch; for (int i = 0; i < num_keys; ++i) { SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[i]; - SColVal *pColVal = (SColVal *)TARRAY_DATA(aColVal) + idxKey->idx; - // SColVal *pColVal = (SColVal *)taosArrayGet(aColVal, idxKey->idx); + SLastUpdateCtx *updCtx = (SLastUpdateCtx *)taosArrayGet(updCtxArray, i); + SRowKey *pRowKey = &updCtx->tsdbRowKey.key; + SColVal *pColVal = &updCtx->colVal; SLastCol *pLastCol = tsdbCacheDeserialize(values_list[i], values_list_sizes[i]); SLastCol *PToFree = pLastCol; + if (IS_LAST_KEY(idxKey->key) && !COL_VAL_IS_VALUE(pColVal)) { + continue; + } + if (IS_LAST_ROW_KEY(idxKey->key)) { int32_t cmp_res = 1; if (pLastCol) { @@ -1104,8 +1082,8 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow } if (NULL == pLastCol || cmp_res < 0 || (cmp_res == 0 && !COL_VAL_IS_NONE(pColVal))) { - char *value = NULL; - size_t vlen = 0; + char *value = NULL; + size_t vlen = 0; SLastCol lastColTmp = {.rowKey = *pRowKey, .colVal = *pColVal}; tsdbCacheSerialize(&lastColTmp, &value, &vlen); @@ -1142,48 +1120,6 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow taosMemoryFree(value); } - } else { - if (COL_VAL_IS_VALUE(pColVal)) { - if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) { - char *value = NULL; - size_t vlen = 0; - SLastCol lastColTmp = {.rowKey = *pRowKey, .colVal = *pColVal}; - tsdbCacheSerialize(&lastColTmp, &value, &vlen); - - taosThreadMutexLock(&pTsdb->rCache.rMutex); - - rocksdb_writebatch_put(wb, (char *)&idxKey->key, ROCKS_KEY_LEN, value, vlen); - - taosThreadMutexUnlock(&pTsdb->rCache.rMutex); - - pLastCol = &lastColTmp; - SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); - *pTmpLastCol = *pLastCol; - pLastCol = pTmpLastCol; - - size_t charge = sizeof(*pLastCol); - for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) { - SValue *pValue = &pLastCol->rowKey.pks[i]; - if (IS_VAR_DATA_TYPE(pValue->type)) { - reallocVarDataVal(pValue); - charge += pValue->nData; - } - } - - if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { - reallocVarData(&pLastCol->colVal); - charge += pLastCol->colVal.value.nData; - } - - LRUStatus status = taosLRUCacheInsert(pTsdb->lruCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, - tsdbCacheDeleter, NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState); - if (status != TAOS_LRU_STATUS_OK) { - code = -1; - } - - taosMemoryFree(value); - } - } } taosMemoryFreeClear(PToFree); @@ -1203,11 +1139,152 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow taosThreadMutexUnlock(&pTsdb->lruMutex); _exit: - taosArrayDestroy(aColVal); - taosMemoryFree(pTSchema); return code; } +int32_t tsdbCacheRowFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, int64_t version, int32_t nRow, + SRow **aRow) { + int32_t code = 0; + + // 1. prepare last + TSDBROW lRow = {.type = TSDBROW_ROW_FMT, .pTSRow = aRow[nRow - 1], .version = version}; + + STSchema *pTSchema = NULL; + int32_t sver = TSDBROW_SVERSION(&lRow); + SArray *ctxArray = NULL; + SSHashObj *iColHash = NULL; + + code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); + if (code != TSDB_CODE_SUCCESS) { + terrno = code; + goto _exit; + } + + TSDBROW tRow = {.type = TSDBROW_ROW_FMT, .version = version}; + int32_t nCol = pTSchema->numOfCols; + + ctxArray = taosArrayInit(nCol, sizeof(SLastUpdateCtx)); + iColHash = tSimpleHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT)); + + // 1. prepare by lrow + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&lRow, &tsdbRowKey); + + STSDBRowIter iter = {0}; + tsdbRowIterOpen(&iter, &lRow, pTSchema); + int32_t iCol = 0; + for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal && iCol < nCol; pColVal = tsdbRowIterNext(&iter), iCol++) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST_ROW, .tsdbRowKey = tsdbRowKey, .colVal = *pColVal}; + taosArrayPush(ctxArray, &updateCtx); + + if (!COL_VAL_IS_VALUE(pColVal)) { + tSimpleHashPut(iColHash, &iCol, sizeof(iCol), NULL, 0); + continue; + } + updateCtx.lflag = LFLAG_LAST; + taosArrayPush(ctxArray, &updateCtx); + } + tsdbRowClose(&iter); + + // 2. prepare by the other rows + for (int32_t iRow = nRow - 2; iRow >= 0; --iRow) { + if (tSimpleHashGetSize(iColHash) == 0) { + break; + } + + tRow.pTSRow = aRow[iRow]; + + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&tRow, &tsdbRowKey); + + void *pIte = NULL; + int32_t iter = 0; + while ((pIte = tSimpleHashIterate(iColHash, pIte, &iter)) != NULL) { + int32_t iCol = ((int32_t *)pIte)[0]; + SColVal colVal = COL_VAL_NONE(0, 0); + tsdbRowGetColVal(&tRow, pTSchema, iCol, &colVal); + + if (COL_VAL_IS_VALUE(&colVal)) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST, .tsdbRowKey = tsdbRowKey, .colVal = colVal}; + taosArrayPush(ctxArray, &updateCtx); + tSimpleHashIterateRemove(iColHash, &iCol, sizeof(iCol), &pIte, &iter); + } + } + } + + // 3. do update + tsdbCacheUpdate(pTsdb, suid, uid, ctxArray); + +_exit: + taosMemoryFreeClear(pTSchema); + taosArrayDestroy(ctxArray); + tSimpleHashCleanup(iColHash); + return code; +} + +int32_t tsdbCacheColFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SBlockData *pBlockData) { + int32_t code = 0; + + TSDBROW lRow = tsdbRowFromBlockData(pBlockData, pBlockData->nRow - 1); + + STSchema *pTSchema = NULL; + int32_t sver = TSDBROW_SVERSION(&lRow); + SArray *ctxArray = NULL; + + code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); + if (code != TSDB_CODE_SUCCESS) { + terrno = code; + goto _exit; + } + + ctxArray = taosArrayInit(pBlockData->nColData, sizeof(SLastUpdateCtx)); + + // 1. prepare last + TSDBROW tRow = tsdbRowFromBlockData(pBlockData, 0); + + for (int32_t iColData = 0; iColData < pBlockData->nColData; ++iColData) { + SColData *pColData = &pBlockData->aColData[iColData]; + if ((pColData->flag & HAS_VALUE) != HAS_VALUE) { + continue; + } + + for (tRow.iRow = pBlockData->nRow - 1; tRow.iRow >= 0; --tRow.iRow) { + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&tRow, &tsdbRowKey); + + uint8_t colType = tColDataGetBitValue(pColData, tRow.iRow); + if (colType == 2) { + SColVal colVal = COL_VAL_NONE(pColData->cid, pColData->type); + tColDataGetValue(pColData, tRow.iRow, &colVal); + + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST, .tsdbRowKey = tsdbRowKey, .colVal = colVal}; + taosArrayPush(ctxArray, &updateCtx); + break; + } + } + } + + // 2. prepare last row + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&lRow, &tsdbRowKey); + + STSDBRowIter iter = {0}; + tsdbRowIterOpen(&iter, &lRow, pTSchema); + for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal; pColVal = tsdbRowIterNext(&iter)) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST_ROW, .tsdbRowKey = tsdbRowKey, .colVal = *pColVal}; + taosArrayPush(ctxArray, &updateCtx); + } + tsdbRowClose(&iter); + + // 3. do update + tsdbCacheUpdate(pTsdb, suid, uid, ctxArray); + +_exit: + taosMemoryFreeClear(pTSchema); + taosArrayDestroy(ctxArray); + return 0; +} + static int32_t mergeLastCid(tb_uid_t uid, STsdb *pTsdb, SArray **ppLastArray, SCacheRowsReader *pr, int16_t *aCols, int nCols, int16_t *slotIds); @@ -1481,7 +1558,10 @@ static int32_t tsdbCacheLoadFromRaw(STsdb *pTsdb, tb_uid_t uid, SArray *pLastArr taosArraySet(pLastArray, idxKey->idx, pLastCol); // taosArrayRemove(remainCols, i); - if (!pTmpColArray) { + if (/*!pTmpColArray*/ lastTmpIndexArray && !lastTmpColArray) { + continue; + } + if (/*!pTmpColArray*/ lastrowTmpIndexArray && lastrowTmpColArray) { continue; } diff --git a/source/dnode/vnode/src/tsdb/tsdbMemTable.c b/source/dnode/vnode/src/tsdb/tsdbMemTable.c index be15a4fecf..211855b245 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMemTable.c +++ b/source/dnode/vnode/src/tsdb/tsdbMemTable.c @@ -629,14 +629,12 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, SMemSkipListNode *pos[SL_MAX_LEVEL]; TSDBROW tRow = tsdbRowFromBlockData(pBlockData, 0); STsdbRowKey key; - TSDBROW lRow; // last row // first row tsdbRowGetKey(&tRow, &key); tbDataMovePosTo(pTbData, pos, &key, SL_MOVE_BACKWARD); if ((code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 0))) goto _exit; pTbData->minKey = TMIN(pTbData->minKey, key.key.ts); - lRow = tRow; // remain row ++tRow.iRow; @@ -653,7 +651,6 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, } if ((code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 1))) goto _exit; - lRow = tRow; ++tRow.iRow; } @@ -664,7 +661,7 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, } if (!TSDB_CACHE_NO(pMemTable->pTsdb->pVnode->config)) { - tsdbCacheUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, &lRow); + tsdbCacheColFormatUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, pBlockData); } // SMemTable @@ -688,7 +685,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, SMemSkipListNode *pos[SL_MAX_LEVEL]; TSDBROW tRow = {.type = TSDBROW_ROW_FMT, .version = version}; int32_t iRow = 0; - TSDBROW lRow; // backward put first data tRow.pTSRow = aRow[iRow++]; @@ -696,7 +692,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, tbDataMovePosTo(pTbData, pos, &key, SL_MOVE_BACKWARD); code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 0); if (code) goto _exit; - lRow = tRow; pTbData->minKey = TMIN(pTbData->minKey, key.key.ts); @@ -717,8 +712,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 1); if (code) goto _exit; - lRow = tRow; - iRow++; } } @@ -727,7 +720,7 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, pTbData->maxKey = key.key.ts; } if (!TSDB_CACHE_NO(pMemTable->pTsdb->pVnode->config)) { - tsdbCacheUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, &lRow); + tsdbCacheRowFormatUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, version, nRow, aRow); } // SMemTable @@ -806,26 +799,3 @@ SArray *tsdbMemTableGetTbDataArray(SMemTable *pMemTable) { _exit: return aTbDataP; } - -TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter) { - if (pIter == NULL) return NULL; - - if (pIter->pRow) { - return pIter->pRow; - } - - if (pIter->backward) { - if (pIter->pNode == pIter->pTbData->sl.pHead) { - return NULL; - } - } else { - if (pIter->pNode == pIter->pTbData->sl.pTail) { - return NULL; - } - } - - pIter->pRow = &pIter->row; - pIter->row = pIter->pNode->row; - - return pIter->pRow; -} diff --git a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c index 6b459f90f3..2a49c1ba0a 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c +++ b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c @@ -828,7 +828,7 @@ static FORCE_INLINE int32_t tLDataIterCmprFn(const SRBTreeNode *p1, const SRBTre SLDataIter *pIter1 = (SLDataIter *)(((uint8_t *)p1) - offsetof(SLDataIter, node)); SLDataIter *pIter2 = (SLDataIter *)(((uint8_t *)p2) - offsetof(SLDataIter, node)); - SRowKey rkey1, rkey2; + SRowKey rkey1 = {0}, rkey2 = {0}; tRowGetKeyEx(&pIter1->rInfo.row, &rkey1); tRowGetKeyEx(&pIter2->rInfo.row, &rkey2); diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index c25deb0d66..99520f7c92 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -24,6 +24,16 @@ #define ASCENDING_TRAVERSE(o) (o == TSDB_ORDER_ASC) #define getCurrentKeyInSttBlock(_r) (&((_r)->currentKey)) +#define tColRowGetKeyDeepCopy(_pBlock, _irow, _slotId, _pKey) \ + do { \ + (_pKey)->ts = (_pBlock)->aTSKEY[(_irow)]; \ + (_pKey)->numOfPKs = 0; \ + if ((_slotId) != -1) { \ + tColRowGetPriamyKeyDeepCopy(_pBlock, _irow, _slotId, _pKey); \ + } \ + } while (0) + +#define outOfTimeWindow(_ts, _window) (((_ts) > (_window)->ekey) || ((_ts) < (_window)->skey)) typedef struct { bool overlapWithNeighborBlock; @@ -75,11 +85,9 @@ static void getMemTableTimeRange(STsdbReader* pReader, int64_t* pMaxKey static void updateComposedBlockInfo(STsdbReader* pReader, double el, STableBlockScanInfo* pBlockScanInfo); static int32_t buildFromPreFilesetBuffer(STsdbReader* pReader); -static bool outOfTimeWindow(int64_t ts, STimeWindow* pWindow) { return (ts > pWindow->ekey) || (ts < pWindow->skey); } - static void resetPreFilesetMemTableListIndex(SReaderStatus* pStatus); -int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { +FORCE_INLINE int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { if (p2 == NULL) { return 1; } @@ -101,13 +109,7 @@ int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { } } -static void tColRowGetKeyDeepCopy(SBlockData* pBlock, int32_t irow, int32_t slotId, SRowKey* pKey) { - pKey->ts = pBlock->aTSKEY[irow]; - if (slotId == -1) { - pKey->numOfPKs = 0; - return; - } - +static void tColRowGetPriamyKeyDeepCopy(SBlockData* pBlock, int32_t irow, int32_t slotId, SRowKey* pKey) { SColData* pColData = &pBlock->aColData[slotId]; SColVal cv; tColDataGetValue(pColData, irow, &cv); @@ -131,13 +133,7 @@ static int32_t tGetPrimaryKeyIndex(uint8_t *p, SPrimaryKeyIndex *index) { return n; } -static void tRowGetKeyDeepCopy(SRow* pRow, SRowKey* pKey) { - pKey->ts = pRow->ts; - pKey->numOfPKs = pRow->numOfPKs; - if (pKey->numOfPKs == 0) { - return; - } - +static void tRowGetPrimaryKeyDeepCopy(SRow* pRow, SRowKey* pKey) { SPrimaryKeyIndex indices[TD_MAX_PK_COLS]; ASSERT(pKey->numOfPKs <= TD_MAX_PK_COLS); @@ -1735,7 +1731,7 @@ static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* pSttKey = getCurrentKeyInSttBlock(pSttBlockReader); } - SRowKey k; + SRowKey k = {0}; tRowGetKeyEx(pRow, &k); STSchema* pSchema = NULL; @@ -1939,7 +1935,7 @@ static int32_t doMergeMultiLevelRows(STsdbReader* pReader, STableBlockScanInfo* pfKey = NULL; } - SRowKey k, ik; + SRowKey k = {0}, ik = {0}; tRowGetKeyEx(pRow, &k); tRowGetKeyEx(piRow, &ik); @@ -2086,7 +2082,7 @@ int32_t doInitMemDataIter(STsdbReader* pReader, STbData** pData, STableBlockScan } static void doForwardDataIter(SRowKey* pKey, SIterInfo* pIter, STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader) { - SRowKey rowKey; + SRowKey rowKey = {0}; while (1) { TSDBROW* pRow = getValidMemRow(pIter, pBlockScanInfo->delSkyline, pReader); @@ -3559,7 +3555,7 @@ bool hasBeenDropped(const SArray* pDelList, int32_t* index, int64_t key, int64_t return false; } -TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* pReader) { +FORCE_INLINE TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* pReader) { if (!pIter->hasVal) { return NULL; } @@ -3567,7 +3563,8 @@ TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* p int32_t order = pReader->info.order; TSDBROW* pRow = tsdbTbDataIterGet(pIter->iter); - TSDBKEY key = TSDBROW_KEY(pRow); + TSDBKEY key; + TSDBROW_INIT_KEY(pRow, key); if (outOfTimeWindow(key.ts, &pReader->info.window)) { pIter->hasVal = false; return NULL; @@ -3593,7 +3590,7 @@ TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* p pRow = tsdbTbDataIterGet(pIter->iter); - key = TSDBROW_KEY(pRow); + TSDBROW_INIT_KEY(pRow, key); if (outOfTimeWindow(key.ts, &pReader->info.window)) { pIter->hasVal = false; return NULL; @@ -3632,10 +3629,12 @@ int32_t doMergeRowsInBuf(SIterInfo* pIter, uint64_t uid, SRowKey *pCurKey, SArra break; } - SRowKey nextKey = {0}; - tRowGetKeyEx(pRow, &nextKey); - if (pkCompEx(pCurKey, &nextKey) != 0) { - break; + if (pCurKey->numOfPKs > 0) { + SRowKey nextKey = {0}; + tRowGetKeyEx(pRow, &nextKey); + if (pkCompEx(pCurKey, &nextKey) != 0) { + break; + } } STSchema* pTSchema = NULL; @@ -3785,12 +3784,14 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt return TSDB_CODE_SUCCESS; } - SRowKey nextRowKey = {0}; - tRowGetKeyEx(pNextRow, &nextRowKey); - if (pKey->numOfPKs > 0 && pkCompEx(pKey, &nextRowKey) != 0) { - *pResRow = current; - *freeTSRow = false; - return TSDB_CODE_SUCCESS; + if (pKey->numOfPKs > 0) { + SRowKey nextRowKey = {0}; + tRowGetKeyEx(pNextRow, &nextRowKey); + if (pkCompEx(pKey, &nextRowKey) != 0) { + *pResRow = current; + *freeTSRow = false; + return TSDB_CODE_SUCCESS; + } } } } @@ -3801,7 +3802,7 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt // start to merge duplicated rows STSchema* pTSchema = NULL; if (current.type == TSDBROW_ROW_FMT) { // get the correct schema for row-wise data in memory - pTSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(¤t), pReader, uid); + pTSchema = doGetSchemaForTSRow(current.pTSRow->sver, pReader, uid); if (pTSchema == NULL) { return terrno; } @@ -3814,7 +3815,7 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt STSchema* pTSchema1 = NULL; if (pNextRow->type == TSDBROW_ROW_FMT) { // get the correct schema for row-wise data in memory - pTSchema1 = doGetSchemaForTSRow(TSDBROW_SVERSION(pNextRow), pReader, uid); + pTSchema1 = doGetSchemaForTSRow(pNextRow->pTSRow->sver, pReader, uid); if (pTSchema1 == NULL) { return terrno; } @@ -3926,37 +3927,49 @@ static int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbRea // todo refactor bool asc = ASCENDING_TRAVERSE(pReader->info.order); if (piter->hasVal) { - TSDBKEY k = TSDBROW_KEY(pRow); - if ((k.ts >= endKey && asc) || (k.ts <= endKey && !asc)) { + tRowGetKeyEx(pRow, &rowKey); + if ((rowKey.ts >= endKey && asc) || (rowKey.ts <= endKey && !asc)) { pRow = NULL; } } if (piiter->hasVal) { - TSDBKEY k = TSDBROW_KEY(piRow); - if ((k.ts >= endKey && asc) || (k.ts <= endKey && !asc)) { + tRowGetKeyEx(piRow, &irowKey); + if ((irowKey.ts >= endKey && asc) || (irowKey.ts <= endKey && !asc)) { piRow = NULL; } } - if (piter->hasVal && piiter->hasVal && pRow != NULL && piRow != NULL) { - tRowGetKeyEx(pRow, &rowKey); - tRowGetKeyEx(piRow, &irowKey); - + if (pRow != NULL && piRow != NULL) { int32_t code = TSDB_CODE_SUCCESS; - int32_t ret = pkCompEx(&rowKey, &irowKey); - if (ret != 0) { - if ((ret > 0 && asc) || (ret < 0 && (!asc))) { // ik.ts < k.ts + if (rowKey.numOfPKs == 0) { + if ((rowKey.ts > irowKey.ts && asc) || (rowKey.ts < irowKey.ts && (!asc))) { // ik.ts < k.ts code = doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); - } else if ((ret < 0 && asc) || (ret > 0 && (!asc))) { + } else if ((rowKey.ts < irowKey.ts && asc) || (rowKey.ts > irowKey.ts && (!asc))) { code = doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); + } else { // ik.ts == k.ts + *freeTSRow = true; + pResRow->type = TSDBROW_ROW_FMT; + code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); + if (code != TSDB_CODE_SUCCESS) { + return code; + } } - } else { // ik.ts == k.ts - *freeTSRow = true; - pResRow->type = TSDBROW_ROW_FMT; - code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); - if (code != TSDB_CODE_SUCCESS) { - return code; + } else { + int32_t ret = pkCompEx(&rowKey, &irowKey); + if (ret != 0) { + if ((ret > 0 && asc) || (ret < 0 && (!asc))) { // ik.ts < k.ts + code = doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); + } else if ((ret < 0 && asc) || (ret > 0 && (!asc))) { + code = doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); + } + } else { // ik.ts == k.ts + *freeTSRow = true; + pResRow->type = TSDBROW_ROW_FMT; + code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); + if (code != TSDB_CODE_SUCCESS) { + return code; + } } } @@ -3964,12 +3977,10 @@ static int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbRea } if (piter->hasVal && pRow != NULL) { - tRowGetKeyEx(pRow, &rowKey); return doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); } if (piiter->hasVal && piRow != NULL) { - tRowGetKeyEx(piRow, &irowKey); return doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); } @@ -4095,7 +4106,11 @@ int32_t buildDataBlockFromBufImpl(STableBlockScanInfo* pBlockScanInfo, int64_t e if (row.type == TSDBROW_ROW_FMT) { code = doAppendRowFromTSRow(pBlock, pReader, row.pTSRow, pBlockScanInfo); if (code == TSDB_CODE_SUCCESS) { - tRowGetKeyDeepCopy(row.pTSRow, &pBlockScanInfo->lastProcKey); + pBlockScanInfo->lastProcKey.ts = row.pTSRow->ts; + pBlockScanInfo->lastProcKey.numOfPKs = row.pTSRow->numOfPKs; + if (row.pTSRow->numOfPKs > 0) { + tRowGetPrimaryKeyDeepCopy(row.pTSRow, &pBlockScanInfo->lastProcKey); + } } if (freeTSRow) { diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index 1a62c824d7..8ab7f7eeef 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -212,7 +212,7 @@ static void initLastProcKey(STableBlockScanInfo *pScanInfo, STsdbReader* pReader int32_t numOfPks = pReader->suppInfo.numOfPks; bool asc = ASCENDING_TRAVERSE(pReader->info.order); int8_t type = pReader->suppInfo.pk.type; - int8_t bytes = pReader->suppInfo.pk.bytes; + int32_t bytes = pReader->suppInfo.pk.bytes; SRowKey* pRowKey = &pScanInfo->lastProcKey; if (asc) { @@ -1056,7 +1056,7 @@ static int32_t sortUidComparFn(const void* p1, const void* p2) { const SSttKeyRange* px1 = p1; const SSttKeyRange* px2 = p2; - int32_t ret = tRowKeyCompare(&px1, px2); + int32_t ret = tRowKeyCompare(&px1->skey, &px2->skey); return ret; } diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h index 5f0a58c378..6c76f8c372 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h @@ -38,14 +38,18 @@ extern "C" { (_k)->ekey.ts = INT64_MIN; \ } while (0); -#define tRowGetKeyEx(_pRow, _pKey) \ - do { \ - if ((_pRow)->type == TSDBROW_ROW_FMT) { \ - tRowGetKey((_pRow)->pTSRow, (_pKey)); \ - } else { \ - tColRowGetKey((_pRow)->pBlockData, (_pRow)->iRow, (_pKey)); \ - } \ - } while (0) +#define tRowGetKeyEx(_pRow, _pKey) \ + { \ + if ((_pRow)->type == TSDBROW_ROW_FMT) { \ + (_pKey)->ts = (_pRow)->pTSRow->ts; \ + if ((_pRow)->pTSRow->numOfPKs > 0) { \ + tRowGetPrimaryKey((_pRow)->pTSRow, (_pKey)); \ + } \ + } else { \ + (_pKey)->ts = (_pRow)->pBlockData->aTSKEY[(_pRow)->iRow]; \ + tColRowGetPrimaryKey((_pRow)->pBlockData, (_pRow)->iRow, (_pKey)); \ + } \ + } typedef enum { READER_STATUS_SUSPEND = 0x1, diff --git a/source/dnode/vnode/src/tsdb/tsdbRetention.c b/source/dnode/vnode/src/tsdb/tsdbRetention.c index 5a138d2bed..f4344296b4 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRetention.c +++ b/source/dnode/vnode/src/tsdb/tsdbRetention.c @@ -757,6 +757,16 @@ _exit: int32_t tsdbS3Migrate(STsdb *tsdb, int64_t now, int32_t sync) { int32_t code = 0; + extern int8_t tsS3EnabledCfg; + + int32_t expired = grantCheck(TSDB_GRANT_OBJECT_STORAGE); + if (expired && tsS3Enabled) { + tsdbWarn("s3 grant expired: %d", expired); + tsS3Enabled = false; + } else if (!expired && tsS3EnabledCfg) { + tsS3Enabled = true; + } + if (!tsS3Enabled) { return code; } diff --git a/source/dnode/vnode/src/tsdb/tsdbUtil.c b/source/dnode/vnode/src/tsdb/tsdbUtil.c index 60459b0d21..58075cf0ac 100644 --- a/source/dnode/vnode/src/tsdb/tsdbUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbUtil.c @@ -601,17 +601,21 @@ void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal * STColumn *pTColumn = &pTSchema->columns[iCol]; SValue value; - ASSERT(iCol > 0); - if (pRow->type == TSDBROW_ROW_FMT) { tRowGet(pRow->pTSRow, pTSchema, iCol, pColVal); } else if (pRow->type == TSDBROW_COL_FMT) { - SColData *pColData = tBlockDataGetColData(pRow->pBlockData, pTColumn->colId); - - if (pColData) { - tColDataGetValue(pColData, pRow->iRow, pColVal); + if (iCol == 0) { + *pColVal = + COL_VAL_VALUE(PRIMARYKEY_TIMESTAMP_COL_ID, + ((SValue){.type = TSDB_DATA_TYPE_TIMESTAMP, .val = pRow->pBlockData->aTSKEY[pRow->iRow]})); } else { - *pColVal = COL_VAL_NONE(pTColumn->colId, pTColumn->type); + SColData *pColData = tBlockDataGetColData(pRow->pBlockData, pTColumn->colId); + + if (pColData) { + tColDataGetValue(pColData, pRow->iRow, pColVal); + } else { + *pColVal = COL_VAL_NONE(pTColumn->colId, pTColumn->type); + } } } else { ASSERT(0); @@ -628,10 +632,7 @@ void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key) { } } -void tColRowGetKey(SBlockData *pBlock, int32_t irow, SRowKey *key) { - key->ts = pBlock->aTSKEY[irow]; - key->numOfPKs = 0; - +void tColRowGetPrimaryKey(SBlockData *pBlock, int32_t irow, SRowKey *key) { for (int32_t i = 0; i < pBlock->nColData; i++) { SColData *pColData = &pBlock->aColData[i]; if (pColData->cflag & COL_IS_KEY) { @@ -1820,4 +1821,4 @@ uint32_t tsdbCvtTimestampAlg(uint32_t alg) { DEFINE_VAR(alg) return 0; -} \ No newline at end of file +} diff --git a/source/libs/catalog/src/ctgCache.c b/source/libs/catalog/src/ctgCache.c index 2be746929f..9f9f783458 100644 --- a/source/libs/catalog/src/ctgCache.c +++ b/source/libs/catalog/src/ctgCache.c @@ -3226,14 +3226,24 @@ int32_t ctgGetTbTSMAFromCache(SCatalog* pCtg, SCtgTbTSMACtx* pCtx, int32_t dbIdx // get tb cache pName = taosArrayGet(pList, i); pTbCache = taosHashAcquire(dbCache->tbCache, pName->tname, strlen(pName->tname)); - if (!pTbCache || !pTbCache->pMeta) { + if (!pTbCache) { ctgDebug("tb: %s.%s not in cache", dbFName, pName->tname); ctgAddTSMAFetch(&pCtx->pFetches, dbIdx, i, fetchIdx, baseResIdx + i, flag, FETCH_TSMA_SOURCE_TB_META, NULL); taosArrayPush(pCtx->pResList, &(SMetaRes){0}); continue; } + CTG_LOCK(CTG_READ, &pTbCache->metaLock); + if (!pTbCache->pMeta) { + CTG_UNLOCK(CTG_READ, &pTbCache->metaLock); + ctgDebug("tb: %s.%s not in cache", dbFName, pName->tname); + ctgAddTSMAFetch(&pCtx->pFetches, dbIdx, i, fetchIdx, baseResIdx + i, flag, FETCH_TSMA_SOURCE_TB_META, NULL); + taosArrayPush(pCtx->pResList, &(SMetaRes){0}); + taosHashRelease(dbCache->tbCache, pTbCache); + continue; + } uint64_t suid = pTbCache->pMeta->suid; int8_t tbType = pTbCache->pMeta->tableType; + CTG_UNLOCK(CTG_READ, &pTbCache->metaLock); taosHashRelease(dbCache->tbCache, pTbCache); SName tsmaSourceTbName = *pName; @@ -3444,17 +3454,18 @@ static SCtgCacheOperation* createDropAllTbTsmaCtgCacheOp(SCatalog* pCtg, const S int32_t ctgDropTSMAForTbEnqueue(SCatalog *pCtg, SName *pName, bool syncOp) { ctgDebug("drop tsma meta for tb: %s.%s", pName->dbname, pName->tname); - int32_t code = 0; - SCtgDBCache* pDbCache = NULL; - SCtgCacheOperation* pOp = NULL; - char dbFName[TSDB_DB_FNAME_LEN]; + int32_t code = 0; + SCtgDBCache *pDbCache = NULL; + SCtgCacheOperation *pOp = NULL; + char dbFName[TSDB_DB_FNAME_LEN]; + SCtgTSMACache *pCtgCache = NULL; tNameGetFullDbName(pName, dbFName); CTG_ERR_JRET(ctgGetDBCache(pCtg, dbFName, &pDbCache)); if (NULL == pDbCache || !pDbCache->tsmaCache) { goto _return; } - SCtgTSMACache *pCtgCache = taosHashGet(pDbCache->tsmaCache, pName->tname, strlen(pName->tname)); + pCtgCache = taosHashAcquire(pDbCache->tsmaCache, pName->tname, strlen(pName->tname)); if (!pCtgCache) goto _return; CTG_LOCK(CTG_READ, &pCtgCache->tsmaLock); @@ -3471,10 +3482,11 @@ int32_t ctgDropTSMAForTbEnqueue(SCatalog *pCtg, SName *pName, bool syncOp) { } CTG_UNLOCK(CTG_READ, &pCtgCache->tsmaLock); CTG_ERR_JRET(ctgEnqueue(pCtg, pOp)); - + taosHashRelease(pDbCache->tsmaCache, pCtgCache); return TSDB_CODE_SUCCESS; _return: + if (pCtgCache) taosHashRelease(pDbCache->tsmaCache, pCtgCache); if (pOp) { taosMemoryFree(pOp->data); taosMemoryFree(pOp); diff --git a/source/libs/executor/CMakeLists.txt b/source/libs/executor/CMakeLists.txt index 838233346e..8ba5f9a866 100644 --- a/source/libs/executor/CMakeLists.txt +++ b/source/libs/executor/CMakeLists.txt @@ -1,6 +1,9 @@ aux_source_directory(src EXECUTOR_SRC) add_library(executor STATIC ${EXECUTOR_SRC}) +if(${TD_DARWIN}) + target_compile_options(executor PRIVATE -Wno-error=deprecated-non-prototype) +endif(${TD_DARWIN}) target_link_libraries(executor PRIVATE os util common function parser planner qcom scalar nodes index wal tdb geometry diff --git a/source/libs/executor/inc/executorInt.h b/source/libs/executor/inc/executorInt.h index fac216e6e6..592231f043 100644 --- a/source/libs/executor/inc/executorInt.h +++ b/source/libs/executor/inc/executorInt.h @@ -446,17 +446,23 @@ typedef struct STimeWindowAggSupp { SColumnInfoData timeWindowData; // query time window info for scalar function execution. } STimeWindowAggSupp; +typedef struct SSteamOpBasicInfo { + int32_t primaryPkIndex; + bool updateOperatorInfo; +} SSteamOpBasicInfo; + typedef struct SStreamScanInfo { - SExprInfo* pPseudoExpr; - int32_t numOfPseudoExpr; - SExprSupp tbnameCalSup; - SExprSupp* pPartTbnameSup; - SExprSupp tagCalSup; - int32_t primaryTsIndex; // primary time stamp slot id - int32_t primaryKeyIndex; - SReadHandle readHandle; - SInterval interval; // if the upstream is an interval operator, the interval info is also kept here. - SColMatchInfo matchInfo; + SSteamOpBasicInfo basic; + SExprInfo* pPseudoExpr; + int32_t numOfPseudoExpr; + SExprSupp tbnameCalSup; + SExprSupp* pPartTbnameSup; + SExprSupp tagCalSup; + int32_t primaryTsIndex; // primary time stamp slot id + int32_t primaryKeyIndex; + SReadHandle readHandle; + SInterval interval; // if the upstream is an interval operator, the interval info is also kept here. + SColMatchInfo matchInfo; SArray* pBlockLists; // multiple SSDatablock. SSDataBlock* pRes; // result SSDataBlock @@ -568,10 +574,6 @@ typedef struct SOpCheckPointInfo { SHashObj* children; // key:child id } SOpCheckPointInfo; -typedef struct SSteamOpBasicInfo { - int32_t primaryPkIndex; -} SSteamOpBasicInfo; - typedef struct SStreamIntervalOperatorInfo { SOptrBasicInfo binfo; // basic info SSteamOpBasicInfo basic; diff --git a/source/libs/executor/inc/streamexecutorInt.h b/source/libs/executor/inc/streamexecutorInt.h new file mode 100644 index 0000000000..8b61b93601 --- /dev/null +++ b/source/libs/executor/inc/streamexecutorInt.h @@ -0,0 +1,32 @@ +/* + * 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 . + */ +#ifndef STREAM_EXECUTORINT_H +#define STREAM_EXECUTORINT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "executorInt.h" + +void setStreamOperatorState(SSteamOpBasicInfo* pBasicInfo, EStreamType type); +bool needSaveStreamOperatorInfo(SSteamOpBasicInfo* pBasicInfo); +void saveStreamOperatorStateComplete(SSteamOpBasicInfo* pBasicInfo); + +#ifdef __cplusplus +} +#endif + +#endif // STREAM_EXECUTORINT_H diff --git a/source/libs/executor/src/aggregateoperator.c b/source/libs/executor/src/aggregateoperator.c index d0e1449188..b5a49831c5 100644 --- a/source/libs/executor/src/aggregateoperator.c +++ b/source/libs/executor/src/aggregateoperator.c @@ -484,7 +484,7 @@ int32_t doInitAggInfoSup(SAggSupporter* pAggSup, SqlFunctionCtx* pCtx, int32_t n if (!osTempSpaceAvailable()) { code = TSDB_CODE_NO_DISKSPACE; - qError("Init stream agg supporter failed since %s, key:%s, tempDir:%s", terrstr(code), pKey, tsTempDir); + qError("Init stream agg supporter failed since %s, key:%s, tempDir:%s", tstrerror(code), pKey, tsTempDir); return code; } diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index 29f667cb66..2f360044c9 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -824,14 +824,17 @@ int32_t qKillTask(qTaskInfo_t tinfo, int32_t rspCode) { qDebug("%s sync killed execTask", GET_TASKID(pTaskInfo)); setTaskKilled(pTaskInfo, TSDB_CODE_TSC_QUERY_KILLED); - taosWLockLatch(&pTaskInfo->lock); - while (qTaskIsExecuting(pTaskInfo)) { - taosMsleep(10); + while(1) { + taosWLockLatch(&pTaskInfo->lock); + if (qTaskIsExecuting(pTaskInfo)) { // let's wait for 100 ms and try again + taosWUnLockLatch(&pTaskInfo->lock); + taosMsleep(100); + } else { // not running now + pTaskInfo->code = rspCode; + taosWUnLockLatch(&pTaskInfo->lock); + return TSDB_CODE_SUCCESS; + } } - pTaskInfo->code = rspCode; - taosWUnLockLatch(&pTaskInfo->lock); - - return TSDB_CODE_SUCCESS; } bool qTaskIsExecuting(qTaskInfo_t qinfo) { diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 38d3fa8e96..110aabf9b1 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -20,6 +20,7 @@ #include "os.h" #include "querynodes.h" #include "systable.h" +#include "streamexecutorInt.h" #include "tname.h" #include "tdatablock.h" @@ -2426,10 +2427,13 @@ void streamScanOperatorSaveCheckpoint(SStreamScanInfo* pInfo) { if (!pInfo->pState) { return; } - void* pBuf = NULL; - int32_t len = streamScanOperatorEncode(pInfo, &pBuf); - pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_SCAN_OP_CHECKPOINT_NAME, strlen(STREAM_SCAN_OP_CHECKPOINT_NAME), pBuf, len); - taosMemoryFree(pBuf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + void* pBuf = NULL; + int32_t len = streamScanOperatorEncode(pInfo, &pBuf); + pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_SCAN_OP_CHECKPOINT_NAME, strlen(STREAM_SCAN_OP_CHECKPOINT_NAME), pBuf, len); + taosMemoryFree(pBuf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } // other properties are recovered from the execution plan @@ -2582,6 +2586,7 @@ FETCH_NEXT_BLOCK: case STREAM_NORMAL: case STREAM_GET_ALL: printDataBlock(pBlock, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); return pBlock; case STREAM_RETRIEVE: { pInfo->blockType = STREAM_INPUT__DATA_SUBMIT; @@ -2622,6 +2627,7 @@ FETCH_NEXT_BLOCK: if (pInfo->pDeleteDataRes->info.rows > 0) { printSpecDataBlock(pInfo->pDeleteDataRes, getStreamOpName(pOperator->operatorType), "delete result", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pInfo->pDeleteDataRes->info.type); return pInfo->pDeleteDataRes; } else { goto FETCH_NEXT_BLOCK; @@ -2639,6 +2645,7 @@ FETCH_NEXT_BLOCK: if (pInfo->pDeleteDataRes->info.rows > 0) { pInfo->scanMode = STREAM_SCAN_FROM_DATAREADER_RANGE; printSpecDataBlock(pInfo->pDeleteDataRes, getStreamOpName(pOperator->operatorType), "delete result", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pInfo->pDeleteDataRes->info.type); return pInfo->pDeleteDataRes; } else { goto FETCH_NEXT_BLOCK; @@ -2652,6 +2659,7 @@ FETCH_NEXT_BLOCK: break; } printDataBlock(pBlock, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); return pBlock; } else if (pInfo->blockType == STREAM_INPUT__DATA_SUBMIT) { qDebug("stream scan mode:%d, %s", pInfo->scanMode, id); @@ -2659,6 +2667,7 @@ FETCH_NEXT_BLOCK: case STREAM_SCAN_FROM_RES: { pInfo->scanMode = STREAM_SCAN_FROM_READERHANDLE; doCheckUpdate(pInfo, pInfo->pRes->info.window.ekey, pInfo->pRes); + setStreamOperatorState(&pInfo->basic, pInfo->pRes->info.type); doFilter(pInfo->pRes, pOperator->exprSupp.pFilterInfo, NULL); pInfo->pRes->info.dataLoad = 1; blockDataUpdateTsWindow(pInfo->pRes, pInfo->primaryTsIndex); @@ -2762,6 +2771,7 @@ FETCH_NEXT_BLOCK: } doCheckUpdate(pInfo, pBlockInfo->window.ekey, pInfo->pRes); + setStreamOperatorState(&pInfo->basic, pInfo->pRes->info.type); doFilter(pInfo->pRes, pOperator->exprSupp.pFilterInfo, NULL); blockDataUpdateTsWindow(pInfo->pRes, pInfo->primaryTsIndex); diff --git a/source/libs/executor/src/streamcountwindowoperator.c b/source/libs/executor/src/streamcountwindowoperator.c index 491a1da6aa..050e67e15d 100644 --- a/source/libs/executor/src/streamcountwindowoperator.c +++ b/source/libs/executor/src/streamcountwindowoperator.c @@ -17,6 +17,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tdatablock.h" @@ -415,13 +416,16 @@ void* doStreamCountDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamCountSaveCheckpoint(SOperatorInfo* pOperator) { SStreamCountAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamCountEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamCountEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_COUNT_OP_CHECKPOINT_NAME, - strlen(STREAM_COUNT_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamCountEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamCountEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_COUNT_OP_CHECKPOINT_NAME, + strlen(STREAM_COUNT_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } void doResetCountWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock) { @@ -550,6 +554,7 @@ static SSDataBlock* doStreamCountAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT) { bool add = pInfo->destHasPrimaryKey && IS_NORMAL_COUNT_OP(pOperator); diff --git a/source/libs/executor/src/streameventwindowoperator.c b/source/libs/executor/src/streameventwindowoperator.c index 1116851323..64d6244fe7 100644 --- a/source/libs/executor/src/streameventwindowoperator.c +++ b/source/libs/executor/src/streameventwindowoperator.c @@ -18,6 +18,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tcompare.h" @@ -458,13 +459,16 @@ void* doStreamEventDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamEventSaveCheckpoint(SOperatorInfo* pOperator) { SStreamEventAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamEventEncodeOpState(NULL, 0, pOperator); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamEventEncodeOpState(&pBuf, len, pOperator); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_EVENT_OP_CHECKPOINT_NAME, - strlen(STREAM_EVENT_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamEventEncodeOpState(NULL, 0, pOperator); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamEventEncodeOpState(&pBuf, len, pOperator); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_EVENT_OP_CHECKPOINT_NAME, + strlen(STREAM_EVENT_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static SSDataBlock* buildEventResult(SOperatorInfo* pOperator) { @@ -531,6 +535,7 @@ static SSDataBlock* doStreamEventAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { diff --git a/source/libs/executor/src/streamexecutorInt.c b/source/libs/executor/src/streamexecutorInt.c new file mode 100644 index 0000000000..875ae00350 --- /dev/null +++ b/source/libs/executor/src/streamexecutorInt.c @@ -0,0 +1,30 @@ +/* + * 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 "executorInt.h" + +void setStreamOperatorState(SSteamOpBasicInfo* pBasicInfo, EStreamType type) { + if (type != STREAM_GET_ALL && type != STREAM_CHECKPOINT) { + pBasicInfo->updateOperatorInfo = true; + } +} + +bool needSaveStreamOperatorInfo(SSteamOpBasicInfo* pBasicInfo) { + return pBasicInfo->updateOperatorInfo; +} + +void saveStreamOperatorStateComplete(SSteamOpBasicInfo* pBasicInfo) { + pBasicInfo->updateOperatorInfo = false; +} diff --git a/source/libs/executor/src/streamtimewindowoperator.c b/source/libs/executor/src/streamtimewindowoperator.c index 08ce0e25f1..2da9ed0353 100644 --- a/source/libs/executor/src/streamtimewindowoperator.c +++ b/source/libs/executor/src/streamtimewindowoperator.c @@ -18,6 +18,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tcompare.h" @@ -1211,13 +1212,16 @@ void doStreamIntervalDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera void doStreamIntervalSaveCheckpoint(SOperatorInfo* pOperator) { SStreamIntervalOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamIntervalEncodeOpState(NULL, 0, pOperator); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamIntervalEncodeOpState(&pBuf, len, pOperator); - pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_INTERVAL_OP_CHECKPOINT_NAME, - strlen(STREAM_INTERVAL_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamIntervalEncodeOpState(NULL, 0, pOperator); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamIntervalEncodeOpState(&pBuf, len, pOperator); + pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_INTERVAL_OP_CHECKPOINT_NAME, + strlen(STREAM_INTERVAL_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static void copyIntervalDeleteKey(SSHashObj* pMap, SArray* pWins) { @@ -1347,6 +1351,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) { } pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_NORMAL || pBlock->info.type == STREAM_PULL_DATA) { pInfo->binfo.pRes->info.type = pBlock->info.type; @@ -2690,13 +2695,16 @@ void* doStreamSessionDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera void doStreamSessionSaveCheckpoint(SOperatorInfo* pOperator) { SStreamSessionAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamSessionEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamSessionEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_SESSION_OP_CHECKPOINT_NAME, - strlen(STREAM_SESSION_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamSessionEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamSessionEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_SESSION_OP_CHECKPOINT_NAME, + strlen(STREAM_SESSION_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } void resetUnCloseSessionWinInfo(SSHashObj* winMap) { @@ -2766,6 +2774,7 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -3176,6 +3185,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -3673,13 +3683,16 @@ void* doStreamStateDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamStateSaveCheckpoint(SOperatorInfo* pOperator) { SStreamStateAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamStateEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamStateEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_STATE_OP_CHECKPOINT_NAME, - strlen(STREAM_STATE_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamStateEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamStateEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_STATE_OP_CHECKPOINT_NAME, + strlen(STREAM_STATE_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static SSDataBlock* buildStateResult(SOperatorInfo* pOperator) { @@ -3746,6 +3759,7 @@ static SSDataBlock* doStreamStateAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -4069,6 +4083,7 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) { pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -4465,6 +4480,7 @@ static SSDataBlock* doStreamMidIntervalAgg(SOperatorInfo* pOperator) { } pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_NORMAL || pBlock->info.type == STREAM_PULL_DATA) { pInfo->binfo.pRes->info.type = pBlock->info.type; diff --git a/source/libs/executor/src/sysscanoperator.c b/source/libs/executor/src/sysscanoperator.c index 16b0474f9c..10d38b3d95 100644 --- a/source/libs/executor/src/sysscanoperator.c +++ b/source/libs/executor/src/sysscanoperator.c @@ -549,7 +549,7 @@ static SSDataBlock* sysTableScanUserCols(SOperatorInfo* pOperator) { if (!pInfo->pCur || !pInfo->pSchema) { terrno = TSDB_CODE_OUT_OF_MEMORY; - qError("sysTableScanUserCols failed since %s", terrstr(terrno)); + qError("sysTableScanUserCols failed since %s", terrstr()); blockDataDestroy(pDataBlock); pInfo->loadInfo.totalRows = 0; return NULL; @@ -1651,50 +1651,56 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator) { SSysTableScanInfo* pInfo = pOperator->info; char dbName[TSDB_DB_NAME_LEN] = {0}; - if (isTaskKilled(pOperator->pTaskInfo)) { - setOperatorCompleted(pOperator); - return NULL; - } + while (1) { - blockDataCleanup(pInfo->pRes); - - const char* name = tNameGetTableName(&pInfo->name); - if (pInfo->showRewrite) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && - strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { - sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - } - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); - } - - SSDataBlock* pBlock = NULL; - if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTables(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTags(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { - pBlock = sysTableScanUserCols(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && - IS_SYS_DBNAME(dbName)) { - pBlock = sysTableScanUserSTables(pOperator); - } else { // load the meta from mnode of the given epset - pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); - } - - sysTableScanFillTbName(pOperator, pInfo, name, pBlock); - if (pBlock != NULL) { - bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); - if (limitReached) { + if (isTaskKilled(pOperator->pTaskInfo)) { setOperatorCompleted(pOperator); + return NULL; } - return pBlock->info.rows > 0 ? pBlock : NULL; - } else { - return NULL; + blockDataCleanup(pInfo->pRes); + + const char* name = tNameGetTableName(&pInfo->name); + if (pInfo->showRewrite) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && + strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { + sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + } + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); + } + + SSDataBlock* pBlock = NULL; + if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTables(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTags(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { + pBlock = sysTableScanUserCols(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && + IS_SYS_DBNAME(dbName)) { + pBlock = sysTableScanUserSTables(pOperator); + } else { // load the meta from mnode of the given epset + pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); + } + + sysTableScanFillTbName(pOperator, pInfo, name, pBlock); + if (pBlock != NULL) { + bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); + if (limitReached) { + setOperatorCompleted(pOperator); + } + + if (pBlock->info.rows == 0) { + continue; + } + return pBlock; + } else { + return NULL; + } } } diff --git a/source/libs/executor/src/timesliceoperator.c b/source/libs/executor/src/timesliceoperator.c index 080fd6b914..9a84127be6 100644 --- a/source/libs/executor/src/timesliceoperator.c +++ b/source/libs/executor/src/timesliceoperator.c @@ -204,6 +204,11 @@ static bool checkDuplicateTimestamps(STimeSliceOperatorInfo* pSliceInfo, SColumn SRowKey cur = {.ts = currentTs, .numOfPKs = (pPkCol != NULL)? 1:0}; if (pPkCol != NULL) { cur.pks[0].type = pPkCol->info.type; + if (IS_VAR_DATA_TYPE(pPkCol->info.type)) { + cur.pks[0].pData = (uint8_t*)colDataGetVarData(pPkCol, curIndex); + } else { + memcpy(&cur.pks[0].val, colDataGetData(pPkCol, curIndex), pPkCol->info.bytes); + } } // let's discard the duplicated ts diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index c8eb7580ed..e2ea6c1374 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -842,7 +842,7 @@ void udfdGetFuncBodyPath(const SUdf *udf, char *path) { int32_t udfdSaveFuncBodyToFile(SFuncInfo *pFuncInfo, SUdf *udf) { if (!osDataSpaceAvailable()) { terrno = TSDB_CODE_NO_DISKSPACE; - fnError("udfd create shared library failed since %s", terrstr(terrno)); + fnError("udfd create shared library failed since %s", terrstr()); return terrno; } @@ -1424,7 +1424,7 @@ int main(int argc, char *argv[]) { printf("failed to start since init log error\n"); } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { fnError("failed to start since read config error"); return -2; } diff --git a/source/libs/function/test/runUdf.c b/source/libs/function/test/runUdf.c index aa8b88b738..eef6cdc3d3 100644 --- a/source/libs/function/test/runUdf.c +++ b/source/libs/function/test/runUdf.c @@ -127,7 +127,7 @@ int aggregateFuncTest() { int main(int argc, char *argv[]) { parseArgs(argc, argv); initLog(); - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { fnError("failed to start since read config error"); return -1; } diff --git a/source/libs/geometry/src/geosWrapper.c b/source/libs/geometry/src/geosWrapper.c index ad2d477a13..c7c83f4796 100644 --- a/source/libs/geometry/src/geosWrapper.c +++ b/source/libs/geometry/src/geosWrapper.c @@ -86,6 +86,67 @@ _exit: return code; } +static int initWktRegex(pcre2_code **ppRegex, pcre2_match_data **ppMatchData) { + int ret = 0; + char *wktPatternWithSpace = taosMemoryCalloc(4, 1024); + sprintf( + wktPatternWithSpace, + "^( *)point( *)z?m?( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\)))|linestring( *)z?m?( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))|polygon( *)z?m?( " + "*)((empty)|(\\(( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( " + "*)\\)))|multipoint( *)z?m?( *)((empty)|(\\(( " + "*)((([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}|((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\))))(( *)(,)( " + "*)((([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}|((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\))))( *))*( " + "*)\\)))|multilinestring( *)z?m?( *)((empty)|(\\(( *)((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( " + "*)\\)))|multipolygon( *)z?m?( *)((empty)|(\\(( *)((empty)|(\\(( *)((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( *)\\)))( *))*( " + "*)\\)))|(GEOCOLLECTION\\((?R)(( *)(,)( *)(?R))*( *)\\))( *)$"); + + ret = doRegComp(ppRegex, ppMatchData, wktPatternWithSpace); + taosMemoryFree(wktPatternWithSpace); + return ret; +} + int32_t initCtxGeomFromText() { int32_t code = TSDB_CODE_FAILED; SGeosContext* geosCtx = getThreadLocalGeosCtx(); @@ -113,6 +174,10 @@ int32_t initCtxGeomFromText() { } } + if (geosCtx->WKTRegex == NULL) { + if (initWktRegex(&geosCtx->WKTRegex, &geosCtx->WKTMatchData) != 0) return code; + } + return TSDB_CODE_SUCCESS; } @@ -125,6 +190,11 @@ int32_t doGeomFromText(const char *inputWKT, unsigned char **outputGeom, size_t GEOSGeometry *geom = NULL; unsigned char *wkb = NULL; + if (doRegExec(inputWKT, geosCtx->WKTRegex, geosCtx->WKTMatchData) != 0) { + code = TSDB_CODE_FUNC_FUNTION_PARA_VALUE; + goto _exit; + } + geom = GEOSWKTReader_read_r(geosCtx->handle, geosCtx->WKTReader, inputWKT); if (geom == NULL) { code = TSDB_CODE_FUNC_FUNTION_PARA_VALUE; diff --git a/source/libs/monitorfw/CMakeLists.txt b/source/libs/monitorfw/CMakeLists.txt index 610cd63985..f08b2d6c2b 100644 --- a/source/libs/monitorfw/CMakeLists.txt +++ b/source/libs/monitorfw/CMakeLists.txt @@ -5,5 +5,7 @@ target_include_directories( PUBLIC "${TD_SOURCE_DIR}/include/libs/monitorfw" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc" ) - +if(${TD_DARWIN}) + target_compile_options(monitorfw PRIVATE -Wno-error=deprecated-pragma) +endif(${TD_DARWIN}) target_link_libraries(monitorfw os util common transport) diff --git a/source/libs/nodes/src/nodesCodeFuncs.c b/source/libs/nodes/src/nodesCodeFuncs.c index 0eaa2fd2b0..1aa30b854f 100644 --- a/source/libs/nodes/src/nodesCodeFuncs.c +++ b/source/libs/nodes/src/nodesCodeFuncs.c @@ -187,6 +187,8 @@ const char* nodesNodeName(ENodeType type) { return "BalanceVgroupStmt"; case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return "BalanceVgroupLeaderStmt"; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return "BalanceVgroupLeaderStmt"; case QUERY_NODE_MERGE_VGROUP_STMT: return "MergeVgroupStmt"; case QUERY_NODE_SHOW_DB_ALIVE_STMT: @@ -7607,6 +7609,8 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) { return TSDB_CODE_SUCCESS; // SBalanceVgroupStmt has no fields to serialize. case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to serialize. + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return TSDB_CODE_SUCCESS; case QUERY_NODE_MERGE_VGROUP_STMT: return mergeVgroupStmtToJson(pObj, pJson); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: @@ -7953,7 +7957,9 @@ static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) { case QUERY_NODE_BALANCE_VGROUP_STMT: return TSDB_CODE_SUCCESS; // SBalanceVgroupStmt has no fields to deserialize. case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: - return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to deserialize. + return TSDB_CODE_SUCCESS; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to deserialize. case QUERY_NODE_MERGE_VGROUP_STMT: return jsonToMergeVgroupStmt(pJson, pObj); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index adb011e3ec..cbffcde875 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -473,6 +473,8 @@ SNode* nodesMakeNode(ENodeType type) { return makeNode(type, sizeof(SBalanceVgroupStmt)); case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return makeNode(type, sizeof(SBalanceVgroupLeaderStmt)); + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return makeNode(type, sizeof(SBalanceVgroupLeaderStmt)); case QUERY_NODE_MERGE_VGROUP_STMT: return makeNode(type, sizeof(SMergeVgroupStmt)); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: @@ -1161,6 +1163,7 @@ void nodesDestroyNode(SNode* pNode) { case QUERY_NODE_RESUME_STREAM_STMT: // no pointer field case QUERY_NODE_BALANCE_VGROUP_STMT: // no pointer field case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: // no pointer field + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: // no pointer field case QUERY_NODE_MERGE_VGROUP_STMT: // no pointer field break; case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: diff --git a/source/libs/parser/inc/parAst.h b/source/libs/parser/inc/parAst.h index dac9599fa4..e8596c4d19 100644 --- a/source/libs/parser/inc/parAst.h +++ b/source/libs/parser/inc/parAst.h @@ -274,6 +274,7 @@ SNode* createKillStmt(SAstCreateContext* pCxt, ENodeType type, const SToken* pId SNode* createKillQueryStmt(SAstCreateContext* pCxt, const SToken* pQueryId); SNode* createBalanceVgroupStmt(SAstCreateContext* pCxt); SNode* createBalanceVgroupLeaderStmt(SAstCreateContext* pCxt, const SToken* pVgId); +SNode* createBalanceVgroupLeaderDBNameStmt(SAstCreateContext* pCxt, const SToken* pDbName); SNode* createMergeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId1, const SToken* pVgId2); SNode* createRedistributeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId, SNodeList* pDnodes); SNode* createSplitVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 7ffc898529..60e33c6f33 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -773,6 +773,7 @@ cmd ::= KILL COMPACT NK_INTEGER(A). /************************************************ merge/redistribute/ vgroup ******************************************/ cmd ::= BALANCE VGROUP. { pCxt->pRootNode = createBalanceVgroupStmt(pCxt); } cmd ::= BALANCE VGROUP LEADER on_vgroup_id(A). { pCxt->pRootNode = createBalanceVgroupLeaderStmt(pCxt, &A); } +cmd ::= BALANCE VGROUP LEADER DATABASE db_name(A). { pCxt->pRootNode = createBalanceVgroupLeaderDBNameStmt(pCxt, &A); } cmd ::= MERGE VGROUP NK_INTEGER(A) NK_INTEGER(B). { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &A, &B); } cmd ::= REDISTRIBUTE VGROUP NK_INTEGER(A) dnode_list(B). { pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &A, B); } cmd ::= SPLIT VGROUP NK_INTEGER(A). { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &A); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index fa03780a6d..9ae9dfffd7 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -2809,6 +2809,16 @@ SNode* createBalanceVgroupLeaderStmt(SAstCreateContext* pCxt, const SToken* pVgI return (SNode*)pStmt; } +SNode* createBalanceVgroupLeaderDBNameStmt(SAstCreateContext* pCxt, const SToken* pDbName){ + CHECK_PARSER_STATUS(pCxt); + SBalanceVgroupLeaderStmt* pStmt = (SBalanceVgroupLeaderStmt*)nodesMakeNode(QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT); + CHECK_OUT_OF_MEM(pStmt); + if (NULL != pDbName) { + COPY_STRING_FORM_ID_TOKEN(pStmt->dbName, pDbName); + } + return (SNode*)pStmt; +} + SNode* createMergeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId1, const SToken* pVgId2) { CHECK_PARSER_STATUS(pCxt); SMergeVgroupStmt* pStmt = (SMergeVgroupStmt*)nodesMakeNode(QUERY_NODE_MERGE_VGROUP_STMT); diff --git a/source/libs/parser/src/parAstParser.c b/source/libs/parser/src/parAstParser.c index 3da6ac668c..122118b71c 100644 --- a/source/libs/parser/src/parAstParser.c +++ b/source/libs/parser/src/parAstParser.c @@ -42,7 +42,6 @@ int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placehol return TSDB_CODE_SUCCESS; } - int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) { SAstCreateContext cxt; initAstCreateContext(pParseCxt, &cxt); @@ -534,6 +533,10 @@ static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS, pCxt->pMetaCache); + if (TSDB_CODE_SUCCESS == code) { + code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, + ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache); + } if (TSDB_CODE_SUCCESS == code) { code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); } @@ -631,8 +634,8 @@ static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStm } static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { - int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACT_DETAILS, - pCxt->pMetaCache); + int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, + TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache); return code; } @@ -687,7 +690,7 @@ static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowC int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0); if (TSDB_CODE_SUCCESS == code) { code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, - AUTH_TYPE_READ, pCxt->pMetaCache); + AUTH_TYPE_READ, pCxt->pMetaCache); } if (TSDB_CODE_SUCCESS == code) { code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); @@ -696,7 +699,6 @@ static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowC return code; } - static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS, pCxt->pMetaCache); @@ -755,24 +757,22 @@ static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* p return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache); } - static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) { - int32_t code = - reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); + int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE, pCxt->pMetaCache); } if (TSDB_CODE_SUCCESS == code) { - code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, AUTH_TYPE_ALTER, - pCxt->pMetaCache); + code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, + AUTH_TYPE_ALTER, pCxt->pMetaCache); } return code; } static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) { - int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, AUTH_TYPE_ALTER, - pCxt->pMetaCache); + int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, + pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache); return code; } @@ -783,7 +783,7 @@ static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreat code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { char dstTbName[TSDB_TABLE_NAME_LEN] = {0}; - snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s"TSMA_RES_STB_POSTFIX, pStmt->tableName); + snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName); code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); @@ -921,7 +921,7 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) { case QUERY_NODE_SHOW_COMPACTS_STMT: return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT: - return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt); + return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_GRANTS_FULL_STMT: return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_GRANTS_LOGS_STMT: diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index 6cd10f8a1f..5ad9feddbc 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -677,6 +677,11 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate p += sizeof(uint64_t); int8_t* fields = p; + if(*fields >= TSDB_DATA_TYPE_MAX || *fields < 0){ + uError("fields type error:%d", *fields); + ret = TSDB_CODE_INVALID_PARA; + goto end; + } p += numOfCols * (sizeof(int8_t) + sizeof(int32_t)); int32_t* colLength = (int32_t*)p; @@ -688,12 +693,12 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate SBoundColInfo* boundInfo = &pTableCxt->boundColsInfo; if (tFields != NULL && numFields != numOfCols) { - if (errstr != NULL) snprintf(errstr, errstrLen, "numFields:%d != raw numOfCols:%d", numFields, numOfCols); + if (errstr != NULL) snprintf(errstr, errstrLen, "numFields:%d not equal to data cols:%d", numFields, numOfCols); ret = TSDB_CODE_INVALID_PARA; goto end; } if (tFields != NULL && numFields > boundInfo->numOfBound) { - if (errstr != NULL) snprintf(errstr, errstrLen, "numFields:%d > boundInfo->numOfBound:%d", numFields, boundInfo->numOfBound); + if (errstr != NULL) snprintf(errstr, errstrLen, "numFields:%d bigger than num of bound cols:%d", numFields, boundInfo->numOfBound); ret = TSDB_CODE_INVALID_PARA; goto end; } @@ -702,8 +707,8 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate SSchema* pColSchema = &pSchema[j]; SColData* pCol = taosArrayGet(pTableCxt->pData->aCol, j); if (*fields != pColSchema->type && *(int32_t*)(fields + sizeof(int8_t)) != pColSchema->bytes) { - if (errstr != NULL) snprintf(errstr, errstrLen, "type or bytes not equal, id:%d, type:%d, raw type:%d. bytes:%d, raw bytes:%d", - pColSchema->colId, pColSchema->type, *fields, pColSchema->bytes, *(int32_t*)(fields + sizeof(int8_t))); + if (errstr != NULL) snprintf(errstr, errstrLen, "column type or bytes not equal, name:%s, schema type:%s, bytes:%d, data type:%s, bytes:%d", + pColSchema->name, tDataTypes[pColSchema->type].name, pColSchema->bytes, tDataTypes[*fields].name, *(int32_t*)(fields + sizeof(int8_t))); ret = TSDB_CODE_INVALID_PARA; goto end; } @@ -732,8 +737,8 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate SSchema* pColSchema = &pSchema[j]; if (strcmp(pColSchema->name, tFields[i].name) == 0) { if (*fields != pColSchema->type && *(int32_t*)(fields + sizeof(int8_t)) != pColSchema->bytes) { - if (errstr != NULL) snprintf(errstr, errstrLen, "type or bytes not equal, id:%d, type:%d, raw type:%d. bytes:%d, raw bytes:%d", - pColSchema->colId, pColSchema->type, *fields, pColSchema->bytes, *(int32_t*)(fields + sizeof(int8_t))); + if (errstr != NULL) snprintf(errstr, errstrLen, "column type or bytes not equal, name:%s, schema type:%s, bytes:%d, data type:%s, bytes:%d", + pColSchema->name, tDataTypes[pColSchema->type].name, pColSchema->bytes, tDataTypes[*fields].name, *(int32_t*)(fields + sizeof(int8_t))); ret = TSDB_CODE_INVALID_PARA; goto end; } diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index b26f837423..79b37c2950 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -4338,7 +4338,7 @@ int32_t translateTable(STranslateContext* pCxt, SNode** pTable, SNode* pJoinPare return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code)); } #ifdef TD_ENTERPRISE - if (TSDB_VIEW_TABLE == pRealTable->pMeta->tableType) { + if (TSDB_VIEW_TABLE == pRealTable->pMeta->tableType && !pCurrSmt->tagScan) { return translateView(pCxt, pTable, &name); } translateAudit(pCxt, pRealTable, &name); @@ -10578,6 +10578,7 @@ static int32_t translateBalanceVgroup(STranslateContext* pCxt, SBalanceVgroupStm static int32_t translateBalanceVgroupLeader(STranslateContext* pCxt, SBalanceVgroupLeaderStmt* pStmt) { SBalanceVgroupLeaderReq req = {0}; req.vgId = pStmt->vgId; + if(pStmt->dbName != NULL) strcpy(req.db, pStmt->dbName); int32_t code = buildCmdMsg(pCxt, TDMT_MND_BALANCE_VGROUP_LEADER, (FSerializeFunc)tSerializeSBalanceVgroupLeaderReq, &req); tFreeSBalanceVgroupLeaderReq(&req); @@ -11263,6 +11264,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) { case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: code = translateBalanceVgroupLeader(pCxt, (SBalanceVgroupLeaderStmt*)pNode); break; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + code = translateBalanceVgroupLeader(pCxt, (SBalanceVgroupLeaderStmt*)pNode); + break; case QUERY_NODE_MERGE_VGROUP_STMT: code = translateMergeVgroup(pCxt, (SMergeVgroupStmt*)pNode); break; @@ -11867,6 +11871,37 @@ static int32_t rewriteShowVgroups(STranslateContext* pCxt, SQuery* pQuery) { return code; } +static int32_t checkShowTags(STranslateContext* pCxt, const SShowStmt* pShow) { + int32_t code = 0; + SName name; + STableMeta* pTableMeta = NULL; + code = getTargetMeta(pCxt, + toName(pCxt->pParseCxt->acctId, ((SValueNode*)pShow->pDbName)->literal, + ((SValueNode*)pShow->pTbName)->literal, &name), + &pTableMeta, true); + if (TSDB_CODE_SUCCESS != code) { + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code)); + goto _exit; + } + if (TSDB_SUPER_TABLE != pTableMeta->tableType && TSDB_CHILD_TABLE != pTableMeta->tableType) { + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TAGS_PC, + "The _TAGS pseudo column can only be used for child table and super table queries"); + goto _exit; + } + +_exit: + taosMemoryFreeClear(pTableMeta); + return code; +} + +static int32_t rewriteShowTags(STranslateContext* pCxt, SQuery* pQuery) { + int32_t code = checkShowTags(pCxt, (SShowStmt*)pQuery->pRoot); + if (TSDB_CODE_SUCCESS == code) { + code = rewriteShow(pCxt, pQuery); + } + return code; +} + static SNode* createTagsFunction() { SFunctionNode* pFunc = (SFunctionNode*)nodesMakeNode(QUERY_NODE_FUNCTION); if (NULL == pFunc) { @@ -13170,7 +13205,6 @@ static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) { case QUERY_NODE_SHOW_APPS_STMT: case QUERY_NODE_SHOW_CONSUMERS_STMT: case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT: - case QUERY_NODE_SHOW_TAGS_STMT: case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT: case QUERY_NODE_SHOW_VIEWS_STMT: case QUERY_NODE_SHOW_GRANTS_FULL_STMT: @@ -13181,6 +13215,9 @@ static int32_t rewriteQuery(STranslateContext* pCxt, SQuery* pQuery) { case QUERY_NODE_SHOW_TSMAS_STMT: code = rewriteShow(pCxt, pQuery); break; + case QUERY_NODE_SHOW_TAGS_STMT: + code = rewriteShowTags(pCxt, pQuery); + break; case QUERY_NODE_SHOW_VGROUPS_STMT: code = rewriteShowVgroups(pCxt, pQuery); break; diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 2bbc9e95de..52dd135cd3 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -1,3 +1,5 @@ +/* This file is automatically generated by Lemon from input grammar +** source file "sql.y". */ /* ** 2000-05-29 ** @@ -22,10 +24,7 @@ ** The following is the concatenation of all %include directives from the ** input grammar file: */ -#include -#include /************ Begin %include sections from the grammar ************************/ - #include #include #include @@ -42,11 +41,386 @@ #define YYSTACKDEPTH 0 /**************** End of %include directives **********************************/ -/* These constants specify the various numeric values for terminal symbols -** in a format understandable to "makeheaders". This section is blank unless -** "lemon" is run with the "-m" command-line option. -***************** Begin makeheaders token definitions *************************/ -/**************** End makeheaders token definitions ***************************/ +/* These constants specify the various numeric values for terminal symbols. +***************** Begin token definitions *************************************/ +#ifndef TK_OR +#define TK_OR 1 +#define TK_AND 2 +#define TK_UNION 3 +#define TK_ALL 4 +#define TK_MINUS 5 +#define TK_EXCEPT 6 +#define TK_INTERSECT 7 +#define TK_NK_BITAND 8 +#define TK_NK_BITOR 9 +#define TK_NK_LSHIFT 10 +#define TK_NK_RSHIFT 11 +#define TK_NK_PLUS 12 +#define TK_NK_MINUS 13 +#define TK_NK_STAR 14 +#define TK_NK_SLASH 15 +#define TK_NK_REM 16 +#define TK_NK_CONCAT 17 +#define TK_CREATE 18 +#define TK_ACCOUNT 19 +#define TK_NK_ID 20 +#define TK_PASS 21 +#define TK_NK_STRING 22 +#define TK_ALTER 23 +#define TK_PPS 24 +#define TK_TSERIES 25 +#define TK_STORAGE 26 +#define TK_STREAMS 27 +#define TK_QTIME 28 +#define TK_DBS 29 +#define TK_USERS 30 +#define TK_CONNS 31 +#define TK_STATE 32 +#define TK_NK_COMMA 33 +#define TK_HOST 34 +#define TK_USER 35 +#define TK_ENABLE 36 +#define TK_NK_INTEGER 37 +#define TK_SYSINFO 38 +#define TK_ADD 39 +#define TK_DROP 40 +#define TK_GRANT 41 +#define TK_ON 42 +#define TK_TO 43 +#define TK_REVOKE 44 +#define TK_FROM 45 +#define TK_SUBSCRIBE 46 +#define TK_READ 47 +#define TK_WRITE 48 +#define TK_NK_DOT 49 +#define TK_WITH 50 +#define TK_ENCRYPT_KEY 51 +#define TK_DNODE 52 +#define TK_PORT 53 +#define TK_DNODES 54 +#define TK_RESTORE 55 +#define TK_NK_IPTOKEN 56 +#define TK_FORCE 57 +#define TK_UNSAFE 58 +#define TK_CLUSTER 59 +#define TK_LOCAL 60 +#define TK_QNODE 61 +#define TK_BNODE 62 +#define TK_SNODE 63 +#define TK_MNODE 64 +#define TK_VNODE 65 +#define TK_DATABASE 66 +#define TK_USE 67 +#define TK_FLUSH 68 +#define TK_TRIM 69 +#define TK_S3MIGRATE 70 +#define TK_COMPACT 71 +#define TK_IF 72 +#define TK_NOT 73 +#define TK_EXISTS 74 +#define TK_BUFFER 75 +#define TK_CACHEMODEL 76 +#define TK_CACHESIZE 77 +#define TK_COMP 78 +#define TK_DURATION 79 +#define TK_NK_VARIABLE 80 +#define TK_MAXROWS 81 +#define TK_MINROWS 82 +#define TK_KEEP 83 +#define TK_PAGES 84 +#define TK_PAGESIZE 85 +#define TK_TSDB_PAGESIZE 86 +#define TK_PRECISION 87 +#define TK_REPLICA 88 +#define TK_VGROUPS 89 +#define TK_SINGLE_STABLE 90 +#define TK_RETENTIONS 91 +#define TK_SCHEMALESS 92 +#define TK_WAL_LEVEL 93 +#define TK_WAL_FSYNC_PERIOD 94 +#define TK_WAL_RETENTION_PERIOD 95 +#define TK_WAL_RETENTION_SIZE 96 +#define TK_WAL_ROLL_PERIOD 97 +#define TK_WAL_SEGMENT_SIZE 98 +#define TK_STT_TRIGGER 99 +#define TK_TABLE_PREFIX 100 +#define TK_TABLE_SUFFIX 101 +#define TK_S3_CHUNKSIZE 102 +#define TK_S3_KEEPLOCAL 103 +#define TK_S3_COMPACT 104 +#define TK_KEEP_TIME_OFFSET 105 +#define TK_ENCRYPT_ALGORITHM 106 +#define TK_NK_COLON 107 +#define TK_BWLIMIT 108 +#define TK_START 109 +#define TK_TIMESTAMP 110 +#define TK_END 111 +#define TK_TABLE 112 +#define TK_NK_LP 113 +#define TK_NK_RP 114 +#define TK_STABLE 115 +#define TK_COLUMN 116 +#define TK_MODIFY 117 +#define TK_RENAME 118 +#define TK_TAG 119 +#define TK_SET 120 +#define TK_NK_EQ 121 +#define TK_USING 122 +#define TK_TAGS 123 +#define TK_BOOL 124 +#define TK_TINYINT 125 +#define TK_SMALLINT 126 +#define TK_INT 127 +#define TK_INTEGER 128 +#define TK_BIGINT 129 +#define TK_FLOAT 130 +#define TK_DOUBLE 131 +#define TK_BINARY 132 +#define TK_NCHAR 133 +#define TK_UNSIGNED 134 +#define TK_JSON 135 +#define TK_VARCHAR 136 +#define TK_MEDIUMBLOB 137 +#define TK_BLOB 138 +#define TK_VARBINARY 139 +#define TK_GEOMETRY 140 +#define TK_DECIMAL 141 +#define TK_COMMENT 142 +#define TK_MAX_DELAY 143 +#define TK_WATERMARK 144 +#define TK_ROLLUP 145 +#define TK_TTL 146 +#define TK_SMA 147 +#define TK_DELETE_MARK 148 +#define TK_FIRST 149 +#define TK_LAST 150 +#define TK_SHOW 151 +#define TK_PRIVILEGES 152 +#define TK_DATABASES 153 +#define TK_TABLES 154 +#define TK_STABLES 155 +#define TK_MNODES 156 +#define TK_QNODES 157 +#define TK_ARBGROUPS 158 +#define TK_FUNCTIONS 159 +#define TK_INDEXES 160 +#define TK_ACCOUNTS 161 +#define TK_APPS 162 +#define TK_CONNECTIONS 163 +#define TK_LICENCES 164 +#define TK_GRANTS 165 +#define TK_FULL 166 +#define TK_LOGS 167 +#define TK_MACHINES 168 +#define TK_ENCRYPTIONS 169 +#define TK_QUERIES 170 +#define TK_SCORES 171 +#define TK_TOPICS 172 +#define TK_VARIABLES 173 +#define TK_BNODES 174 +#define TK_SNODES 175 +#define TK_TRANSACTIONS 176 +#define TK_DISTRIBUTED 177 +#define TK_CONSUMERS 178 +#define TK_SUBSCRIPTIONS 179 +#define TK_VNODES 180 +#define TK_ALIVE 181 +#define TK_VIEWS 182 +#define TK_VIEW 183 +#define TK_COMPACTS 184 +#define TK_NORMAL 185 +#define TK_CHILD 186 +#define TK_LIKE 187 +#define TK_TBNAME 188 +#define TK_QTAGS 189 +#define TK_AS 190 +#define TK_SYSTEM 191 +#define TK_TSMA 192 +#define TK_INTERVAL 193 +#define TK_RECURSIVE 194 +#define TK_TSMAS 195 +#define TK_FUNCTION 196 +#define TK_INDEX 197 +#define TK_COUNT 198 +#define TK_LAST_ROW 199 +#define TK_META 200 +#define TK_ONLY 201 +#define TK_TOPIC 202 +#define TK_CONSUMER 203 +#define TK_GROUP 204 +#define TK_DESC 205 +#define TK_DESCRIBE 206 +#define TK_RESET 207 +#define TK_QUERY 208 +#define TK_CACHE 209 +#define TK_EXPLAIN 210 +#define TK_ANALYZE 211 +#define TK_VERBOSE 212 +#define TK_NK_BOOL 213 +#define TK_RATIO 214 +#define TK_NK_FLOAT 215 +#define TK_OUTPUTTYPE 216 +#define TK_AGGREGATE 217 +#define TK_BUFSIZE 218 +#define TK_LANGUAGE 219 +#define TK_REPLACE 220 +#define TK_STREAM 221 +#define TK_INTO 222 +#define TK_PAUSE 223 +#define TK_RESUME 224 +#define TK_PRIMARY 225 +#define TK_KEY 226 +#define TK_TRIGGER 227 +#define TK_AT_ONCE 228 +#define TK_WINDOW_CLOSE 229 +#define TK_IGNORE 230 +#define TK_EXPIRED 231 +#define TK_FILL_HISTORY 232 +#define TK_UPDATE 233 +#define TK_SUBTABLE 234 +#define TK_UNTREATED 235 +#define TK_KILL 236 +#define TK_CONNECTION 237 +#define TK_TRANSACTION 238 +#define TK_BALANCE 239 +#define TK_VGROUP 240 +#define TK_LEADER 241 +#define TK_MERGE 242 +#define TK_REDISTRIBUTE 243 +#define TK_SPLIT 244 +#define TK_DELETE 245 +#define TK_INSERT 246 +#define TK_NK_BIN 247 +#define TK_NK_HEX 248 +#define TK_NULL 249 +#define TK_NK_QUESTION 250 +#define TK_NK_ALIAS 251 +#define TK_NK_ARROW 252 +#define TK_ROWTS 253 +#define TK_QSTART 254 +#define TK_QEND 255 +#define TK_QDURATION 256 +#define TK_WSTART 257 +#define TK_WEND 258 +#define TK_WDURATION 259 +#define TK_IROWTS 260 +#define TK_ISFILLED 261 +#define TK_CAST 262 +#define TK_NOW 263 +#define TK_TODAY 264 +#define TK_TIMEZONE 265 +#define TK_CLIENT_VERSION 266 +#define TK_SERVER_VERSION 267 +#define TK_SERVER_STATUS 268 +#define TK_CURRENT_USER 269 +#define TK_CASE 270 +#define TK_WHEN 271 +#define TK_THEN 272 +#define TK_ELSE 273 +#define TK_BETWEEN 274 +#define TK_IS 275 +#define TK_NK_LT 276 +#define TK_NK_GT 277 +#define TK_NK_LE 278 +#define TK_NK_GE 279 +#define TK_NK_NE 280 +#define TK_MATCH 281 +#define TK_NMATCH 282 +#define TK_CONTAINS 283 +#define TK_IN 284 +#define TK_JOIN 285 +#define TK_INNER 286 +#define TK_LEFT 287 +#define TK_RIGHT 288 +#define TK_OUTER 289 +#define TK_SEMI 290 +#define TK_ANTI 291 +#define TK_ASOF 292 +#define TK_WINDOW 293 +#define TK_WINDOW_OFFSET 294 +#define TK_JLIMIT 295 +#define TK_SELECT 296 +#define TK_NK_HINT 297 +#define TK_DISTINCT 298 +#define TK_WHERE 299 +#define TK_PARTITION 300 +#define TK_BY 301 +#define TK_SESSION 302 +#define TK_STATE_WINDOW 303 +#define TK_EVENT_WINDOW 304 +#define TK_COUNT_WINDOW 305 +#define TK_SLIDING 306 +#define TK_FILL 307 +#define TK_VALUE 308 +#define TK_VALUE_F 309 +#define TK_NONE 310 +#define TK_PREV 311 +#define TK_NULL_F 312 +#define TK_LINEAR 313 +#define TK_NEXT 314 +#define TK_HAVING 315 +#define TK_RANGE 316 +#define TK_EVERY 317 +#define TK_ORDER 318 +#define TK_SLIMIT 319 +#define TK_SOFFSET 320 +#define TK_LIMIT 321 +#define TK_OFFSET 322 +#define TK_ASC 323 +#define TK_NULLS 324 +#define TK_ABORT 325 +#define TK_AFTER 326 +#define TK_ATTACH 327 +#define TK_BEFORE 328 +#define TK_BEGIN 329 +#define TK_BITAND 330 +#define TK_BITNOT 331 +#define TK_BITOR 332 +#define TK_BLOCKS 333 +#define TK_CHANGE 334 +#define TK_COMMA 335 +#define TK_CONCAT 336 +#define TK_CONFLICT 337 +#define TK_COPY 338 +#define TK_DEFERRED 339 +#define TK_DELIMITERS 340 +#define TK_DETACH 341 +#define TK_DIVIDE 342 +#define TK_DOT 343 +#define TK_EACH 344 +#define TK_FAIL 345 +#define TK_FILE 346 +#define TK_FOR 347 +#define TK_GLOB 348 +#define TK_ID 349 +#define TK_IMMEDIATE 350 +#define TK_IMPORT 351 +#define TK_INITIALLY 352 +#define TK_INSTEAD 353 +#define TK_ISNULL 354 +#define TK_MODULES 355 +#define TK_NK_BITNOT 356 +#define TK_NK_SEMI 357 +#define TK_NOTNULL 358 +#define TK_OF 359 +#define TK_PLUS 360 +#define TK_PRIVILEGE 361 +#define TK_RAISE 362 +#define TK_RESTRICT 363 +#define TK_ROW 364 +#define TK_STAR 365 +#define TK_STATEMENT 366 +#define TK_STRICT 367 +#define TK_STRING 368 +#define TK_TIMES 369 +#define TK_VALUES 370 +#define TK_VARIABLE 371 +#define TK_WAL 372 +#define TK_ENCODE 373 +#define TK_COMPRESS 374 +#define TK_LEVEL 375 +#endif +/**************** End token definitions ***************************************/ /* The next sections is a series of control #defines. ** various aspects of the generated parser. @@ -143,18 +517,18 @@ typedef union { #define ParseCTX_FETCH #define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 961 -#define YYNRULE 747 -#define YYNRULE_WITH_ACTION 747 +#define YYNSTATE 963 +#define YYNRULE 748 +#define YYNRULE_WITH_ACTION 748 #define YYNTOKEN 376 -#define YY_MAX_SHIFT 960 -#define YY_MIN_SHIFTREDUCE 1429 -#define YY_MAX_SHIFTREDUCE 2175 -#define YY_ERROR_ACTION 2176 -#define YY_ACCEPT_ACTION 2177 -#define YY_NO_ACTION 2178 -#define YY_MIN_REDUCE 2179 -#define YY_MAX_REDUCE 2925 +#define YY_MAX_SHIFT 962 +#define YY_MIN_SHIFTREDUCE 1431 +#define YY_MAX_SHIFTREDUCE 2178 +#define YY_ERROR_ACTION 2179 +#define YY_ACCEPT_ACTION 2180 +#define YY_NO_ACTION 2181 +#define YY_MIN_REDUCE 2182 +#define YY_MAX_REDUCE 2929 /************* End control #defines *******************************************/ #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) @@ -223,329 +597,329 @@ typedef union { *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (3228) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 37, 337, 2535, 2701, 637, 540, 2370, 638, 2222, 190, - /* 10 */ 2676, 314, 47, 45, 2092, 2808, 801, 463, 493, 492, - /* 20 */ 468, 2180, 1913, 2532, 843, 40, 39, 2701, 66, 46, - /* 30 */ 44, 43, 42, 41, 1938, 2001, 1938, 1911, 2680, 2477, - /* 40 */ 836, 2805, 136, 1920, 2719, 135, 134, 133, 132, 131, - /* 50 */ 130, 129, 128, 127, 602, 600, 829, 408, 852, 371, - /* 60 */ 2666, 229, 838, 2365, 416, 33, 1996, 828, 2719, 798, - /* 70 */ 155, 40, 39, 19, 300, 46, 44, 43, 42, 41, - /* 80 */ 1919, 2266, 798, 155, 2666, 209, 838, 722, 136, 2682, - /* 90 */ 2685, 135, 134, 133, 132, 131, 130, 129, 128, 127, - /* 100 */ 857, 2428, 720, 251, 718, 285, 284, 640, 2700, 2230, - /* 110 */ 957, 2739, 2808, 15, 1939, 119, 2702, 842, 2704, 2705, - /* 120 */ 837, 645, 857, 103, 638, 2222, 197, 199, 852, 2793, - /* 130 */ 642, 2136, 2700, 464, 2789, 2739, 639, 62, 2804, 404, - /* 140 */ 2702, 842, 2704, 2705, 837, 835, 857, 821, 2758, 2003, - /* 150 */ 2004, 50, 436, 217, 2508, 751, 930, 929, 928, 927, - /* 160 */ 496, 2840, 926, 925, 160, 920, 919, 918, 917, 916, - /* 170 */ 915, 914, 159, 908, 907, 906, 495, 494, 903, 902, - /* 180 */ 901, 196, 195, 900, 491, 899, 898, 897, 1974, 1984, - /* 190 */ 800, 185, 2801, 2802, 776, 153, 2806, 289, 2002, 2005, - /* 200 */ 798, 155, 1760, 1761, 192, 2801, 797, 577, 147, 796, - /* 210 */ 786, 2659, 576, 1914, 484, 1912, 2891, 9, 2891, 2096, - /* 220 */ 575, 1923, 40, 39, 735, 1938, 46, 44, 43, 42, - /* 230 */ 41, 2357, 2701, 2202, 785, 216, 785, 216, 122, 2892, - /* 240 */ 787, 2892, 787, 1687, 1688, 839, 2385, 486, 2383, 1917, - /* 250 */ 1918, 1971, 775, 1973, 1976, 1977, 1978, 1979, 1980, 1981, - /* 260 */ 1982, 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, - /* 270 */ 2, 47, 45, 2719, 913, 473, 413, 2341, 1936, 468, - /* 280 */ 2719, 1913, 1841, 1842, 2896, 584, 857, 428, 605, 2666, - /* 290 */ 2666, 838, 2891, 604, 2001, 60, 1911, 40, 39, 452, - /* 300 */ 2582, 46, 44, 43, 42, 41, 749, 2011, 732, 1942, - /* 310 */ 563, 2895, 606, 1938, 197, 2892, 2894, 414, 565, 1496, - /* 320 */ 321, 1495, 125, 2801, 2802, 1996, 153, 2806, 180, 543, - /* 330 */ 853, 2381, 19, 660, 321, 2030, 151, 2700, 2384, 1919, - /* 340 */ 2739, 2067, 2509, 771, 119, 2702, 842, 2704, 2705, 837, - /* 350 */ 220, 857, 1469, 774, 157, 1497, 166, 2764, 2793, 2179, - /* 360 */ 40, 39, 464, 2789, 46, 44, 43, 42, 41, 957, - /* 370 */ 437, 1476, 15, 894, 172, 171, 891, 890, 889, 169, - /* 380 */ 1942, 551, 1938, 145, 144, 143, 142, 141, 140, 139, - /* 390 */ 138, 137, 653, 1975, 1471, 1474, 1475, 533, 62, 40, - /* 400 */ 39, 2031, 532, 46, 44, 43, 42, 41, 2003, 2004, - /* 410 */ 657, 2515, 2494, 656, 592, 591, 590, 589, 588, 583, - /* 420 */ 582, 581, 580, 420, 29, 1971, 2067, 570, 569, 568, - /* 430 */ 567, 566, 560, 559, 558, 253, 553, 552, 435, 640, - /* 440 */ 852, 2230, 544, 1748, 1749, 328, 329, 1974, 1984, 1767, - /* 450 */ 327, 752, 777, 772, 765, 761, 1972, 2002, 2005, 2891, - /* 460 */ 2813, 2064, 2065, 2066, 2813, 2813, 2813, 2813, 2813, 2522, - /* 470 */ 2372, 658, 1914, 517, 1912, 62, 896, 2897, 216, 212, - /* 480 */ 736, 1975, 2892, 787, 853, 2381, 853, 2381, 36, 466, - /* 490 */ 2025, 2026, 2027, 2028, 2029, 2033, 2034, 2035, 2036, 2069, - /* 500 */ 2070, 2071, 2072, 2073, 146, 2137, 55, 375, 1917, 1918, - /* 510 */ 1971, 683, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, - /* 520 */ 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, - /* 530 */ 12, 47, 45, 50, 473, 1922, 2701, 2535, 181, 468, - /* 540 */ 1943, 1913, 116, 388, 1972, 857, 2064, 2065, 2066, 801, - /* 550 */ 207, 113, 470, 596, 2001, 1587, 1911, 2167, 2532, 843, - /* 560 */ 386, 76, 647, 2574, 75, 2701, 40, 39, 451, 2582, - /* 570 */ 46, 44, 43, 42, 41, 415, 733, 2719, 839, 2067, - /* 580 */ 2232, 321, 1939, 1919, 2676, 1996, 2896, 249, 619, 617, - /* 590 */ 614, 612, 19, 2666, 2891, 838, 40, 39, 1589, 1919, - /* 600 */ 46, 44, 43, 42, 41, 2487, 2719, 704, 703, 702, - /* 610 */ 521, 1943, 2680, 2895, 694, 152, 698, 2892, 2893, 240, - /* 620 */ 697, 2535, 2666, 654, 838, 696, 701, 445, 444, 957, - /* 630 */ 910, 695, 15, 62, 98, 443, 691, 690, 689, 523, - /* 640 */ 519, 2700, 2533, 843, 2739, 595, 239, 547, 119, 2702, - /* 650 */ 842, 2704, 2705, 837, 793, 857, 853, 2381, 321, 593, - /* 660 */ 199, 2377, 2793, 2682, 2684, 465, 464, 2789, 2003, 2004, - /* 670 */ 2700, 63, 2108, 2739, 857, 2166, 146, 119, 2702, 842, - /* 680 */ 2704, 2705, 837, 688, 857, 12, 2125, 655, 2528, 2911, - /* 690 */ 183, 2793, 2191, 51, 2841, 464, 2789, 912, 2813, 2064, - /* 700 */ 2065, 2066, 2813, 2813, 2813, 2813, 2813, 1974, 1984, 35, - /* 710 */ 1941, 1787, 1788, 1925, 2177, 40, 39, 2002, 2005, 46, - /* 720 */ 44, 43, 42, 41, 2355, 86, 85, 536, 2435, 2436, - /* 730 */ 228, 2089, 1914, 2441, 1912, 46, 44, 43, 42, 41, - /* 740 */ 98, 434, 2619, 528, 526, 768, 767, 2123, 2124, 2126, - /* 750 */ 2127, 2128, 2439, 12, 288, 10, 412, 438, 287, 515, - /* 760 */ 1786, 1789, 512, 508, 504, 501, 529, 2376, 1917, 1918, - /* 770 */ 1971, 1582, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, - /* 780 */ 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, - /* 790 */ 47, 45, 2006, 1496, 2701, 1495, 752, 479, 468, 235, - /* 800 */ 1913, 499, 180, 863, 2891, 887, 498, 839, 2896, 2848, - /* 810 */ 2660, 486, 2383, 2001, 1583, 1911, 321, 488, 2701, 78, - /* 820 */ 2434, 2436, 2897, 216, 1599, 1941, 2808, 2892, 787, 1497, - /* 830 */ 786, 839, 101, 2861, 634, 2719, 1938, 423, 2891, 1598, - /* 840 */ 450, 2441, 724, 632, 1996, 92, 628, 624, 91, 461, - /* 850 */ 210, 2666, 2803, 838, 827, 752, 785, 216, 1919, 2719, - /* 860 */ 2439, 2892, 787, 2891, 853, 2381, 894, 172, 171, 891, - /* 870 */ 890, 889, 169, 89, 473, 2666, 321, 838, 442, 441, - /* 880 */ 319, 2897, 216, 482, 537, 857, 2892, 787, 957, 2460, - /* 890 */ 2368, 48, 894, 172, 171, 891, 890, 889, 169, 2700, - /* 900 */ 1499, 1500, 2739, 3, 2701, 736, 119, 2702, 842, 2704, - /* 910 */ 2705, 837, 607, 857, 1913, 53, 90, 839, 2911, 2160, - /* 920 */ 2793, 853, 2381, 2700, 464, 2789, 2739, 2003, 2004, 1911, - /* 930 */ 119, 2702, 842, 2704, 2705, 837, 822, 857, 2765, 549, - /* 940 */ 2504, 538, 2911, 794, 2793, 2719, 555, 2504, 464, 2789, - /* 950 */ 471, 862, 861, 860, 853, 2381, 440, 439, 179, 685, - /* 960 */ 2441, 2666, 824, 838, 2765, 2701, 1974, 1984, 472, 2386, - /* 970 */ 853, 2381, 1919, 1476, 659, 1882, 2002, 2005, 839, 2439, - /* 980 */ 763, 687, 2363, 853, 2381, 686, 2441, 738, 2574, 296, - /* 990 */ 557, 1914, 231, 1912, 487, 319, 2117, 1474, 1475, 233, - /* 1000 */ 586, 2504, 957, 571, 1975, 2439, 2719, 478, 477, 2700, - /* 1010 */ 62, 2118, 2739, 1942, 679, 678, 187, 2702, 842, 2704, - /* 1020 */ 2705, 837, 2666, 857, 838, 2088, 2201, 1917, 1918, 1971, - /* 1030 */ 2022, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, - /* 1040 */ 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, 47, - /* 1050 */ 45, 2701, 489, 238, 2116, 579, 578, 468, 381, 1913, - /* 1060 */ 179, 1881, 681, 680, 839, 102, 2884, 1972, 853, 2381, - /* 1070 */ 2700, 2386, 2001, 2739, 1911, 788, 2912, 119, 2702, 842, - /* 1080 */ 2704, 2705, 837, 2666, 857, 700, 699, 2701, 572, 2911, - /* 1090 */ 182, 2793, 2719, 481, 480, 464, 2789, 1603, 2315, 1815, - /* 1100 */ 839, 2200, 2825, 1996, 1648, 1914, 2385, 1912, 2666, 531, - /* 1110 */ 838, 530, 1602, 111, 14, 13, 2199, 1919, 1639, 886, - /* 1120 */ 885, 884, 1643, 883, 1645, 1646, 882, 879, 2719, 1654, - /* 1130 */ 876, 1656, 1657, 873, 870, 867, 2192, 853, 2381, 2374, - /* 1140 */ 2316, 1917, 1918, 529, 2666, 117, 838, 957, 2701, 2895, - /* 1150 */ 48, 2032, 853, 2381, 853, 2381, 2700, 573, 2666, 2739, - /* 1160 */ 2356, 839, 158, 119, 2702, 842, 2704, 2705, 837, 375, - /* 1170 */ 857, 2373, 2378, 2666, 291, 2911, 2198, 2793, 853, 2381, - /* 1180 */ 190, 464, 2789, 211, 148, 609, 2003, 2004, 1478, 2719, - /* 1190 */ 853, 2381, 2700, 321, 1937, 2739, 88, 2197, 299, 119, - /* 1200 */ 2702, 842, 2704, 2705, 837, 2666, 857, 838, 853, 2381, - /* 1210 */ 804, 2911, 2196, 2793, 493, 492, 2195, 464, 2789, 2194, - /* 1220 */ 853, 2381, 853, 2381, 1927, 1974, 1984, 2044, 332, 853, - /* 1230 */ 2381, 2583, 896, 2666, 2854, 2002, 2005, 2001, 34, 1920, - /* 1240 */ 818, 1942, 339, 1938, 1943, 43, 42, 41, 2037, 850, - /* 1250 */ 1914, 2588, 1912, 2700, 2666, 2607, 2739, 853, 2381, 769, - /* 1260 */ 119, 2702, 842, 2704, 2705, 837, 2193, 857, 1996, 2666, - /* 1270 */ 924, 922, 2768, 2666, 2793, 2190, 2666, 851, 464, 2789, - /* 1280 */ 156, 687, 1919, 2764, 2189, 686, 1917, 1918, 1971, 2269, - /* 1290 */ 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 834, - /* 1300 */ 855, 854, 1995, 1997, 1998, 1999, 2000, 2, 47, 45, - /* 1310 */ 2188, 2701, 826, 290, 853, 2381, 468, 2187, 1913, 853, - /* 1320 */ 2381, 2186, 2185, 2666, 839, 307, 179, 2620, 1648, 780, - /* 1330 */ 2184, 2001, 2666, 1911, 367, 888, 2358, 2387, 2432, 490, - /* 1340 */ 2183, 2666, 1639, 886, 885, 884, 1643, 883, 1645, 1646, - /* 1350 */ 833, 832, 2719, 1654, 831, 1656, 1657, 830, 870, 867, - /* 1360 */ 892, 2182, 1996, 2432, 704, 703, 702, 2666, 2666, 161, - /* 1370 */ 838, 694, 152, 698, 2666, 170, 1919, 697, 2666, 2666, - /* 1380 */ 2441, 752, 696, 701, 445, 444, 2441, 2666, 695, 2891, - /* 1390 */ 790, 2441, 443, 691, 690, 689, 2078, 2666, 2610, 805, - /* 1400 */ 893, 798, 155, 2432, 1560, 813, 957, 2897, 216, 15, - /* 1410 */ 2440, 382, 2892, 787, 2418, 1928, 2700, 1923, 2666, 2739, - /* 1420 */ 2207, 952, 2253, 119, 2702, 842, 2704, 2705, 837, 276, - /* 1430 */ 857, 278, 274, 280, 277, 2766, 279, 2793, 418, 417, - /* 1440 */ 282, 464, 2789, 281, 705, 2003, 2004, 1561, 474, 692, - /* 1450 */ 506, 1931, 1933, 726, 693, 725, 54, 2251, 2242, 2240, - /* 1460 */ 271, 2001, 2701, 483, 789, 855, 854, 1995, 1997, 1998, - /* 1470 */ 1999, 2000, 1943, 1580, 1972, 839, 1921, 191, 1578, 707, - /* 1480 */ 709, 712, 2169, 2170, 1974, 1984, 677, 673, 669, 665, - /* 1490 */ 1533, 270, 1996, 315, 2002, 2005, 222, 799, 346, 345, - /* 1500 */ 40, 39, 162, 2719, 46, 44, 43, 42, 41, 1914, - /* 1510 */ 150, 1912, 348, 347, 162, 759, 170, 326, 49, 2666, - /* 1520 */ 49, 838, 2720, 186, 2801, 2802, 2308, 153, 2806, 200, - /* 1530 */ 77, 14, 13, 1534, 64, 49, 2307, 99, 2687, 2513, - /* 1540 */ 268, 2844, 49, 77, 2223, 1917, 1918, 1971, 766, 1973, - /* 1550 */ 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 834, 855, - /* 1560 */ 854, 1995, 1997, 1998, 1999, 2000, 2, 2700, 167, 734, - /* 1570 */ 2739, 170, 350, 349, 119, 2702, 842, 2704, 2705, 837, - /* 1580 */ 74, 857, 729, 1831, 352, 351, 823, 960, 2793, 354, - /* 1590 */ 353, 865, 464, 2789, 2701, 1839, 2112, 803, 330, 2122, - /* 1600 */ 168, 2121, 2689, 373, 170, 356, 355, 839, 256, 904, - /* 1610 */ 305, 810, 358, 357, 457, 2038, 1985, 267, 773, 950, - /* 1620 */ 206, 258, 265, 1784, 1774, 360, 359, 263, 651, 946, - /* 1630 */ 942, 938, 934, 1552, 370, 2719, 752, 362, 361, 1904, - /* 1640 */ 149, 1880, 364, 363, 2891, 167, 255, 366, 365, 342, - /* 1650 */ 453, 2666, 1630, 838, 1924, 905, 807, 497, 2514, 2229, - /* 1660 */ 2429, 380, 2897, 216, 745, 2845, 2855, 2892, 787, 2234, - /* 1670 */ 317, 2701, 1661, 476, 475, 1905, 781, 791, 312, 1550, - /* 1680 */ 118, 1669, 123, 343, 839, 1676, 782, 2342, 711, 855, - /* 1690 */ 854, 1995, 1997, 1998, 1999, 2000, 320, 500, 5, 2700, - /* 1700 */ 505, 513, 2739, 723, 2701, 432, 120, 2702, 842, 2704, - /* 1710 */ 2705, 837, 2719, 857, 514, 814, 1946, 839, 525, 286, - /* 1720 */ 2793, 1674, 948, 524, 2792, 2789, 173, 223, 2666, 224, - /* 1730 */ 838, 527, 226, 1808, 2701, 374, 714, 1936, 541, 1937, - /* 1740 */ 548, 554, 237, 708, 706, 2719, 550, 839, 556, 598, - /* 1750 */ 283, 2701, 561, 574, 587, 610, 585, 611, 608, 2506, - /* 1760 */ 341, 2666, 820, 838, 839, 324, 243, 613, 594, 597, - /* 1770 */ 323, 615, 599, 242, 246, 2719, 2700, 618, 620, 2739, - /* 1780 */ 616, 635, 1944, 120, 2702, 842, 2704, 2705, 837, 293, - /* 1790 */ 857, 2666, 2719, 838, 4, 636, 72, 2793, 643, 71, - /* 1800 */ 644, 825, 2789, 646, 254, 94, 1939, 648, 2666, 840, - /* 1810 */ 838, 257, 2739, 1945, 649, 1947, 120, 2702, 842, 2704, - /* 1820 */ 2705, 837, 652, 857, 650, 1948, 737, 260, 2701, 802, - /* 1830 */ 2793, 262, 95, 2529, 427, 2789, 1949, 96, 2523, 2700, - /* 1840 */ 97, 839, 2739, 661, 269, 2701, 184, 2702, 842, 2704, - /* 1850 */ 2705, 837, 682, 857, 684, 2371, 2700, 715, 839, 2739, - /* 1860 */ 716, 409, 273, 120, 2702, 842, 2704, 2705, 837, 2719, - /* 1870 */ 857, 2367, 728, 730, 275, 175, 121, 2793, 100, 124, - /* 1880 */ 752, 2369, 2790, 752, 2364, 2666, 2719, 838, 2891, 292, - /* 1890 */ 176, 2891, 177, 753, 2851, 163, 2597, 1940, 2594, 2593, - /* 1900 */ 740, 739, 2666, 376, 838, 741, 2897, 216, 747, 2897, - /* 1910 */ 216, 2892, 787, 297, 2892, 787, 295, 2575, 744, 8, - /* 1920 */ 2832, 770, 2860, 808, 302, 2701, 756, 455, 2859, 746, - /* 1930 */ 304, 779, 757, 2700, 189, 306, 2739, 755, 839, 309, - /* 1940 */ 184, 2702, 842, 2704, 2705, 837, 754, 857, 308, 310, - /* 1950 */ 2700, 784, 783, 2739, 2701, 458, 2914, 405, 2702, 842, - /* 1960 */ 2704, 2705, 837, 311, 857, 154, 2719, 839, 795, 2812, - /* 1970 */ 313, 2890, 792, 1941, 2086, 1, 316, 2084, 203, 322, - /* 1980 */ 164, 377, 2666, 378, 838, 2809, 806, 2543, 2852, 2542, - /* 1990 */ 2541, 462, 811, 812, 819, 2719, 165, 218, 61, 816, - /* 2000 */ 335, 846, 2774, 844, 340, 379, 849, 456, 848, 110, - /* 2010 */ 2382, 2666, 2658, 838, 2657, 2701, 2653, 112, 369, 2652, - /* 2020 */ 2644, 1453, 2643, 2635, 2634, 383, 2650, 2649, 839, 951, - /* 2030 */ 2700, 2641, 954, 2739, 956, 2640, 52, 405, 2702, 842, - /* 2040 */ 2704, 2705, 837, 387, 857, 2629, 2628, 174, 859, 732, - /* 2050 */ 407, 2701, 2647, 385, 419, 2646, 2719, 395, 2638, 2700, - /* 2060 */ 2637, 424, 2739, 2626, 836, 2625, 398, 2702, 842, 2704, - /* 2070 */ 2705, 837, 2666, 857, 838, 2623, 2622, 2433, 406, 396, - /* 2080 */ 2618, 2617, 2616, 83, 425, 2611, 502, 503, 1864, 1865, - /* 2090 */ 221, 2609, 2719, 507, 509, 510, 511, 1863, 2608, 433, - /* 2100 */ 2606, 516, 2605, 518, 2604, 520, 2603, 522, 2666, 1852, - /* 2110 */ 838, 225, 2578, 227, 1811, 84, 1810, 778, 2579, 2556, - /* 2120 */ 2700, 2555, 2554, 2739, 534, 535, 2553, 187, 2702, 842, - /* 2130 */ 2704, 2705, 837, 2552, 857, 2496, 539, 1747, 2493, 2492, - /* 2140 */ 2701, 2486, 542, 2483, 545, 546, 230, 2482, 87, 2481, - /* 2150 */ 2480, 2485, 2484, 839, 562, 234, 2700, 232, 2479, 2739, - /* 2160 */ 2478, 2476, 2475, 404, 2702, 842, 2704, 2705, 837, 2701, - /* 2170 */ 857, 2474, 2759, 2473, 564, 2471, 2470, 2469, 2468, 2467, - /* 2180 */ 2491, 2719, 839, 2466, 2465, 2464, 2489, 2913, 2472, 2463, - /* 2190 */ 2701, 236, 2453, 93, 2452, 2451, 2450, 2666, 2462, 838, - /* 2200 */ 2461, 2459, 2458, 839, 2457, 2456, 2455, 2454, 2449, 2521, - /* 2210 */ 2719, 2490, 2488, 2448, 2447, 1753, 2446, 241, 2445, 2701, - /* 2220 */ 601, 2444, 467, 603, 2443, 2442, 2666, 2273, 838, 244, - /* 2230 */ 2272, 2719, 839, 245, 1596, 2271, 247, 1600, 2270, 1604, - /* 2240 */ 421, 2268, 2265, 2264, 2257, 2700, 2244, 2666, 2739, 838, - /* 2250 */ 2218, 469, 405, 2702, 842, 2704, 2705, 837, 2217, 857, - /* 2260 */ 2719, 1526, 622, 621, 623, 248, 625, 1477, 629, 422, - /* 2270 */ 627, 633, 626, 198, 2700, 630, 2666, 2739, 838, 631, - /* 2280 */ 2577, 405, 2702, 842, 2704, 2705, 837, 2573, 857, 80, - /* 2290 */ 250, 2563, 252, 2551, 261, 727, 81, 2686, 2739, 259, - /* 2300 */ 208, 2550, 400, 2702, 842, 2704, 2705, 837, 264, 857, - /* 2310 */ 641, 2527, 266, 2701, 2520, 2359, 2267, 2263, 662, 663, - /* 2320 */ 664, 2261, 666, 667, 2700, 668, 839, 2739, 2259, 670, - /* 2330 */ 2701, 390, 2702, 842, 2704, 2705, 837, 672, 857, 2256, - /* 2340 */ 671, 674, 675, 839, 676, 2239, 2237, 2701, 2238, 2236, - /* 2350 */ 2214, 2361, 272, 73, 2719, 1681, 1680, 2360, 2254, 1586, - /* 2360 */ 839, 1585, 1584, 1581, 1579, 2252, 1577, 1576, 1575, 1574, - /* 2370 */ 2666, 2719, 838, 921, 923, 1573, 1568, 446, 447, 1570, - /* 2380 */ 1569, 1567, 2243, 2241, 448, 449, 2213, 2666, 2719, 838, - /* 2390 */ 713, 2212, 2211, 2210, 2209, 721, 717, 719, 126, 2576, - /* 2400 */ 1850, 710, 28, 1846, 2666, 1848, 838, 1845, 1836, 67, - /* 2410 */ 2701, 2572, 1817, 294, 2562, 2549, 2548, 1819, 2700, 178, - /* 2420 */ 742, 2739, 2896, 839, 17, 389, 2702, 842, 2704, 2705, - /* 2430 */ 837, 6, 857, 20, 2139, 2700, 30, 7, 2739, 748, - /* 2440 */ 758, 454, 391, 2702, 842, 2704, 2705, 837, 301, 857, - /* 2450 */ 56, 2719, 2700, 21, 57, 2739, 1821, 22, 743, 397, - /* 2460 */ 2702, 842, 2704, 2705, 837, 298, 857, 2666, 202, 838, - /* 2470 */ 750, 32, 1796, 23, 1795, 213, 2687, 2079, 214, 2081, - /* 2480 */ 731, 2113, 760, 762, 188, 764, 65, 24, 303, 2154, - /* 2490 */ 2701, 2120, 201, 31, 2153, 459, 2158, 2157, 2107, 2077, - /* 2500 */ 460, 82, 215, 839, 2159, 318, 59, 2701, 2547, 2526, - /* 2510 */ 2160, 193, 105, 2525, 104, 2700, 2061, 106, 2739, 2060, - /* 2520 */ 839, 325, 401, 2702, 842, 2704, 2705, 837, 2519, 857, - /* 2530 */ 204, 2719, 2115, 2701, 331, 107, 69, 13, 25, 815, - /* 2540 */ 2013, 334, 2012, 1929, 11, 809, 839, 2666, 2719, 838, - /* 2550 */ 58, 1988, 2023, 1987, 872, 194, 205, 18, 1986, 875, - /* 2560 */ 878, 881, 38, 16, 2666, 1956, 838, 1964, 26, 2518, - /* 2570 */ 2701, 841, 108, 344, 2719, 845, 858, 27, 70, 338, - /* 2580 */ 109, 2744, 2175, 839, 2743, 2174, 1990, 856, 2173, 68, - /* 2590 */ 2666, 113, 838, 1662, 864, 2700, 485, 866, 2739, 817, - /* 2600 */ 336, 1659, 392, 2702, 842, 2704, 2705, 837, 868, 857, - /* 2610 */ 333, 2719, 2700, 869, 871, 2739, 1658, 1655, 874, 402, - /* 2620 */ 2702, 842, 2704, 2705, 837, 847, 857, 2666, 1649, 838, - /* 2630 */ 877, 2701, 1647, 880, 368, 2172, 1675, 1671, 2700, 114, - /* 2640 */ 115, 2739, 79, 895, 839, 393, 2702, 842, 2704, 2705, - /* 2650 */ 837, 1653, 857, 1652, 2701, 1564, 1651, 1650, 1563, 1524, - /* 2660 */ 1562, 1559, 1556, 1555, 1554, 1553, 1551, 839, 1549, 1548, - /* 2670 */ 1594, 1547, 2719, 219, 909, 2700, 1545, 1593, 2739, 911, - /* 2680 */ 1544, 1543, 403, 2702, 842, 2704, 2705, 837, 2666, 857, - /* 2690 */ 838, 1542, 1541, 1540, 1539, 2719, 1590, 1588, 1536, 1535, - /* 2700 */ 1532, 1531, 1530, 1529, 2262, 931, 932, 933, 2260, 935, - /* 2710 */ 936, 2666, 937, 838, 939, 2701, 2258, 941, 2255, 940, - /* 2720 */ 943, 945, 2235, 944, 947, 2233, 1466, 949, 839, 1454, - /* 2730 */ 953, 372, 955, 2178, 1915, 384, 2700, 2208, 958, 2739, - /* 2740 */ 2701, 959, 2178, 394, 2702, 842, 2704, 2705, 837, 2178, - /* 2750 */ 857, 2178, 2178, 839, 2178, 2178, 2719, 2178, 2178, 2700, - /* 2760 */ 2178, 2178, 2739, 2178, 2178, 2178, 410, 2702, 842, 2704, - /* 2770 */ 2705, 837, 2666, 857, 838, 2178, 2178, 2178, 2178, 2178, - /* 2780 */ 2178, 2719, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2790 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2666, 2178, 838, - /* 2800 */ 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2810 */ 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, 2178, 2178, - /* 2820 */ 2700, 2178, 2701, 2739, 2178, 2178, 2178, 411, 2702, 842, - /* 2830 */ 2704, 2705, 837, 2178, 857, 839, 2178, 2178, 2178, 2178, - /* 2840 */ 2178, 2178, 2719, 2178, 2178, 2700, 2178, 2178, 2739, 2178, - /* 2850 */ 2178, 2178, 2713, 2702, 842, 2704, 2705, 837, 2666, 857, - /* 2860 */ 838, 2178, 2178, 2719, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2870 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2666, - /* 2880 */ 2178, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2890 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, - /* 2900 */ 2178, 2178, 2178, 2178, 2178, 2178, 2700, 2178, 2178, 2739, - /* 2910 */ 2178, 2178, 2178, 2712, 2702, 842, 2704, 2705, 837, 2178, - /* 2920 */ 857, 2178, 2178, 2178, 2719, 2178, 2178, 2700, 2178, 2178, - /* 2930 */ 2739, 2178, 2178, 2178, 2711, 2702, 842, 2704, 2705, 837, - /* 2940 */ 2666, 857, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, - /* 2950 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, - /* 2960 */ 2178, 2178, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2970 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, - /* 2980 */ 2178, 2178, 2178, 2178, 2178, 2719, 2178, 2178, 2700, 2178, - /* 2990 */ 2178, 2739, 2178, 2178, 2178, 429, 2702, 842, 2704, 2705, - /* 3000 */ 837, 2666, 857, 838, 2719, 2178, 2178, 2178, 2178, 2178, - /* 3010 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3020 */ 2666, 2178, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, - /* 3030 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, - /* 3040 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2700, - /* 3050 */ 2178, 2178, 2739, 2178, 2178, 2178, 430, 2702, 842, 2704, - /* 3060 */ 2705, 837, 2178, 857, 2178, 2719, 2178, 2178, 2700, 2178, - /* 3070 */ 2178, 2739, 2178, 2178, 2178, 426, 2702, 842, 2704, 2705, - /* 3080 */ 837, 2666, 857, 838, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3090 */ 2178, 2178, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3100 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2701, 2178, - /* 3110 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3120 */ 2178, 839, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2700, - /* 3130 */ 2178, 2178, 2739, 2178, 2719, 2178, 431, 2702, 842, 2704, - /* 3140 */ 2705, 837, 2178, 857, 2178, 2178, 2178, 2178, 2178, 2719, - /* 3150 */ 2666, 2178, 838, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3160 */ 2178, 2178, 2178, 2178, 2178, 2666, 2178, 838, 2178, 2178, - /* 3170 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3180 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3190 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 840, 2178, - /* 3200 */ 2178, 2739, 2178, 2178, 2178, 400, 2702, 842, 2704, 2705, - /* 3210 */ 837, 2178, 857, 2700, 2178, 2178, 2739, 2178, 2178, 2178, - /* 3220 */ 399, 2702, 842, 2704, 2705, 837, 2178, 857, + /* 0 */ 37, 338, 2538, 2705, 639, 542, 2373, 640, 2225, 190, + /* 10 */ 2680, 315, 47, 45, 2095, 2812, 803, 464, 494, 493, + /* 20 */ 469, 2183, 1916, 2535, 845, 40, 39, 2705, 66, 46, + /* 30 */ 44, 43, 42, 41, 1941, 2004, 1941, 1914, 2684, 2480, + /* 40 */ 838, 2809, 136, 1923, 2723, 135, 134, 133, 132, 131, + /* 50 */ 130, 129, 128, 127, 604, 602, 831, 409, 854, 372, + /* 60 */ 2670, 230, 840, 2368, 417, 33, 1999, 830, 2723, 800, + /* 70 */ 155, 40, 39, 19, 301, 46, 44, 43, 42, 41, + /* 80 */ 1922, 2269, 800, 155, 2670, 210, 840, 724, 136, 2686, + /* 90 */ 2689, 135, 134, 133, 132, 131, 130, 129, 128, 127, + /* 100 */ 859, 2431, 722, 252, 720, 286, 285, 642, 2704, 2233, + /* 110 */ 959, 2743, 2812, 15, 1942, 119, 2706, 844, 2708, 2709, + /* 120 */ 839, 647, 859, 103, 640, 2225, 197, 199, 854, 2797, + /* 130 */ 644, 2139, 2704, 465, 2793, 2743, 641, 62, 2808, 405, + /* 140 */ 2706, 844, 2708, 2709, 839, 837, 859, 823, 2762, 2006, + /* 150 */ 2007, 50, 437, 218, 2511, 753, 932, 931, 930, 929, + /* 160 */ 497, 2844, 928, 927, 160, 922, 921, 920, 919, 918, + /* 170 */ 917, 916, 159, 910, 909, 908, 496, 495, 905, 904, + /* 180 */ 903, 196, 195, 902, 492, 901, 900, 899, 1977, 1987, + /* 190 */ 802, 185, 2805, 2806, 778, 153, 2810, 290, 2005, 2008, + /* 200 */ 800, 155, 1762, 1763, 192, 2805, 799, 579, 147, 798, + /* 210 */ 788, 2663, 578, 1917, 485, 1915, 2895, 9, 2895, 2099, + /* 220 */ 577, 1926, 40, 39, 737, 1941, 46, 44, 43, 42, + /* 230 */ 41, 2360, 2705, 2205, 787, 217, 787, 217, 122, 2896, + /* 240 */ 789, 2896, 789, 1689, 1690, 841, 2388, 487, 2386, 1920, + /* 250 */ 1921, 1974, 777, 1976, 1979, 1980, 1981, 1982, 1983, 1984, + /* 260 */ 1985, 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, + /* 270 */ 2, 47, 45, 2723, 915, 474, 414, 2344, 1939, 469, + /* 280 */ 2723, 1916, 1843, 1844, 2900, 586, 859, 429, 607, 2670, + /* 290 */ 2670, 840, 2895, 606, 2004, 60, 1914, 40, 39, 453, + /* 300 */ 2585, 46, 44, 43, 42, 41, 751, 2014, 734, 1945, + /* 310 */ 565, 2899, 608, 1941, 197, 2896, 2898, 415, 567, 1498, + /* 320 */ 322, 1497, 125, 2805, 2806, 1999, 153, 2810, 180, 545, + /* 330 */ 855, 2384, 19, 662, 322, 2033, 151, 2704, 2387, 1922, + /* 340 */ 2743, 2070, 2512, 773, 119, 2706, 844, 2708, 2709, 839, + /* 350 */ 221, 859, 1471, 776, 157, 1499, 166, 2768, 2797, 2182, + /* 360 */ 40, 39, 465, 2793, 46, 44, 43, 42, 41, 959, + /* 370 */ 438, 1478, 15, 896, 172, 171, 893, 892, 891, 169, + /* 380 */ 1945, 553, 1941, 145, 144, 143, 142, 141, 140, 139, + /* 390 */ 138, 137, 655, 1978, 1473, 1476, 1477, 535, 62, 40, + /* 400 */ 39, 2034, 534, 46, 44, 43, 42, 41, 2006, 2007, + /* 410 */ 659, 2518, 2497, 658, 594, 593, 592, 591, 590, 585, + /* 420 */ 584, 583, 582, 421, 29, 1974, 2070, 572, 571, 570, + /* 430 */ 569, 568, 562, 561, 560, 254, 555, 554, 436, 642, + /* 440 */ 854, 2233, 546, 1750, 1751, 329, 330, 1977, 1987, 1769, + /* 450 */ 328, 754, 779, 774, 767, 763, 1975, 2005, 2008, 2895, + /* 460 */ 2817, 2067, 2068, 2069, 2817, 2817, 2817, 2817, 2817, 2525, + /* 470 */ 2375, 660, 1917, 519, 1915, 62, 898, 2901, 217, 213, + /* 480 */ 738, 1978, 2896, 789, 855, 2384, 855, 2384, 36, 467, + /* 490 */ 2028, 2029, 2030, 2031, 2032, 2036, 2037, 2038, 2039, 2072, + /* 500 */ 2073, 2074, 2075, 2076, 146, 2140, 55, 376, 1920, 1921, + /* 510 */ 1974, 685, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + /* 520 */ 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, + /* 530 */ 12, 47, 45, 50, 474, 1925, 2705, 2538, 181, 469, + /* 540 */ 1946, 1916, 116, 389, 1975, 859, 2067, 2068, 2069, 803, + /* 550 */ 208, 113, 471, 598, 2004, 1589, 1914, 2170, 2535, 845, + /* 560 */ 387, 76, 649, 2577, 75, 2705, 40, 39, 452, 2585, + /* 570 */ 46, 44, 43, 42, 41, 416, 735, 2723, 841, 2070, + /* 580 */ 2235, 322, 1942, 1922, 2680, 1999, 2900, 250, 621, 619, + /* 590 */ 616, 614, 19, 2670, 2895, 840, 40, 39, 1591, 1922, + /* 600 */ 46, 44, 43, 42, 41, 2490, 2723, 706, 705, 704, + /* 610 */ 523, 1946, 2684, 2899, 696, 152, 700, 2896, 2897, 241, + /* 620 */ 699, 2538, 2670, 656, 840, 698, 703, 446, 445, 959, + /* 630 */ 912, 697, 15, 62, 98, 444, 693, 692, 691, 525, + /* 640 */ 521, 2704, 2536, 845, 2743, 597, 240, 549, 119, 2706, + /* 650 */ 844, 2708, 2709, 839, 795, 859, 855, 2384, 322, 595, + /* 660 */ 199, 2380, 2797, 2686, 2688, 466, 465, 2793, 2006, 2007, + /* 670 */ 2704, 63, 2111, 2743, 859, 2169, 146, 119, 2706, 844, + /* 680 */ 2708, 2709, 839, 690, 859, 12, 2128, 657, 2531, 2915, + /* 690 */ 183, 2797, 2194, 51, 2845, 465, 2793, 914, 2817, 2067, + /* 700 */ 2068, 2069, 2817, 2817, 2817, 2817, 2817, 1977, 1987, 35, + /* 710 */ 1944, 1789, 1790, 1928, 2180, 40, 39, 2005, 2008, 46, + /* 720 */ 44, 43, 42, 41, 2358, 86, 85, 538, 2438, 2439, + /* 730 */ 229, 2092, 1917, 2444, 1915, 46, 44, 43, 42, 41, + /* 740 */ 98, 435, 2623, 530, 528, 770, 769, 2126, 2127, 2129, + /* 750 */ 2130, 2131, 2442, 12, 289, 10, 413, 439, 288, 517, + /* 760 */ 1788, 1791, 513, 509, 505, 502, 531, 2379, 1920, 1921, + /* 770 */ 1974, 1584, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + /* 780 */ 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, + /* 790 */ 47, 45, 2009, 1498, 2705, 1497, 754, 480, 469, 236, + /* 800 */ 1916, 500, 180, 865, 2895, 889, 499, 841, 2900, 2852, + /* 810 */ 2664, 487, 2386, 2004, 1585, 1914, 322, 489, 2705, 78, + /* 820 */ 2437, 2439, 2901, 217, 1601, 1944, 2812, 2896, 789, 1499, + /* 830 */ 788, 841, 101, 2865, 636, 2723, 1941, 424, 2895, 1600, + /* 840 */ 451, 2444, 726, 634, 1999, 92, 630, 626, 91, 462, + /* 850 */ 211, 2670, 2807, 840, 829, 754, 787, 217, 1922, 2723, + /* 860 */ 2442, 2896, 789, 2895, 855, 2384, 896, 172, 171, 893, + /* 870 */ 892, 891, 169, 89, 474, 2670, 322, 840, 443, 442, + /* 880 */ 320, 2901, 217, 483, 539, 859, 2896, 789, 959, 2463, + /* 890 */ 2371, 48, 896, 172, 171, 893, 892, 891, 169, 2704, + /* 900 */ 1501, 1502, 2743, 3, 2705, 738, 119, 2706, 844, 2708, + /* 910 */ 2709, 839, 609, 859, 1916, 53, 90, 841, 2915, 2163, + /* 920 */ 2797, 855, 2384, 2704, 465, 2793, 2743, 2006, 2007, 1914, + /* 930 */ 119, 2706, 844, 2708, 2709, 839, 824, 859, 2769, 551, + /* 940 */ 2507, 540, 2915, 796, 2797, 2723, 557, 2507, 465, 2793, + /* 950 */ 472, 864, 863, 862, 855, 2384, 441, 440, 179, 687, + /* 960 */ 2444, 2670, 826, 840, 2769, 2705, 1977, 1987, 473, 2389, + /* 970 */ 855, 2384, 1922, 1478, 661, 1885, 2005, 2008, 841, 2442, + /* 980 */ 765, 689, 2366, 855, 2384, 688, 2444, 740, 2577, 297, + /* 990 */ 559, 1917, 232, 1915, 488, 320, 2120, 1476, 1477, 234, + /* 1000 */ 588, 2507, 959, 573, 1978, 2442, 2723, 479, 478, 2704, + /* 1010 */ 62, 2121, 2743, 1945, 681, 680, 187, 2706, 844, 2708, + /* 1020 */ 2709, 839, 2670, 859, 840, 2091, 2204, 1920, 1921, 1974, + /* 1030 */ 2025, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, + /* 1040 */ 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, 47, + /* 1050 */ 45, 2705, 490, 239, 2119, 581, 580, 469, 382, 1916, + /* 1060 */ 179, 1884, 683, 682, 841, 102, 2888, 1975, 855, 2384, + /* 1070 */ 2704, 2389, 2004, 2743, 1914, 790, 2916, 119, 2706, 844, + /* 1080 */ 2708, 2709, 839, 2670, 859, 702, 701, 2705, 574, 2915, + /* 1090 */ 182, 2797, 2723, 482, 481, 465, 2793, 1605, 2318, 1817, + /* 1100 */ 841, 2203, 2829, 1999, 1650, 1917, 2388, 1915, 2670, 533, + /* 1110 */ 840, 532, 1604, 111, 14, 13, 2202, 1922, 1641, 888, + /* 1120 */ 887, 886, 1645, 885, 1647, 1648, 884, 881, 2723, 1656, + /* 1130 */ 878, 1658, 1659, 875, 872, 869, 2195, 855, 2384, 2377, + /* 1140 */ 2319, 1920, 1921, 531, 2670, 117, 840, 959, 2705, 2899, + /* 1150 */ 48, 2035, 855, 2384, 855, 2384, 2704, 575, 2670, 2743, + /* 1160 */ 2359, 841, 158, 119, 2706, 844, 2708, 2709, 839, 376, + /* 1170 */ 859, 2376, 2381, 2670, 292, 2915, 2201, 2797, 855, 2384, + /* 1180 */ 190, 465, 2793, 212, 148, 611, 2006, 2007, 1480, 2723, + /* 1190 */ 855, 2384, 2704, 322, 1940, 2743, 88, 2200, 300, 119, + /* 1200 */ 2706, 844, 2708, 2709, 839, 2670, 859, 840, 855, 2384, + /* 1210 */ 806, 2915, 2199, 2797, 494, 493, 2198, 465, 2793, 2197, + /* 1220 */ 855, 2384, 855, 2384, 1930, 1977, 1987, 2047, 333, 855, + /* 1230 */ 2384, 2586, 898, 2670, 2858, 2005, 2008, 2004, 34, 1923, + /* 1240 */ 820, 1945, 340, 1941, 1946, 43, 42, 41, 2040, 852, + /* 1250 */ 1917, 2591, 1915, 2704, 2670, 2610, 2743, 855, 2384, 771, + /* 1260 */ 119, 2706, 844, 2708, 2709, 839, 2196, 859, 1999, 2670, + /* 1270 */ 926, 924, 2772, 2670, 2797, 2193, 2670, 853, 465, 2793, + /* 1280 */ 156, 689, 1922, 2768, 2192, 688, 1920, 1921, 1974, 2272, + /* 1290 */ 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 836, + /* 1300 */ 857, 856, 1998, 2000, 2001, 2002, 2003, 2, 47, 45, + /* 1310 */ 2191, 2705, 828, 291, 855, 2384, 469, 2190, 1916, 855, + /* 1320 */ 2384, 2189, 2188, 2670, 841, 308, 179, 2624, 1650, 782, + /* 1330 */ 2187, 2004, 2670, 1914, 368, 890, 792, 2390, 2435, 491, + /* 1340 */ 2186, 2670, 1641, 888, 887, 886, 1645, 885, 1647, 1648, + /* 1350 */ 835, 834, 2723, 1656, 833, 1658, 1659, 832, 872, 869, + /* 1360 */ 894, 2185, 1999, 2435, 706, 705, 704, 2670, 2670, 170, + /* 1370 */ 840, 696, 152, 700, 2670, 316, 1922, 699, 2670, 2670, + /* 1380 */ 2444, 754, 698, 703, 446, 445, 2444, 2670, 697, 2895, + /* 1390 */ 2237, 2444, 444, 693, 692, 691, 2081, 2670, 514, 807, + /* 1400 */ 895, 800, 155, 2435, 2614, 815, 959, 2901, 217, 15, + /* 1410 */ 2443, 383, 2896, 789, 2421, 1931, 2704, 1926, 2670, 2743, + /* 1420 */ 2210, 954, 223, 119, 2706, 844, 2708, 2709, 839, 277, + /* 1430 */ 859, 279, 275, 281, 278, 2770, 280, 2797, 419, 418, + /* 1440 */ 2361, 465, 2793, 950, 283, 2006, 2007, 282, 475, 162, + /* 1450 */ 54, 1934, 1936, 162, 694, 695, 507, 728, 2691, 727, + /* 1460 */ 272, 2004, 2705, 484, 791, 857, 856, 1998, 2000, 2001, + /* 1470 */ 2002, 2003, 1946, 161, 1975, 841, 2256, 191, 1582, 1580, + /* 1480 */ 2254, 2172, 2173, 1562, 1977, 1987, 679, 675, 671, 667, + /* 1490 */ 2245, 271, 1999, 2243, 2005, 2008, 207, 801, 707, 150, + /* 1500 */ 40, 39, 709, 2723, 46, 44, 43, 42, 41, 1917, + /* 1510 */ 761, 1915, 711, 2724, 49, 714, 170, 906, 49, 2670, + /* 1520 */ 200, 840, 2693, 186, 2805, 2806, 1563, 153, 2810, 327, + /* 1530 */ 1833, 2311, 77, 2310, 1841, 64, 2516, 99, 347, 346, + /* 1540 */ 269, 1554, 14, 13, 49, 1920, 1921, 1974, 2226, 1976, + /* 1550 */ 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 836, 857, + /* 1560 */ 856, 1998, 2000, 2001, 2002, 2003, 2, 2704, 49, 736, + /* 1570 */ 2743, 77, 349, 348, 119, 2706, 844, 2708, 2709, 839, + /* 1580 */ 167, 859, 731, 170, 351, 350, 825, 962, 2797, 353, + /* 1590 */ 352, 2115, 465, 2793, 2705, 2125, 74, 805, 867, 2124, + /* 1600 */ 168, 306, 2848, 374, 355, 354, 170, 841, 257, 768, + /* 1610 */ 331, 458, 775, 812, 357, 356, 2041, 268, 454, 952, + /* 1620 */ 206, 259, 266, 793, 149, 1988, 1924, 264, 653, 948, + /* 1630 */ 944, 940, 936, 167, 371, 2723, 754, 809, 498, 1907, + /* 1640 */ 516, 1883, 359, 358, 2895, 907, 256, 361, 360, 1786, + /* 1650 */ 2517, 2670, 1776, 840, 363, 362, 365, 364, 1535, 367, + /* 1660 */ 366, 343, 2901, 217, 1632, 2232, 747, 2896, 789, 1552, + /* 1670 */ 2432, 2705, 783, 477, 476, 1908, 2849, 381, 2859, 1663, + /* 1680 */ 118, 1671, 123, 344, 841, 784, 318, 1678, 713, 857, + /* 1690 */ 856, 1998, 2000, 2001, 2002, 2003, 313, 321, 2345, 2704, + /* 1700 */ 5, 1536, 2743, 725, 2705, 1676, 120, 2706, 844, 2708, + /* 1710 */ 2709, 839, 2723, 859, 173, 816, 501, 841, 506, 287, + /* 1720 */ 2797, 1939, 433, 1949, 2796, 2793, 515, 526, 2670, 527, + /* 1730 */ 840, 224, 529, 225, 2705, 1810, 716, 227, 375, 543, + /* 1740 */ 1940, 550, 238, 710, 708, 2723, 552, 841, 600, 556, + /* 1750 */ 284, 2705, 558, 563, 587, 576, 2509, 589, 613, 612, + /* 1760 */ 342, 2670, 822, 840, 841, 325, 596, 610, 599, 601, + /* 1770 */ 324, 243, 244, 615, 247, 2723, 2704, 617, 618, 2743, + /* 1780 */ 620, 637, 622, 120, 2706, 844, 2708, 2709, 839, 294, + /* 1790 */ 859, 2670, 2723, 840, 1947, 4, 72, 2797, 638, 71, + /* 1800 */ 646, 827, 2793, 645, 1927, 648, 255, 94, 2670, 842, + /* 1810 */ 840, 1942, 2743, 650, 258, 1948, 120, 2706, 844, 2708, + /* 1820 */ 2709, 839, 651, 859, 1950, 652, 739, 261, 2705, 804, + /* 1830 */ 2797, 654, 263, 1951, 428, 2793, 2532, 95, 1952, 2704, + /* 1840 */ 684, 841, 2743, 2526, 96, 2705, 184, 2706, 844, 2708, + /* 1850 */ 2709, 839, 97, 859, 663, 270, 2704, 410, 841, 2743, + /* 1860 */ 717, 718, 124, 120, 2706, 844, 2708, 2709, 839, 2723, + /* 1870 */ 859, 686, 2600, 2374, 274, 2597, 100, 2797, 2370, 276, + /* 1880 */ 754, 175, 2794, 754, 121, 2670, 2723, 840, 2895, 2372, + /* 1890 */ 2367, 2895, 176, 755, 2855, 177, 2596, 730, 377, 163, + /* 1900 */ 732, 293, 2670, 1943, 840, 2578, 2901, 217, 742, 2901, + /* 1910 */ 217, 2896, 789, 741, 2896, 789, 298, 743, 296, 749, + /* 1920 */ 746, 748, 758, 772, 810, 2705, 8, 456, 2864, 2863, + /* 1930 */ 2836, 303, 781, 2704, 307, 189, 2743, 759, 841, 757, + /* 1940 */ 184, 2706, 844, 2708, 2709, 839, 305, 859, 311, 309, + /* 1950 */ 2704, 756, 312, 2743, 2705, 310, 786, 406, 2706, 844, + /* 1960 */ 2708, 2709, 839, 459, 859, 785, 2723, 841, 2918, 794, + /* 1970 */ 797, 2816, 314, 154, 1944, 2894, 317, 2089, 2087, 203, + /* 1980 */ 323, 2813, 2670, 164, 840, 808, 378, 2546, 2856, 2545, + /* 1990 */ 1, 219, 2544, 379, 463, 2723, 813, 814, 818, 165, + /* 2000 */ 61, 336, 821, 2778, 846, 848, 850, 457, 341, 851, + /* 2010 */ 380, 2670, 110, 840, 2385, 2705, 2662, 112, 1455, 2661, + /* 2020 */ 2657, 953, 861, 2656, 2648, 384, 2647, 956, 841, 2639, + /* 2030 */ 2704, 2638, 2654, 2743, 2653, 2645, 370, 406, 2706, 844, + /* 2040 */ 2708, 2709, 839, 2644, 859, 2633, 52, 174, 2632, 2651, + /* 2050 */ 408, 2705, 958, 2650, 734, 2642, 2723, 396, 386, 2704, + /* 2060 */ 2641, 2630, 2743, 2629, 838, 2627, 399, 2706, 844, 2708, + /* 2070 */ 2709, 839, 2670, 859, 840, 420, 2626, 2436, 407, 397, + /* 2080 */ 2622, 388, 2621, 2620, 425, 83, 426, 2615, 503, 504, + /* 2090 */ 1867, 1868, 2723, 222, 2613, 508, 510, 511, 512, 1866, + /* 2100 */ 2612, 2611, 434, 2609, 518, 2608, 520, 2607, 2670, 2606, + /* 2110 */ 840, 522, 524, 1854, 2582, 226, 2581, 780, 228, 1812, + /* 2120 */ 2704, 84, 1813, 2743, 2559, 2558, 2557, 187, 2706, 844, + /* 2130 */ 2708, 2709, 839, 536, 859, 537, 2556, 2555, 2499, 541, + /* 2140 */ 2705, 1749, 2496, 544, 2495, 2489, 2486, 547, 548, 2485, + /* 2150 */ 2484, 231, 2483, 841, 235, 564, 2704, 87, 2488, 2743, + /* 2160 */ 2487, 2482, 233, 405, 2706, 844, 2708, 2709, 839, 2705, + /* 2170 */ 859, 2481, 2763, 2479, 2478, 2477, 2476, 566, 2474, 2473, + /* 2180 */ 2472, 2723, 841, 2471, 2470, 2494, 2469, 2917, 2468, 2467, + /* 2190 */ 2705, 1755, 237, 2456, 2455, 2454, 93, 2670, 2492, 840, + /* 2200 */ 2475, 2466, 2465, 841, 2464, 2462, 2461, 2460, 2459, 2458, + /* 2210 */ 2723, 2457, 2453, 2452, 2524, 2493, 2491, 2451, 2450, 2705, + /* 2220 */ 2449, 2448, 468, 2447, 242, 603, 2670, 2446, 840, 605, + /* 2230 */ 2445, 2723, 841, 2276, 245, 2275, 246, 422, 2274, 2273, + /* 2240 */ 423, 1602, 2271, 248, 1606, 2704, 2268, 2670, 2743, 840, + /* 2250 */ 2267, 470, 406, 2706, 844, 2708, 2709, 839, 249, 859, + /* 2260 */ 2723, 1598, 623, 2260, 2247, 2221, 627, 1479, 625, 631, + /* 2270 */ 2220, 635, 2580, 629, 2704, 262, 2670, 2743, 840, 253, + /* 2280 */ 624, 406, 2706, 844, 2708, 2709, 839, 633, 859, 628, + /* 2290 */ 198, 80, 632, 251, 2576, 729, 2690, 81, 2743, 2566, + /* 2300 */ 209, 2554, 401, 2706, 844, 2708, 2709, 839, 643, 859, + /* 2310 */ 260, 2553, 2530, 2705, 2523, 265, 267, 2362, 1528, 2270, + /* 2320 */ 2266, 664, 666, 665, 2704, 2264, 841, 2743, 668, 669, + /* 2330 */ 2705, 391, 2706, 844, 2708, 2709, 839, 670, 859, 2262, + /* 2340 */ 672, 673, 674, 841, 2259, 676, 678, 2705, 677, 2242, + /* 2350 */ 2240, 2241, 2239, 2217, 2723, 2364, 1682, 2363, 1683, 1588, + /* 2360 */ 841, 1587, 73, 1586, 1583, 1581, 1579, 1578, 1577, 1576, + /* 2370 */ 2670, 2723, 840, 273, 923, 1575, 925, 1572, 1570, 1571, + /* 2380 */ 2257, 447, 1569, 2255, 448, 2246, 449, 2670, 2723, 840, + /* 2390 */ 2244, 450, 2216, 2215, 2214, 715, 2213, 719, 2212, 723, + /* 2400 */ 712, 126, 721, 1848, 2670, 1850, 840, 1847, 2579, 2575, + /* 2410 */ 2705, 1852, 295, 1819, 2565, 28, 2552, 1823, 2704, 67, + /* 2420 */ 2551, 2743, 1838, 841, 733, 390, 2706, 844, 2708, 2709, + /* 2430 */ 839, 2900, 859, 56, 1821, 2704, 20, 744, 2743, 17, + /* 2440 */ 21, 760, 392, 2706, 844, 2708, 2709, 839, 57, 859, + /* 2450 */ 745, 2723, 2704, 2550, 455, 2743, 6, 299, 764, 398, + /* 2460 */ 2706, 844, 2708, 2709, 839, 22, 859, 2670, 1798, 840, + /* 2470 */ 202, 1797, 178, 750, 752, 7, 214, 32, 2691, 2082, + /* 2480 */ 30, 766, 23, 215, 2084, 2142, 302, 65, 2116, 304, + /* 2490 */ 2705, 762, 24, 2123, 2157, 188, 2529, 201, 2156, 31, + /* 2500 */ 460, 2110, 82, 841, 18, 2080, 2161, 2705, 216, 2160, + /* 2510 */ 461, 2162, 59, 319, 2163, 2704, 2064, 193, 2743, 2063, + /* 2520 */ 841, 2528, 402, 2706, 844, 2708, 2709, 839, 105, 859, + /* 2530 */ 106, 2723, 104, 2705, 2522, 326, 107, 2118, 817, 204, + /* 2540 */ 25, 811, 13, 332, 69, 2016, 841, 2670, 2723, 840, + /* 2550 */ 1932, 334, 335, 2015, 58, 11, 2026, 194, 205, 1991, + /* 2560 */ 1990, 874, 877, 1967, 2670, 880, 840, 883, 38, 16, + /* 2570 */ 2705, 2521, 1989, 26, 2723, 843, 1959, 108, 27, 70, + /* 2580 */ 339, 819, 345, 841, 847, 1993, 2178, 109, 2177, 2748, + /* 2590 */ 2670, 2747, 840, 337, 858, 2704, 68, 113, 2743, 2176, + /* 2600 */ 860, 1664, 393, 2706, 844, 2708, 2709, 839, 868, 859, + /* 2610 */ 866, 2723, 2704, 486, 1661, 2743, 870, 1660, 871, 403, + /* 2620 */ 2706, 844, 2708, 2709, 839, 873, 859, 2670, 849, 840, + /* 2630 */ 1657, 2705, 876, 1651, 879, 882, 2175, 1649, 2704, 114, + /* 2640 */ 1655, 2743, 369, 115, 841, 394, 2706, 844, 2708, 2709, + /* 2650 */ 839, 1654, 859, 1677, 2705, 79, 1653, 1673, 1652, 1526, + /* 2660 */ 897, 1566, 1565, 1564, 1561, 1558, 1557, 841, 1556, 1555, + /* 2670 */ 1553, 1551, 2723, 1550, 1549, 2704, 1596, 911, 2743, 1595, + /* 2680 */ 220, 913, 404, 2706, 844, 2708, 2709, 839, 2670, 859, + /* 2690 */ 840, 1547, 1546, 1545, 1544, 2723, 1543, 1542, 1541, 1592, + /* 2700 */ 1590, 1538, 1537, 1534, 1533, 1532, 1531, 2265, 933, 934, + /* 2710 */ 935, 2670, 2263, 840, 937, 2705, 939, 2261, 941, 2258, + /* 2720 */ 943, 945, 938, 2238, 947, 942, 949, 946, 841, 1468, + /* 2730 */ 951, 2211, 1456, 955, 2181, 373, 2704, 2236, 1918, 2743, + /* 2740 */ 2705, 957, 960, 395, 2706, 844, 2708, 2709, 839, 385, + /* 2750 */ 859, 2181, 961, 841, 2181, 2181, 2723, 2181, 2181, 2704, + /* 2760 */ 2181, 2181, 2743, 2181, 2181, 2181, 411, 2706, 844, 2708, + /* 2770 */ 2709, 839, 2670, 859, 840, 2181, 2181, 2181, 2181, 2181, + /* 2780 */ 2181, 2723, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2790 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2670, 2181, 840, + /* 2800 */ 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2810 */ 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, 2181, 2181, + /* 2820 */ 2704, 2181, 2705, 2743, 2181, 2181, 2181, 412, 2706, 844, + /* 2830 */ 2708, 2709, 839, 2181, 859, 841, 2181, 2181, 2181, 2181, + /* 2840 */ 2181, 2181, 2723, 2181, 2181, 2704, 2181, 2181, 2743, 2181, + /* 2850 */ 2181, 2181, 2717, 2706, 844, 2708, 2709, 839, 2670, 859, + /* 2860 */ 840, 2181, 2181, 2723, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2870 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2670, + /* 2880 */ 2181, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2890 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, + /* 2900 */ 2181, 2181, 2181, 2181, 2181, 2181, 2704, 2181, 2181, 2743, + /* 2910 */ 2181, 2181, 2181, 2716, 2706, 844, 2708, 2709, 839, 2181, + /* 2920 */ 859, 2181, 2181, 2181, 2723, 2181, 2181, 2704, 2181, 2181, + /* 2930 */ 2743, 2181, 2181, 2181, 2715, 2706, 844, 2708, 2709, 839, + /* 2940 */ 2670, 859, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, + /* 2950 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, + /* 2960 */ 2181, 2181, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2970 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, + /* 2980 */ 2181, 2181, 2181, 2181, 2181, 2723, 2181, 2181, 2704, 2181, + /* 2990 */ 2181, 2743, 2181, 2181, 2181, 430, 2706, 844, 2708, 2709, + /* 3000 */ 839, 2670, 859, 840, 2723, 2181, 2181, 2181, 2181, 2181, + /* 3010 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3020 */ 2670, 2181, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, + /* 3030 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, + /* 3040 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2704, + /* 3050 */ 2181, 2181, 2743, 2181, 2181, 2181, 431, 2706, 844, 2708, + /* 3060 */ 2709, 839, 2181, 859, 2181, 2723, 2181, 2181, 2704, 2181, + /* 3070 */ 2181, 2743, 2181, 2181, 2181, 427, 2706, 844, 2708, 2709, + /* 3080 */ 839, 2670, 859, 840, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3090 */ 2181, 2181, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3100 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2705, 2181, + /* 3110 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3120 */ 2181, 841, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2704, + /* 3130 */ 2181, 2181, 2743, 2181, 2723, 2181, 432, 2706, 844, 2708, + /* 3140 */ 2709, 839, 2181, 859, 2181, 2181, 2181, 2181, 2181, 2723, + /* 3150 */ 2670, 2181, 840, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3160 */ 2181, 2181, 2181, 2181, 2181, 2670, 2181, 840, 2181, 2181, + /* 3170 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3180 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3190 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 842, 2181, + /* 3200 */ 2181, 2743, 2181, 2181, 2181, 401, 2706, 844, 2708, 2709, + /* 3210 */ 839, 2181, 859, 2704, 2181, 2181, 2743, 2181, 2181, 2181, + /* 3220 */ 400, 2706, 844, 2708, 2709, 839, 2181, 859, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 506, 507, 438, 379, 386, 391, 421, 389, 390, 519, @@ -681,149 +1055,149 @@ static const YYCODETYPE yy_lookahead[] = { /* 1300 */ 263, 264, 265, 266, 267, 268, 269, 270, 12, 13, /* 1310 */ 379, 379, 110, 478, 391, 392, 20, 379, 22, 391, /* 1320 */ 392, 379, 379, 436, 392, 534, 420, 463, 110, 13, - /* 1330 */ 379, 35, 436, 37, 411, 433, 0, 431, 436, 411, + /* 1330 */ 379, 35, 436, 37, 411, 433, 33, 431, 436, 411, /* 1340 */ 379, 436, 124, 125, 126, 127, 128, 129, 130, 131, /* 1350 */ 132, 133, 420, 135, 136, 137, 138, 139, 140, 141, /* 1360 */ 433, 379, 66, 436, 75, 76, 77, 436, 436, 33, - /* 1370 */ 438, 82, 83, 84, 436, 33, 80, 88, 436, 436, + /* 1370 */ 438, 82, 83, 84, 436, 552, 80, 88, 436, 436, /* 1380 */ 420, 517, 93, 94, 95, 96, 420, 436, 99, 525, - /* 1390 */ 33, 420, 103, 104, 105, 106, 80, 436, 0, 439, - /* 1400 */ 433, 391, 392, 436, 37, 439, 110, 543, 544, 113, + /* 1390 */ 0, 420, 103, 104, 105, 106, 80, 436, 42, 439, + /* 1400 */ 433, 391, 392, 436, 0, 439, 110, 543, 544, 113, /* 1410 */ 439, 413, 548, 549, 416, 213, 484, 215, 436, 487, - /* 1420 */ 382, 383, 0, 491, 492, 493, 494, 495, 496, 116, + /* 1420 */ 382, 383, 66, 491, 492, 493, 494, 495, 496, 116, /* 1430 */ 498, 116, 119, 116, 119, 503, 119, 505, 12, 13, - /* 1440 */ 116, 509, 510, 119, 22, 149, 150, 80, 22, 13, - /* 1450 */ 52, 249, 250, 231, 13, 233, 114, 0, 0, 0, + /* 1440 */ 0, 509, 510, 53, 116, 149, 150, 119, 22, 33, + /* 1450 */ 114, 249, 250, 33, 13, 13, 52, 231, 49, 233, /* 1460 */ 35, 35, 379, 37, 318, 263, 264, 265, 266, 267, - /* 1470 */ 268, 269, 251, 37, 251, 392, 37, 52, 37, 22, - /* 1480 */ 22, 22, 149, 150, 188, 189, 61, 62, 63, 64, - /* 1490 */ 37, 66, 66, 552, 198, 199, 241, 520, 12, 13, - /* 1500 */ 8, 9, 33, 420, 12, 13, 14, 15, 16, 213, - /* 1510 */ 395, 215, 12, 13, 33, 33, 33, 33, 33, 436, - /* 1520 */ 33, 438, 420, 513, 514, 515, 408, 517, 518, 33, - /* 1530 */ 33, 1, 2, 80, 33, 33, 408, 112, 49, 449, - /* 1540 */ 115, 449, 33, 33, 390, 249, 250, 251, 540, 253, + /* 1470 */ 268, 269, 251, 33, 251, 392, 0, 52, 37, 37, + /* 1480 */ 0, 149, 150, 37, 188, 189, 61, 62, 63, 64, + /* 1490 */ 0, 66, 66, 0, 198, 199, 241, 520, 22, 395, + /* 1500 */ 8, 9, 22, 420, 12, 13, 14, 15, 16, 213, + /* 1510 */ 33, 215, 22, 420, 33, 22, 33, 13, 33, 436, + /* 1520 */ 33, 438, 113, 513, 514, 515, 80, 517, 518, 33, + /* 1530 */ 114, 408, 33, 408, 114, 33, 449, 112, 12, 13, + /* 1540 */ 115, 37, 1, 2, 33, 249, 250, 251, 390, 253, /* 1550 */ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, /* 1560 */ 264, 265, 266, 267, 268, 269, 270, 484, 33, 1, /* 1570 */ 487, 33, 12, 13, 491, 492, 493, 494, 495, 496, - /* 1580 */ 33, 498, 463, 114, 12, 13, 503, 19, 505, 12, - /* 1590 */ 13, 33, 509, 510, 379, 114, 114, 114, 114, 114, - /* 1600 */ 33, 114, 113, 35, 33, 12, 13, 392, 183, 13, - /* 1610 */ 114, 114, 12, 13, 540, 114, 114, 192, 540, 51, - /* 1620 */ 52, 196, 197, 114, 114, 12, 13, 202, 203, 61, - /* 1630 */ 62, 63, 64, 37, 66, 420, 517, 12, 13, 213, - /* 1640 */ 33, 215, 12, 13, 525, 33, 221, 12, 13, 114, - /* 1650 */ 462, 436, 114, 438, 215, 13, 540, 395, 449, 392, - /* 1660 */ 435, 114, 543, 544, 470, 449, 449, 548, 549, 0, - /* 1670 */ 545, 379, 114, 247, 248, 249, 524, 320, 511, 37, - /* 1680 */ 112, 114, 190, 115, 392, 114, 524, 410, 4, 263, - /* 1690 */ 264, 265, 266, 267, 268, 269, 527, 464, 299, 484, - /* 1700 */ 52, 42, 487, 19, 379, 486, 491, 492, 493, 494, - /* 1710 */ 495, 496, 420, 498, 485, 147, 20, 392, 475, 35, - /* 1720 */ 505, 114, 53, 230, 509, 510, 114, 480, 436, 400, - /* 1730 */ 438, 475, 400, 211, 379, 466, 52, 20, 391, 20, - /* 1740 */ 392, 392, 45, 59, 60, 420, 445, 392, 445, 187, - /* 1750 */ 66, 379, 442, 391, 445, 111, 392, 404, 109, 391, - /* 1760 */ 192, 436, 194, 438, 392, 197, 391, 391, 442, 442, - /* 1770 */ 202, 108, 442, 403, 391, 420, 484, 391, 391, 487, - /* 1780 */ 402, 384, 20, 491, 492, 493, 494, 495, 496, 221, - /* 1790 */ 498, 436, 420, 438, 50, 388, 112, 505, 384, 115, - /* 1800 */ 388, 509, 510, 475, 400, 400, 20, 438, 436, 484, - /* 1810 */ 438, 400, 487, 20, 393, 20, 491, 492, 493, 494, - /* 1820 */ 495, 496, 393, 498, 465, 20, 463, 400, 379, 463, - /* 1830 */ 505, 400, 400, 456, 509, 510, 20, 400, 450, 484, - /* 1840 */ 400, 392, 487, 391, 400, 379, 491, 492, 493, 494, - /* 1850 */ 495, 496, 384, 498, 420, 420, 484, 382, 392, 487, - /* 1860 */ 382, 384, 420, 491, 492, 493, 494, 495, 496, 420, - /* 1870 */ 498, 420, 234, 479, 420, 420, 420, 505, 113, 391, - /* 1880 */ 517, 420, 510, 517, 420, 436, 420, 438, 525, 398, - /* 1890 */ 420, 525, 420, 538, 539, 477, 436, 20, 436, 436, - /* 1900 */ 219, 218, 436, 475, 438, 472, 543, 544, 391, 543, - /* 1910 */ 544, 548, 549, 398, 548, 549, 471, 474, 438, 315, - /* 1920 */ 536, 307, 533, 306, 457, 379, 436, 461, 533, 464, - /* 1930 */ 457, 204, 317, 484, 533, 535, 487, 316, 392, 531, - /* 1940 */ 491, 492, 493, 494, 495, 496, 300, 498, 532, 530, - /* 1950 */ 484, 295, 294, 487, 379, 324, 553, 491, 492, 493, - /* 1960 */ 494, 495, 496, 464, 498, 392, 420, 392, 321, 523, - /* 1970 */ 522, 547, 319, 20, 123, 528, 546, 297, 393, 398, - /* 1980 */ 398, 457, 436, 457, 438, 490, 436, 436, 539, 436, - /* 1990 */ 436, 436, 196, 454, 450, 420, 398, 526, 113, 436, - /* 2000 */ 398, 436, 508, 196, 398, 416, 450, 461, 451, 398, - /* 2010 */ 392, 436, 436, 438, 436, 379, 436, 113, 398, 436, - /* 2020 */ 436, 22, 436, 436, 436, 391, 436, 436, 392, 38, - /* 2030 */ 484, 436, 381, 487, 384, 436, 467, 491, 492, 493, - /* 2040 */ 494, 495, 496, 377, 498, 436, 436, 385, 425, 483, - /* 2050 */ 476, 379, 436, 399, 422, 436, 420, 414, 436, 484, - /* 2060 */ 436, 458, 487, 436, 392, 436, 491, 492, 493, 494, - /* 2070 */ 495, 496, 436, 498, 438, 436, 436, 436, 414, 414, - /* 2080 */ 0, 0, 0, 45, 458, 0, 37, 240, 37, 37, - /* 2090 */ 37, 0, 420, 240, 37, 37, 240, 37, 0, 240, - /* 2100 */ 0, 37, 0, 37, 0, 22, 0, 37, 436, 235, - /* 2110 */ 438, 221, 0, 221, 215, 222, 213, 542, 0, 0, - /* 2120 */ 484, 0, 0, 487, 209, 208, 0, 491, 492, 493, - /* 2130 */ 494, 495, 496, 0, 498, 154, 49, 49, 0, 0, - /* 2140 */ 379, 0, 37, 0, 37, 52, 49, 0, 45, 0, - /* 2150 */ 0, 0, 0, 392, 37, 173, 484, 49, 0, 487, - /* 2160 */ 0, 0, 0, 491, 492, 493, 494, 495, 496, 379, - /* 2170 */ 498, 0, 500, 0, 173, 0, 0, 0, 0, 0, + /* 1580 */ 33, 498, 463, 33, 12, 13, 503, 19, 505, 12, + /* 1590 */ 13, 114, 509, 510, 379, 114, 33, 114, 33, 114, + /* 1600 */ 33, 114, 449, 35, 12, 13, 33, 392, 183, 540, + /* 1610 */ 114, 540, 540, 114, 12, 13, 114, 192, 462, 51, + /* 1620 */ 52, 196, 197, 320, 33, 114, 37, 202, 203, 61, + /* 1630 */ 62, 63, 64, 33, 66, 420, 517, 540, 395, 213, + /* 1640 */ 485, 215, 12, 13, 525, 13, 221, 12, 13, 114, + /* 1650 */ 449, 436, 114, 438, 12, 13, 12, 13, 37, 12, + /* 1660 */ 13, 114, 543, 544, 114, 392, 470, 548, 549, 37, + /* 1670 */ 435, 379, 524, 247, 248, 249, 449, 114, 449, 114, + /* 1680 */ 112, 114, 190, 115, 392, 524, 545, 114, 4, 263, + /* 1690 */ 264, 265, 266, 267, 268, 269, 511, 527, 410, 484, + /* 1700 */ 299, 80, 487, 19, 379, 114, 491, 492, 493, 494, + /* 1710 */ 495, 496, 420, 498, 114, 147, 464, 392, 52, 35, + /* 1720 */ 505, 20, 486, 20, 509, 510, 391, 230, 436, 475, + /* 1730 */ 438, 480, 475, 400, 379, 211, 52, 400, 466, 391, + /* 1740 */ 20, 392, 45, 59, 60, 420, 445, 392, 187, 392, + /* 1750 */ 66, 379, 445, 442, 392, 391, 391, 445, 404, 111, + /* 1760 */ 192, 436, 194, 438, 392, 197, 442, 109, 442, 442, + /* 1770 */ 202, 403, 391, 391, 391, 420, 484, 108, 402, 487, + /* 1780 */ 391, 384, 391, 491, 492, 493, 494, 495, 496, 221, + /* 1790 */ 498, 436, 420, 438, 20, 50, 112, 505, 388, 115, + /* 1800 */ 388, 509, 510, 384, 215, 475, 400, 400, 436, 484, + /* 1810 */ 438, 20, 487, 438, 400, 20, 491, 492, 493, 494, + /* 1820 */ 495, 496, 393, 498, 20, 465, 463, 400, 379, 463, + /* 1830 */ 505, 393, 400, 20, 509, 510, 456, 400, 20, 484, + /* 1840 */ 384, 392, 487, 450, 400, 379, 491, 492, 493, 494, + /* 1850 */ 495, 496, 400, 498, 391, 400, 484, 384, 392, 487, + /* 1860 */ 382, 382, 391, 491, 492, 493, 494, 495, 496, 420, + /* 1870 */ 498, 420, 436, 420, 420, 436, 113, 505, 420, 420, + /* 1880 */ 517, 420, 510, 517, 420, 436, 420, 438, 525, 420, + /* 1890 */ 420, 525, 420, 538, 539, 420, 436, 234, 475, 477, + /* 1900 */ 479, 398, 436, 20, 438, 474, 543, 544, 219, 543, + /* 1910 */ 544, 548, 549, 218, 548, 549, 398, 472, 471, 391, + /* 1920 */ 438, 464, 436, 307, 306, 379, 315, 461, 533, 533, + /* 1930 */ 536, 457, 204, 484, 535, 533, 487, 317, 392, 316, + /* 1940 */ 491, 492, 493, 494, 495, 496, 457, 498, 530, 532, + /* 1950 */ 484, 300, 464, 487, 379, 531, 295, 491, 492, 493, + /* 1960 */ 494, 495, 496, 324, 498, 294, 420, 392, 553, 319, + /* 1970 */ 321, 523, 522, 392, 20, 547, 546, 123, 297, 393, + /* 1980 */ 398, 490, 436, 398, 438, 436, 457, 436, 539, 436, + /* 1990 */ 528, 526, 436, 457, 436, 420, 196, 454, 436, 398, + /* 2000 */ 113, 398, 450, 508, 196, 436, 451, 461, 398, 450, + /* 2010 */ 416, 436, 398, 438, 392, 379, 436, 113, 22, 436, + /* 2020 */ 436, 38, 425, 436, 436, 391, 436, 381, 392, 436, + /* 2030 */ 484, 436, 436, 487, 436, 436, 398, 491, 492, 493, + /* 2040 */ 494, 495, 496, 436, 498, 436, 467, 385, 436, 436, + /* 2050 */ 476, 379, 384, 436, 483, 436, 420, 414, 399, 484, + /* 2060 */ 436, 436, 487, 436, 392, 436, 491, 492, 493, 494, + /* 2070 */ 495, 496, 436, 498, 438, 422, 436, 436, 414, 414, + /* 2080 */ 0, 377, 0, 0, 458, 45, 458, 0, 37, 240, + /* 2090 */ 37, 37, 420, 37, 0, 240, 37, 37, 240, 37, + /* 2100 */ 0, 0, 240, 0, 37, 0, 37, 0, 436, 0, + /* 2110 */ 438, 22, 37, 235, 0, 221, 0, 542, 221, 213, + /* 2120 */ 484, 222, 215, 487, 0, 0, 0, 491, 492, 493, + /* 2130 */ 494, 495, 496, 209, 498, 208, 0, 0, 154, 49, + /* 2140 */ 379, 49, 0, 37, 0, 0, 0, 37, 52, 0, + /* 2150 */ 0, 49, 0, 392, 173, 37, 484, 45, 0, 487, + /* 2160 */ 0, 0, 49, 491, 492, 493, 494, 495, 496, 379, + /* 2170 */ 498, 0, 500, 0, 0, 0, 0, 173, 0, 0, /* 2180 */ 0, 420, 392, 0, 0, 0, 0, 551, 0, 0, - /* 2190 */ 379, 49, 0, 45, 0, 0, 0, 436, 0, 438, + /* 2190 */ 379, 22, 49, 0, 0, 0, 45, 436, 0, 438, /* 2200 */ 0, 0, 0, 392, 0, 0, 0, 0, 0, 0, - /* 2210 */ 420, 0, 0, 0, 0, 22, 0, 154, 0, 379, - /* 2220 */ 153, 0, 461, 152, 0, 0, 436, 0, 438, 66, - /* 2230 */ 0, 420, 392, 66, 37, 0, 66, 22, 0, 22, - /* 2240 */ 50, 0, 0, 0, 0, 484, 0, 436, 487, 438, - /* 2250 */ 0, 461, 491, 492, 493, 494, 495, 496, 0, 498, - /* 2260 */ 420, 74, 52, 37, 42, 66, 37, 14, 37, 50, - /* 2270 */ 42, 37, 52, 33, 484, 52, 436, 487, 438, 42, - /* 2280 */ 0, 491, 492, 493, 494, 495, 496, 0, 498, 42, - /* 2290 */ 45, 0, 43, 0, 204, 484, 42, 49, 487, 42, + /* 2210 */ 420, 0, 0, 0, 0, 0, 0, 0, 0, 379, + /* 2220 */ 0, 0, 461, 0, 154, 153, 436, 0, 438, 152, + /* 2230 */ 0, 420, 392, 0, 66, 0, 66, 50, 0, 0, + /* 2240 */ 50, 22, 0, 66, 22, 484, 0, 436, 487, 438, + /* 2250 */ 0, 461, 491, 492, 493, 494, 495, 496, 66, 498, + /* 2260 */ 420, 37, 37, 0, 0, 0, 37, 14, 42, 37, + /* 2270 */ 0, 37, 0, 42, 484, 204, 436, 487, 438, 43, + /* 2280 */ 52, 491, 492, 493, 494, 495, 496, 42, 498, 52, + /* 2290 */ 33, 42, 52, 45, 0, 484, 49, 42, 487, 0, /* 2300 */ 49, 0, 491, 492, 493, 494, 495, 496, 49, 498, - /* 2310 */ 49, 0, 49, 379, 0, 0, 0, 0, 37, 52, - /* 2320 */ 42, 0, 37, 52, 484, 42, 392, 487, 0, 37, + /* 2310 */ 42, 0, 0, 379, 0, 49, 49, 0, 74, 0, + /* 2320 */ 0, 37, 42, 52, 484, 0, 392, 487, 37, 52, /* 2330 */ 379, 491, 492, 493, 494, 495, 496, 42, 498, 0, - /* 2340 */ 52, 37, 52, 392, 42, 0, 0, 379, 0, 0, - /* 2350 */ 0, 0, 119, 121, 420, 37, 22, 0, 0, 22, - /* 2360 */ 392, 37, 37, 37, 37, 0, 37, 37, 37, 37, - /* 2370 */ 436, 420, 438, 33, 33, 37, 22, 22, 22, 37, - /* 2380 */ 37, 37, 0, 0, 22, 22, 0, 436, 420, 438, - /* 2390 */ 37, 0, 0, 0, 0, 22, 37, 37, 20, 0, - /* 2400 */ 114, 54, 113, 37, 436, 37, 438, 37, 226, 113, - /* 2410 */ 379, 0, 37, 49, 0, 0, 0, 22, 484, 216, - /* 2420 */ 22, 487, 3, 392, 301, 491, 492, 493, 494, 495, - /* 2430 */ 496, 50, 498, 33, 114, 484, 113, 50, 487, 200, - /* 2440 */ 37, 37, 491, 492, 493, 494, 495, 496, 113, 498, - /* 2450 */ 190, 420, 484, 33, 190, 487, 220, 33, 190, 491, - /* 2460 */ 492, 493, 494, 495, 496, 196, 498, 436, 33, 438, - /* 2470 */ 200, 33, 190, 301, 190, 49, 49, 80, 33, 37, - /* 2480 */ 225, 114, 113, 111, 113, 109, 3, 33, 114, 37, - /* 2490 */ 379, 114, 113, 113, 37, 37, 37, 37, 114, 114, - /* 2500 */ 37, 113, 113, 392, 114, 49, 33, 379, 0, 0, - /* 2510 */ 114, 49, 42, 0, 113, 484, 114, 42, 487, 114, - /* 2520 */ 392, 114, 491, 492, 493, 494, 495, 496, 0, 498, - /* 2530 */ 113, 420, 114, 379, 113, 42, 113, 2, 33, 114, - /* 2540 */ 111, 113, 111, 22, 272, 193, 392, 436, 420, 438, - /* 2550 */ 285, 114, 249, 114, 113, 49, 49, 301, 114, 113, - /* 2560 */ 113, 113, 113, 113, 436, 114, 438, 22, 113, 0, - /* 2570 */ 379, 252, 42, 49, 420, 114, 123, 113, 113, 113, - /* 2580 */ 113, 113, 22, 392, 113, 22, 114, 113, 22, 113, - /* 2590 */ 436, 122, 438, 114, 37, 484, 37, 113, 487, 193, - /* 2600 */ 192, 114, 491, 492, 493, 494, 495, 496, 37, 498, - /* 2610 */ 197, 420, 484, 113, 37, 487, 114, 114, 37, 491, - /* 2620 */ 492, 493, 494, 495, 496, 193, 498, 436, 114, 438, - /* 2630 */ 37, 379, 114, 37, 33, 226, 37, 22, 484, 113, - /* 2640 */ 113, 487, 113, 73, 392, 491, 492, 493, 494, 495, - /* 2650 */ 496, 134, 498, 134, 379, 22, 134, 134, 37, 74, - /* 2660 */ 37, 37, 37, 37, 37, 37, 37, 392, 37, 37, - /* 2670 */ 80, 37, 420, 33, 107, 484, 37, 80, 487, 107, - /* 2680 */ 37, 37, 491, 492, 493, 494, 495, 496, 436, 498, - /* 2690 */ 438, 22, 37, 37, 37, 420, 80, 37, 37, 37, - /* 2700 */ 37, 37, 22, 37, 0, 37, 52, 42, 0, 37, - /* 2710 */ 52, 436, 42, 438, 37, 379, 0, 42, 0, 52, - /* 2720 */ 37, 42, 0, 52, 37, 0, 37, 22, 392, 22, - /* 2730 */ 33, 22, 21, 554, 22, 22, 484, 0, 21, 487, - /* 2740 */ 379, 20, 554, 491, 492, 493, 494, 495, 496, 554, - /* 2750 */ 498, 554, 554, 392, 554, 554, 420, 554, 554, 484, + /* 2340 */ 37, 52, 42, 392, 0, 37, 42, 379, 52, 0, + /* 2350 */ 0, 0, 0, 0, 420, 0, 22, 0, 37, 22, + /* 2360 */ 392, 37, 121, 37, 37, 37, 37, 37, 37, 37, + /* 2370 */ 436, 420, 438, 119, 33, 37, 33, 37, 22, 37, + /* 2380 */ 0, 22, 37, 0, 22, 0, 22, 436, 420, 438, + /* 2390 */ 0, 22, 0, 0, 0, 37, 0, 37, 0, 22, + /* 2400 */ 54, 20, 37, 37, 436, 37, 438, 37, 0, 0, + /* 2410 */ 379, 114, 49, 37, 0, 113, 0, 220, 484, 113, + /* 2420 */ 0, 487, 226, 392, 225, 491, 492, 493, 494, 495, + /* 2430 */ 496, 3, 498, 190, 22, 484, 33, 22, 487, 301, + /* 2440 */ 33, 37, 491, 492, 493, 494, 495, 496, 190, 498, + /* 2450 */ 190, 420, 484, 0, 37, 487, 50, 196, 111, 491, + /* 2460 */ 492, 493, 494, 495, 496, 33, 498, 436, 190, 438, + /* 2470 */ 33, 190, 216, 200, 200, 50, 49, 33, 49, 80, + /* 2480 */ 113, 109, 301, 33, 37, 114, 113, 3, 114, 114, + /* 2490 */ 379, 113, 33, 114, 37, 113, 0, 113, 37, 113, + /* 2500 */ 37, 114, 113, 392, 301, 114, 37, 379, 113, 37, + /* 2510 */ 37, 114, 33, 49, 114, 484, 114, 49, 487, 114, + /* 2520 */ 392, 0, 491, 492, 493, 494, 495, 496, 42, 498, + /* 2530 */ 42, 420, 113, 379, 0, 114, 42, 114, 114, 113, + /* 2540 */ 33, 193, 2, 113, 113, 111, 392, 436, 420, 438, + /* 2550 */ 22, 197, 113, 111, 285, 272, 249, 49, 49, 114, + /* 2560 */ 114, 113, 113, 22, 436, 113, 438, 113, 113, 113, + /* 2570 */ 379, 0, 114, 113, 420, 252, 114, 42, 113, 113, + /* 2580 */ 113, 193, 49, 392, 114, 114, 22, 113, 22, 113, + /* 2590 */ 436, 113, 438, 192, 113, 484, 113, 122, 487, 22, + /* 2600 */ 123, 114, 491, 492, 493, 494, 495, 496, 113, 498, + /* 2610 */ 37, 420, 484, 37, 114, 487, 37, 114, 113, 491, + /* 2620 */ 492, 493, 494, 495, 496, 37, 498, 436, 193, 438, + /* 2630 */ 114, 379, 37, 114, 37, 37, 226, 114, 484, 113, + /* 2640 */ 134, 487, 33, 113, 392, 491, 492, 493, 494, 495, + /* 2650 */ 496, 134, 498, 37, 379, 113, 134, 22, 134, 74, + /* 2660 */ 73, 22, 37, 37, 37, 37, 37, 392, 37, 37, + /* 2670 */ 37, 37, 420, 37, 37, 484, 80, 107, 487, 80, + /* 2680 */ 33, 107, 491, 492, 493, 494, 495, 496, 436, 498, + /* 2690 */ 438, 37, 37, 37, 22, 420, 37, 37, 37, 80, + /* 2700 */ 37, 37, 37, 37, 37, 22, 37, 0, 37, 52, + /* 2710 */ 42, 436, 0, 438, 37, 379, 42, 0, 37, 0, + /* 2720 */ 42, 37, 52, 0, 42, 52, 37, 52, 392, 37, + /* 2730 */ 22, 0, 22, 33, 554, 22, 484, 0, 22, 487, + /* 2740 */ 379, 21, 21, 491, 492, 493, 494, 495, 496, 22, + /* 2750 */ 498, 554, 20, 392, 554, 554, 420, 554, 554, 484, /* 2760 */ 554, 554, 487, 554, 554, 554, 491, 492, 493, 494, /* 2770 */ 495, 496, 436, 498, 438, 554, 554, 554, 554, 554, /* 2780 */ 554, 420, 554, 554, 554, 554, 554, 554, 554, 554, @@ -910,7 +1284,7 @@ static const YYCODETYPE yy_lookahead[] = { /* 3590 */ 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, /* 3600 */ 376, 376, 376, 376, }; -#define YY_SHIFT_COUNT (960) +#define YY_SHIFT_COUNT (962) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (2737) static const unsigned short int yy_shift_ofst[] = { @@ -934,85 +1308,85 @@ static const unsigned short int yy_shift_ofst[] = { /* 170 */ 16, 503, 503, 682, 25, 994, 994, 994, 994, 994, /* 180 */ 994, 1568, 1289, 21, 289, 413, 413, 352, 437, 150, /* 190 */ 210, 299, 260, 205, 293, 6, 6, 360, 950, 993, - /* 200 */ 974, 974, 974, 105, 974, 816, 773, 1221, 1174, 1139, - /* 210 */ 882, 1221, 1221, 1223, 1316, 1316, 1146, 870, 727, 617, - /* 220 */ 1399, 1648, 1659, 1696, 1493, 261, 1696, 261, 1522, 1717, - /* 230 */ 1719, 1697, 1719, 1697, 1562, 1717, 1719, 1717, 1697, 1562, - /* 240 */ 1562, 1562, 1644, 1649, 1717, 1717, 1663, 1717, 1717, 1717, - /* 250 */ 1762, 1744, 1762, 1744, 1696, 261, 261, 1786, 261, 1793, - /* 260 */ 1795, 261, 1793, 261, 1805, 261, 1816, 261, 261, 1717, - /* 270 */ 261, 1762, 16, 16, 16, 16, 16, 16, 16, 16, - /* 280 */ 16, 16, 16, 1717, 25, 25, 1762, 503, 503, 503, - /* 290 */ 1638, 1765, 1696, 404, 1877, 1681, 1683, 1786, 404, 1399, - /* 300 */ 1717, 503, 1614, 1617, 1614, 1617, 1604, 1727, 1614, 1615, - /* 310 */ 1621, 1646, 1399, 1656, 1658, 1631, 1647, 1653, 1719, 1953, - /* 320 */ 1851, 1680, 1793, 404, 404, 1617, 503, 503, 503, 503, - /* 330 */ 1617, 503, 1796, 404, 503, 1816, 404, 1885, 503, 1807, - /* 340 */ 1816, 404, 682, 404, 1719, 503, 503, 503, 503, 503, + /* 200 */ 974, 974, 974, 105, 974, 816, 773, 1356, 1221, 1174, + /* 210 */ 1139, 882, 1221, 1221, 1223, 1316, 1316, 1146, 870, 727, + /* 220 */ 617, 1401, 1666, 1701, 1703, 1497, 261, 1703, 261, 1524, + /* 230 */ 1701, 1720, 1697, 1720, 1697, 1561, 1701, 1720, 1701, 1697, + /* 240 */ 1561, 1561, 1561, 1648, 1658, 1701, 1701, 1669, 1701, 1701, + /* 250 */ 1701, 1774, 1745, 1774, 1745, 1703, 261, 261, 1791, 261, + /* 260 */ 1795, 1804, 261, 1795, 261, 1813, 261, 1818, 261, 261, + /* 270 */ 1701, 261, 1774, 16, 16, 16, 16, 16, 16, 16, + /* 280 */ 16, 16, 16, 16, 1701, 25, 25, 1774, 503, 503, + /* 290 */ 503, 1663, 1763, 1703, 404, 1883, 1689, 1695, 1791, 404, + /* 300 */ 1401, 1701, 503, 1616, 1618, 1616, 1618, 1611, 1728, 1616, + /* 310 */ 1620, 1623, 1651, 1401, 1661, 1671, 1639, 1649, 1650, 1720, + /* 320 */ 1954, 1854, 1681, 1795, 404, 404, 1618, 503, 503, 503, + /* 330 */ 503, 1618, 503, 1800, 404, 503, 1818, 404, 1887, 503, + /* 340 */ 1808, 1818, 404, 682, 404, 1720, 503, 503, 503, 503, /* 350 */ 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - /* 360 */ 503, 503, 503, 503, 503, 503, 503, 1904, 503, 1717, - /* 370 */ 404, 1999, 1991, 1762, 3228, 3228, 3228, 3228, 3228, 3228, - /* 380 */ 3228, 3228, 3228, 3228, 3228, 81, 1425, 359, 1684, 391, - /* 390 */ 17, 558, 63, 707, 1492, 231, 724, 588, 588, 588, - /* 400 */ 588, 588, 588, 588, 588, 588, 750, 610, 464, 66, - /* 410 */ 723, 723, 402, 733, 39, 782, 578, 760, 846, 578, - /* 420 */ 889, 802, 1075, 54, 302, 302, 1231, 1113, 964, 1231, - /* 430 */ 1231, 1231, 1398, 1255, 1342, 605, 1151, 696, 1336, 1313, - /* 440 */ 1315, 1317, 1324, 734, 1436, 1441, 1422, 1457, 1458, 1459, - /* 450 */ 1222, 1469, 1481, 8, 1482, 1485, 1487, 1496, 1333, 1357, - /* 460 */ 621, 1483, 1484, 1497, 1530, 1501, 781, 1502, 1489, 1509, - /* 470 */ 1510, 1535, 1538, 1486, 1500, 1560, 1572, 1577, 1593, 1600, - /* 480 */ 1613, 1625, 1630, 1635, 1547, 1558, 1567, 1571, 1607, 1612, - /* 490 */ 429, 1367, 498, 1439, 1596, 1642, 1453, 1669, 2080, 2081, - /* 500 */ 2082, 2038, 2085, 2049, 1847, 2051, 2052, 2053, 1853, 2091, - /* 510 */ 2057, 2058, 1856, 2060, 2098, 1859, 2100, 2064, 2102, 2066, - /* 520 */ 2104, 2083, 2106, 2070, 1874, 2118, 1890, 2112, 1892, 1893, - /* 530 */ 1899, 1903, 2119, 2121, 2122, 1915, 1917, 2126, 2133, 1981, - /* 540 */ 2087, 2088, 2138, 2105, 2139, 2141, 2107, 2093, 2143, 2097, - /* 550 */ 2147, 2103, 2149, 2150, 2151, 2108, 2152, 2158, 2160, 2161, - /* 560 */ 2162, 2171, 1982, 2117, 2173, 2001, 2175, 2176, 2177, 2178, - /* 570 */ 2179, 2180, 2183, 2184, 2185, 2186, 2188, 2189, 2198, 2200, - /* 580 */ 2201, 2202, 2204, 2205, 2206, 2207, 2142, 2192, 2148, 2194, - /* 590 */ 2195, 2196, 2208, 2209, 2211, 2212, 2213, 2214, 2193, 2216, - /* 600 */ 2063, 2218, 2067, 2221, 2071, 2224, 2225, 2215, 2190, 2217, - /* 610 */ 2219, 2227, 2163, 2230, 2167, 2197, 2235, 2170, 2238, 2199, - /* 620 */ 2241, 2242, 2226, 2210, 2222, 2243, 2229, 2220, 2228, 2244, - /* 630 */ 2231, 2223, 2237, 2246, 2234, 2250, 2245, 2247, 2240, 2248, - /* 640 */ 2251, 2253, 2261, 2258, 2249, 2254, 2280, 2287, 2291, 2293, - /* 650 */ 2257, 2090, 2301, 2248, 2259, 2311, 2248, 2263, 2314, 2315, - /* 660 */ 2187, 2316, 2317, 2281, 2267, 2278, 2321, 2285, 2271, 2283, - /* 670 */ 2328, 2292, 2288, 2295, 2339, 2304, 2290, 2302, 2345, 2346, - /* 680 */ 2348, 2349, 2350, 2351, 2232, 2233, 2318, 2334, 2357, 2337, - /* 690 */ 2324, 2325, 2326, 2327, 2329, 2330, 2331, 2332, 2338, 2340, - /* 700 */ 2341, 2342, 2343, 2354, 2344, 2358, 2355, 2365, 2356, 2382, - /* 710 */ 2362, 2347, 2383, 2363, 2353, 2386, 2391, 2392, 2359, 2393, - /* 720 */ 2360, 2394, 2373, 2378, 2366, 2368, 2370, 2286, 2289, 2399, - /* 730 */ 2260, 2182, 2255, 2296, 2236, 2248, 2364, 2411, 2264, 2375, - /* 740 */ 2395, 2414, 2203, 2398, 2268, 2269, 2415, 2416, 2282, 2239, - /* 750 */ 2284, 2270, 2419, 2400, 2123, 2323, 2320, 2335, 2367, 2403, - /* 760 */ 2404, 2369, 2381, 2372, 2387, 2376, 2374, 2420, 2424, 2377, - /* 770 */ 2371, 2379, 2380, 2384, 2435, 2426, 2427, 2388, 2438, 2172, - /* 780 */ 2397, 2385, 2445, 2389, 2442, 2390, 2396, 2483, 2454, 2256, - /* 790 */ 2452, 2457, 2458, 2459, 2460, 2463, 2402, 2405, 2456, 2265, - /* 800 */ 2473, 2462, 2508, 2509, 2401, 2470, 2407, 2418, 2417, 2421, - /* 810 */ 2352, 2423, 2513, 2475, 2413, 2528, 2425, 2428, 2406, 2493, - /* 820 */ 2408, 2505, 2429, 2272, 2431, 2535, 2521, 2303, 2437, 2439, - /* 830 */ 2441, 2446, 2447, 2448, 2449, 2444, 2506, 2450, 2455, 2507, - /* 840 */ 2451, 2545, 2319, 2464, 2465, 2569, 2461, 2466, 2432, 2530, - /* 850 */ 2467, 2469, 2248, 2524, 2468, 2471, 2472, 2474, 2476, 2453, - /* 860 */ 2560, 2563, 2566, 2409, 2479, 2557, 2559, 2484, 2487, 2571, - /* 870 */ 2500, 2502, 2577, 2441, 2503, 2581, 2446, 2514, 2593, 2447, - /* 880 */ 2518, 2596, 2448, 2517, 2519, 2522, 2523, 2526, 2601, 2527, - /* 890 */ 2599, 2529, 2601, 2601, 2615, 2585, 2570, 2633, 2621, 2623, - /* 900 */ 2624, 2625, 2626, 2627, 2628, 2629, 2631, 2632, 2634, 2590, - /* 910 */ 2567, 2597, 2572, 2640, 2639, 2643, 2644, 2669, 2655, 2656, - /* 920 */ 2657, 2616, 2340, 2660, 2341, 2661, 2662, 2663, 2664, 2680, - /* 930 */ 2666, 2704, 2668, 2654, 2665, 2708, 2672, 2658, 2670, 2716, - /* 940 */ 2677, 2667, 2675, 2718, 2683, 2671, 2679, 2722, 2687, 2725, - /* 950 */ 2705, 2689, 2737, 2707, 2697, 2709, 2711, 2712, 2713, 2717, - /* 960 */ 2721, + /* 360 */ 503, 503, 503, 503, 503, 503, 503, 503, 1904, 503, + /* 370 */ 1701, 404, 1996, 1983, 1774, 3228, 3228, 3228, 3228, 3228, + /* 380 */ 3228, 3228, 3228, 3228, 3228, 3228, 81, 1425, 359, 1684, + /* 390 */ 391, 17, 558, 63, 707, 1492, 231, 724, 588, 588, + /* 400 */ 588, 588, 588, 588, 588, 588, 588, 750, 610, 464, + /* 410 */ 66, 723, 723, 402, 733, 39, 782, 578, 760, 846, + /* 420 */ 578, 889, 802, 1075, 54, 302, 302, 1231, 1113, 964, + /* 430 */ 1231, 1231, 1231, 1404, 1255, 1336, 605, 1151, 696, 1440, + /* 440 */ 1313, 1315, 1317, 1328, 734, 1441, 1442, 1476, 1480, 1490, + /* 450 */ 1493, 1226, 1416, 1420, 8, 1477, 1481, 1485, 1487, 1332, + /* 460 */ 1303, 621, 1483, 1496, 1499, 1541, 1502, 781, 1511, 1409, + /* 470 */ 1535, 1538, 1547, 1550, 1526, 1560, 1572, 1577, 1592, 1602, + /* 480 */ 1630, 1635, 1642, 1644, 1647, 1563, 1565, 1567, 1573, 1591, + /* 490 */ 1600, 429, 1446, 498, 1589, 1504, 1632, 1621, 1390, 2080, + /* 500 */ 2082, 2083, 2040, 2087, 2051, 1849, 2053, 2054, 2056, 1855, + /* 510 */ 2094, 2059, 2060, 1858, 2062, 2100, 2101, 1862, 2103, 2067, + /* 520 */ 2105, 2069, 2107, 2089, 2109, 2075, 1878, 2114, 1894, 2116, + /* 530 */ 1897, 1899, 1907, 1906, 2124, 2125, 2126, 1924, 1927, 2136, + /* 540 */ 2137, 1984, 2090, 2092, 2142, 2106, 2144, 2145, 2110, 2096, + /* 550 */ 2146, 2102, 2149, 2112, 2150, 2152, 2158, 2113, 2160, 2161, + /* 560 */ 2171, 2173, 2174, 2175, 1981, 2118, 2176, 2004, 2178, 2179, + /* 570 */ 2180, 2183, 2184, 2185, 2186, 2188, 2189, 2198, 2200, 2201, + /* 580 */ 2202, 2204, 2205, 2206, 2207, 2208, 2209, 2211, 2143, 2193, + /* 590 */ 2151, 2194, 2195, 2212, 2213, 2214, 2215, 2216, 2217, 2218, + /* 600 */ 2169, 2220, 2070, 2221, 2072, 2223, 2077, 2227, 2230, 2219, + /* 610 */ 2187, 2222, 2190, 2233, 2168, 2235, 2170, 2224, 2238, 2177, + /* 620 */ 2239, 2192, 2242, 2246, 2225, 2228, 2226, 2250, 2229, 2237, + /* 630 */ 2231, 2263, 2232, 2240, 2245, 2264, 2234, 2265, 2248, 2249, + /* 640 */ 2257, 2247, 2251, 2253, 2259, 2270, 2236, 2255, 2272, 2294, + /* 650 */ 2299, 2301, 2268, 2071, 2311, 2247, 2266, 2312, 2247, 2267, + /* 660 */ 2314, 2317, 2244, 2319, 2320, 2284, 2271, 2280, 2325, 2291, + /* 670 */ 2277, 2295, 2339, 2303, 2289, 2300, 2344, 2308, 2296, 2304, + /* 680 */ 2349, 2350, 2351, 2352, 2353, 2355, 2241, 2254, 2321, 2334, + /* 690 */ 2357, 2337, 2324, 2326, 2327, 2328, 2329, 2330, 2331, 2332, + /* 700 */ 2338, 2341, 2343, 2340, 2342, 2356, 2345, 2380, 2359, 2383, + /* 710 */ 2362, 2385, 2364, 2346, 2390, 2369, 2358, 2392, 2393, 2394, + /* 720 */ 2360, 2396, 2365, 2398, 2377, 2381, 2366, 2368, 2370, 2297, + /* 730 */ 2302, 2408, 2243, 2196, 2199, 2306, 2197, 2247, 2363, 2409, + /* 740 */ 2258, 2376, 2412, 2414, 2256, 2415, 2260, 2261, 2416, 2420, + /* 750 */ 2278, 2273, 2281, 2274, 2428, 2403, 2138, 2367, 2371, 2373, + /* 760 */ 2374, 2404, 2417, 2378, 2406, 2347, 2425, 2372, 2375, 2407, + /* 770 */ 2432, 2379, 2382, 2384, 2386, 2387, 2437, 2427, 2429, 2389, + /* 780 */ 2444, 2181, 2399, 2391, 2450, 2395, 2447, 2397, 2400, 2484, + /* 790 */ 2459, 2203, 2457, 2461, 2463, 2469, 2472, 2473, 2402, 2405, + /* 800 */ 2464, 2269, 2479, 2468, 2453, 2496, 2419, 2486, 2421, 2423, + /* 810 */ 2426, 2430, 2348, 2431, 2521, 2488, 2354, 2534, 2424, 2439, + /* 820 */ 2388, 2494, 2401, 2507, 2434, 2283, 2442, 2540, 2528, 2307, + /* 830 */ 2445, 2446, 2448, 2449, 2452, 2454, 2455, 2458, 2508, 2456, + /* 840 */ 2460, 2509, 2462, 2541, 2323, 2465, 2466, 2571, 2470, 2467, + /* 850 */ 2435, 2535, 2474, 2475, 2247, 2533, 2476, 2478, 2471, 2481, + /* 860 */ 2483, 2477, 2564, 2566, 2577, 2410, 2487, 2573, 2576, 2495, + /* 870 */ 2500, 2579, 2505, 2503, 2588, 2448, 2516, 2595, 2449, 2519, + /* 880 */ 2597, 2452, 2523, 2598, 2454, 2506, 2517, 2522, 2524, 2526, + /* 890 */ 2609, 2530, 2616, 2542, 2609, 2609, 2635, 2585, 2587, 2639, + /* 900 */ 2625, 2626, 2627, 2628, 2629, 2631, 2632, 2633, 2634, 2636, + /* 910 */ 2637, 2596, 2570, 2599, 2574, 2647, 2654, 2655, 2656, 2672, + /* 920 */ 2659, 2660, 2661, 2619, 2341, 2663, 2343, 2664, 2665, 2666, + /* 930 */ 2667, 2683, 2669, 2707, 2671, 2657, 2668, 2712, 2677, 2670, + /* 940 */ 2674, 2717, 2681, 2673, 2678, 2719, 2684, 2675, 2682, 2723, + /* 950 */ 2689, 2737, 2708, 2692, 2731, 2710, 2700, 2713, 2720, 2716, + /* 960 */ 2727, 2721, 2732, }; -#define YY_REDUCE_COUNT (384) +#define YY_REDUCE_COUNT (385) #define YY_REDUCE_MIN (-510) #define YY_REDUCE_MAX (2729) static const short yy_reduce_ofst[] = { @@ -1034,126 +1408,126 @@ static const short yy_reduce_ofst[] = { /* 150 */ 618, 666, 680, -475, -378, 336, 434, 460, 715, -133, /* 160 */ 865, 234, 749, 835, 960, 966, 779, 906, -92, 902, /* 170 */ 971, 927, 967, 998, 1038, -415, 469, 561, 568, 637, - /* 180 */ 685, 381, 731, 756, 785, 661, 661, 941, 718, 791, - /* 190 */ 977, 1115, 661, 1102, 1102, 1118, 1128, 1090, 1154, 1092, - /* 200 */ 1008, 1074, 1078, 1188, 1116, 1102, 1262, 1209, 1267, 1225, - /* 210 */ 1194, 1216, 1217, 1102, 1152, 1162, 1125, 1167, 1169, 1277, - /* 220 */ 1233, 1219, 1229, 1243, 1247, 1329, 1256, 1332, 1269, 1347, - /* 230 */ 1348, 1301, 1349, 1303, 1310, 1362, 1364, 1368, 1309, 1326, - /* 240 */ 1327, 1330, 1353, 1370, 1375, 1376, 1378, 1383, 1386, 1387, - /* 250 */ 1397, 1407, 1414, 1412, 1328, 1404, 1405, 1369, 1411, 1421, - /* 260 */ 1359, 1427, 1429, 1431, 1377, 1432, 1388, 1437, 1440, 1452, - /* 270 */ 1444, 1468, 1434, 1435, 1442, 1451, 1454, 1455, 1456, 1461, - /* 280 */ 1464, 1470, 1472, 1488, 1475, 1478, 1477, 1460, 1462, 1463, - /* 290 */ 1394, 1418, 1428, 1491, 1443, 1433, 1445, 1480, 1515, 1465, - /* 300 */ 1517, 1490, 1389, 1467, 1395, 1473, 1384, 1400, 1401, 1416, - /* 310 */ 1408, 1419, 1499, 1446, 1448, 1403, 1424, 1430, 1573, 1495, - /* 320 */ 1447, 1471, 1585, 1581, 1582, 1524, 1550, 1551, 1553, 1554, - /* 330 */ 1526, 1555, 1539, 1598, 1563, 1544, 1602, 1494, 1565, 1557, - /* 340 */ 1556, 1606, 1589, 1611, 1618, 1576, 1578, 1580, 1583, 1584, - /* 350 */ 1586, 1587, 1588, 1590, 1591, 1595, 1599, 1609, 1610, 1616, - /* 360 */ 1619, 1622, 1624, 1627, 1629, 1639, 1640, 1623, 1641, 1634, - /* 370 */ 1620, 1651, 1662, 1650, 1569, 1566, 1574, 1603, 1626, 1643, - /* 380 */ 1664, 1632, 1665, 1654, 1666, + /* 180 */ 685, 381, 731, 756, 785, 661, 661, 823, 718, 791, + /* 190 */ 977, 1104, 661, 1093, 1093, 1123, 1125, 1087, 1158, 1153, + /* 200 */ 1069, 1071, 1072, 1156, 1097, 1093, 1243, 1155, 1201, 1273, + /* 210 */ 1235, 1196, 1227, 1229, 1093, 1148, 1161, 1141, 1185, 1170, + /* 220 */ 1288, 1252, 1236, 1335, 1254, 1251, 1333, 1257, 1337, 1272, + /* 230 */ 1348, 1349, 1301, 1357, 1307, 1311, 1364, 1362, 1365, 1312, + /* 240 */ 1324, 1326, 1327, 1354, 1368, 1381, 1382, 1376, 1383, 1389, + /* 250 */ 1391, 1397, 1410, 1419, 1412, 1330, 1406, 1407, 1375, 1414, + /* 260 */ 1429, 1360, 1427, 1438, 1432, 1380, 1437, 1393, 1444, 1452, + /* 270 */ 1463, 1455, 1456, 1451, 1453, 1454, 1458, 1459, 1461, 1464, + /* 280 */ 1469, 1470, 1472, 1475, 1471, 1478, 1479, 1473, 1436, 1439, + /* 290 */ 1460, 1421, 1422, 1423, 1503, 1431, 1445, 1447, 1482, 1518, + /* 300 */ 1457, 1528, 1486, 1395, 1474, 1396, 1489, 1394, 1399, 1402, + /* 310 */ 1417, 1424, 1418, 1488, 1448, 1450, 1415, 1428, 1430, 1581, + /* 320 */ 1491, 1462, 1465, 1586, 1582, 1585, 1529, 1549, 1551, 1553, + /* 330 */ 1556, 1536, 1558, 1543, 1601, 1562, 1552, 1603, 1495, 1569, + /* 340 */ 1555, 1559, 1610, 1594, 1614, 1622, 1580, 1583, 1584, 1587, + /* 350 */ 1588, 1590, 1593, 1595, 1596, 1598, 1599, 1607, 1609, 1612, + /* 360 */ 1613, 1617, 1619, 1624, 1625, 1627, 1629, 1640, 1597, 1641, + /* 370 */ 1634, 1638, 1646, 1662, 1668, 1579, 1571, 1574, 1626, 1628, + /* 380 */ 1643, 1664, 1653, 1665, 1659, 1704, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 10 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 20 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 30 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 40 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 50 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 60 */ 2544, 2176, 2176, 2500, 2176, 2176, 2176, 2176, 2176, 2176, - /* 70 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2507, 2176, - /* 80 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 90 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2277, - /* 100 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 110 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2275, 2795, - /* 120 */ 2176, 2921, 2585, 2176, 2176, 2824, 2176, 2176, 2176, 2176, - /* 130 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 140 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2807, 2176, 2176, - /* 150 */ 2248, 2248, 2176, 2807, 2807, 2807, 2767, 2767, 2275, 2176, - /* 160 */ 2176, 2277, 2176, 2587, 2176, 2176, 2176, 2176, 2176, 2176, - /* 170 */ 2176, 2176, 2176, 2417, 2206, 2176, 2176, 2176, 2176, 2176, - /* 180 */ 2176, 2570, 2176, 2176, 2853, 2799, 2800, 2915, 2176, 2856, - /* 190 */ 2818, 2176, 2813, 2176, 2176, 2176, 2176, 2512, 2176, 2843, - /* 200 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2362, - /* 210 */ 2564, 2176, 2176, 2176, 2176, 2176, 2899, 2797, 2837, 2176, - /* 220 */ 2847, 2176, 2612, 2176, 2601, 2277, 2176, 2277, 2557, 2495, - /* 230 */ 2176, 2505, 2176, 2505, 2502, 2176, 2176, 2176, 2505, 2502, - /* 240 */ 2502, 2502, 2351, 2347, 2176, 2176, 2345, 2176, 2176, 2176, - /* 250 */ 2176, 2231, 2176, 2231, 2176, 2277, 2277, 2176, 2277, 2176, - /* 260 */ 2176, 2277, 2176, 2277, 2176, 2277, 2176, 2277, 2277, 2176, - /* 270 */ 2277, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 280 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 290 */ 2599, 2580, 2176, 2275, 2176, 2568, 2566, 2176, 2275, 2847, - /* 300 */ 2176, 2176, 2869, 2864, 2869, 2864, 2883, 2879, 2869, 2888, - /* 310 */ 2885, 2849, 2847, 2830, 2826, 2918, 2905, 2901, 2176, 2176, - /* 320 */ 2835, 2833, 2176, 2275, 2275, 2864, 2176, 2176, 2176, 2176, - /* 330 */ 2864, 2176, 2176, 2275, 2176, 2176, 2275, 2176, 2176, 2176, - /* 340 */ 2176, 2275, 2176, 2275, 2176, 2176, 2176, 2176, 2176, 2176, - /* 350 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 360 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2379, 2176, 2176, - /* 370 */ 2275, 2176, 2215, 2176, 2559, 2585, 2590, 2540, 2540, 2420, - /* 380 */ 2420, 2921, 2420, 2278, 2181, 2176, 2176, 2176, 2176, 2176, - /* 390 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2882, 2881, 2718, - /* 400 */ 2176, 2771, 2770, 2769, 2760, 2717, 2375, 2176, 2176, 2176, - /* 410 */ 2716, 2715, 2176, 2176, 2176, 2176, 2366, 2176, 2176, 2388, - /* 420 */ 2176, 2176, 2176, 2176, 2531, 2530, 2709, 2176, 2176, 2710, - /* 430 */ 2708, 2707, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 440 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 450 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2902, - /* 460 */ 2906, 2176, 2176, 2176, 2796, 2176, 2176, 2176, 2688, 2176, - /* 470 */ 2176, 2176, 2176, 2656, 2651, 2642, 2633, 2648, 2639, 2627, - /* 480 */ 2645, 2636, 2624, 2621, 2176, 2176, 2176, 2176, 2176, 2176, - /* 490 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 500 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 510 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 520 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 530 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2501, - /* 540 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 550 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 560 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 570 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 580 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 590 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 600 */ 2176, 2176, 2176, 2176, 2516, 2176, 2176, 2176, 2176, 2176, - /* 610 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 620 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 630 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2220, 2695, - /* 640 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 650 */ 2176, 2176, 2176, 2698, 2176, 2176, 2699, 2176, 2176, 2176, - /* 660 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 670 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 680 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 690 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2322, - /* 700 */ 2321, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 710 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 720 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2700, 2176, 2176, - /* 730 */ 2176, 2176, 2584, 2176, 2176, 2690, 2176, 2176, 2176, 2176, - /* 740 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 750 */ 2176, 2176, 2898, 2850, 2176, 2176, 2176, 2176, 2176, 2176, - /* 760 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 770 */ 2176, 2176, 2176, 2176, 2176, 2176, 2688, 2176, 2880, 2176, - /* 780 */ 2176, 2176, 2176, 2176, 2176, 2176, 2896, 2176, 2900, 2176, - /* 790 */ 2176, 2176, 2176, 2176, 2176, 2176, 2806, 2802, 2176, 2176, - /* 800 */ 2798, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 810 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 820 */ 2176, 2757, 2176, 2176, 2176, 2791, 2176, 2176, 2176, 2176, - /* 830 */ 2416, 2415, 2414, 2413, 2176, 2176, 2176, 2176, 2176, 2176, - /* 840 */ 2700, 2176, 2703, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 850 */ 2176, 2176, 2687, 2176, 2742, 2741, 2176, 2176, 2176, 2176, - /* 860 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2410, 2176, 2176, - /* 870 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 880 */ 2176, 2176, 2176, 2394, 2392, 2391, 2390, 2176, 2427, 2176, - /* 890 */ 2176, 2176, 2423, 2422, 2176, 2176, 2176, 2176, 2176, 2176, - /* 900 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 910 */ 2176, 2176, 2176, 2296, 2176, 2176, 2176, 2176, 2176, 2176, - /* 920 */ 2176, 2176, 2288, 2176, 2287, 2176, 2176, 2176, 2176, 2176, - /* 930 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 940 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 950 */ 2176, 2176, 2176, 2176, 2205, 2176, 2176, 2176, 2176, 2176, - /* 960 */ 2176, + /* 0 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 10 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 20 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 30 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 40 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 50 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 60 */ 2547, 2179, 2179, 2503, 2179, 2179, 2179, 2179, 2179, 2179, + /* 70 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2510, 2179, + /* 80 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 90 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2280, + /* 100 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 110 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2278, 2799, + /* 120 */ 2179, 2925, 2588, 2179, 2179, 2828, 2179, 2179, 2179, 2179, + /* 130 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 140 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2811, 2179, 2179, + /* 150 */ 2251, 2251, 2179, 2811, 2811, 2811, 2771, 2771, 2278, 2179, + /* 160 */ 2179, 2280, 2179, 2590, 2179, 2179, 2179, 2179, 2179, 2179, + /* 170 */ 2179, 2179, 2179, 2420, 2209, 2179, 2179, 2179, 2179, 2179, + /* 180 */ 2179, 2573, 2179, 2179, 2857, 2803, 2804, 2919, 2179, 2860, + /* 190 */ 2822, 2179, 2817, 2179, 2179, 2179, 2179, 2515, 2179, 2847, + /* 200 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2616, 2179, 2179, + /* 210 */ 2365, 2567, 2179, 2179, 2179, 2179, 2179, 2903, 2801, 2841, + /* 220 */ 2179, 2851, 2179, 2179, 2179, 2604, 2280, 2179, 2280, 2560, + /* 230 */ 2498, 2179, 2508, 2179, 2508, 2505, 2179, 2179, 2179, 2508, + /* 240 */ 2505, 2505, 2505, 2354, 2350, 2179, 2179, 2348, 2179, 2179, + /* 250 */ 2179, 2179, 2234, 2179, 2234, 2179, 2280, 2280, 2179, 2280, + /* 260 */ 2179, 2179, 2280, 2179, 2280, 2179, 2280, 2179, 2280, 2280, + /* 270 */ 2179, 2280, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 280 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 290 */ 2179, 2602, 2583, 2179, 2278, 2179, 2571, 2569, 2179, 2278, + /* 300 */ 2851, 2179, 2179, 2873, 2868, 2873, 2868, 2887, 2883, 2873, + /* 310 */ 2892, 2889, 2853, 2851, 2834, 2830, 2922, 2909, 2905, 2179, + /* 320 */ 2179, 2839, 2837, 2179, 2278, 2278, 2868, 2179, 2179, 2179, + /* 330 */ 2179, 2868, 2179, 2179, 2278, 2179, 2179, 2278, 2179, 2179, + /* 340 */ 2179, 2179, 2278, 2179, 2278, 2179, 2179, 2179, 2179, 2179, + /* 350 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 360 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2382, 2179, + /* 370 */ 2179, 2278, 2179, 2218, 2179, 2562, 2588, 2593, 2543, 2543, + /* 380 */ 2423, 2423, 2925, 2423, 2281, 2184, 2179, 2179, 2179, 2179, + /* 390 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2886, 2885, + /* 400 */ 2722, 2179, 2775, 2774, 2773, 2764, 2721, 2378, 2179, 2179, + /* 410 */ 2179, 2720, 2719, 2179, 2179, 2179, 2179, 2369, 2179, 2179, + /* 420 */ 2391, 2179, 2179, 2179, 2179, 2534, 2533, 2713, 2179, 2179, + /* 430 */ 2714, 2712, 2711, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 440 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 450 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 460 */ 2906, 2910, 2179, 2179, 2179, 2800, 2179, 2179, 2179, 2692, + /* 470 */ 2179, 2179, 2179, 2179, 2660, 2655, 2646, 2637, 2652, 2643, + /* 480 */ 2631, 2649, 2640, 2628, 2625, 2179, 2179, 2179, 2179, 2179, + /* 490 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 500 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 510 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 520 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 530 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 540 */ 2179, 2504, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 550 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 560 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 570 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 580 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 590 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 600 */ 2179, 2179, 2179, 2179, 2179, 2179, 2519, 2179, 2179, 2179, + /* 610 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 620 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 630 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 640 */ 2223, 2699, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 650 */ 2179, 2179, 2179, 2179, 2179, 2702, 2179, 2179, 2703, 2179, + /* 660 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 670 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 680 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 690 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 700 */ 2179, 2325, 2324, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 710 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 720 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2704, + /* 730 */ 2179, 2179, 2179, 2179, 2587, 2179, 2179, 2694, 2179, 2179, + /* 740 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 750 */ 2179, 2179, 2179, 2179, 2902, 2854, 2179, 2179, 2179, 2179, + /* 760 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 770 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2692, 2179, + /* 780 */ 2884, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2900, 2179, + /* 790 */ 2904, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2810, 2806, + /* 800 */ 2179, 2179, 2802, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 810 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 820 */ 2179, 2179, 2179, 2761, 2179, 2179, 2179, 2795, 2179, 2179, + /* 830 */ 2179, 2179, 2419, 2418, 2417, 2416, 2179, 2179, 2179, 2179, + /* 840 */ 2179, 2179, 2704, 2179, 2707, 2179, 2179, 2179, 2179, 2179, + /* 850 */ 2179, 2179, 2179, 2179, 2691, 2179, 2746, 2745, 2179, 2179, + /* 860 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2413, + /* 870 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 880 */ 2179, 2179, 2179, 2179, 2179, 2397, 2395, 2394, 2393, 2179, + /* 890 */ 2430, 2179, 2179, 2179, 2426, 2425, 2179, 2179, 2179, 2179, + /* 900 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 910 */ 2179, 2179, 2179, 2179, 2179, 2299, 2179, 2179, 2179, 2179, + /* 920 */ 2179, 2179, 2179, 2179, 2291, 2179, 2290, 2179, 2179, 2179, + /* 930 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 940 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 950 */ 2179, 2179, 2179, 2179, 2179, 2179, 2208, 2179, 2179, 2179, + /* 960 */ 2179, 2179, 2179, }; /********** End of lemon-generated parsing tables *****************************/ @@ -1600,6 +1974,7 @@ struct yyParser { }; typedef struct yyParser yyParser; +#include #ifndef NDEBUG #include static FILE *yyTraceFILE = 0; @@ -2627,323 +3002,324 @@ static const char *const yyRuleName[] = { /* 427 */ "cmd ::= KILL COMPACT NK_INTEGER", /* 428 */ "cmd ::= BALANCE VGROUP", /* 429 */ "cmd ::= BALANCE VGROUP LEADER on_vgroup_id", - /* 430 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", - /* 431 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", - /* 432 */ "cmd ::= SPLIT VGROUP NK_INTEGER", - /* 433 */ "on_vgroup_id ::=", - /* 434 */ "on_vgroup_id ::= ON NK_INTEGER", - /* 435 */ "dnode_list ::= DNODE NK_INTEGER", - /* 436 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", - /* 437 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", - /* 438 */ "cmd ::= query_or_subquery", - /* 439 */ "cmd ::= insert_query", - /* 440 */ "insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", - /* 441 */ "insert_query ::= INSERT INTO full_table_name query_or_subquery", - /* 442 */ "tags_literal ::= NK_INTEGER", - /* 443 */ "tags_literal ::= NK_INTEGER NK_PLUS duration_literal", - /* 444 */ "tags_literal ::= NK_INTEGER NK_MINUS duration_literal", - /* 445 */ "tags_literal ::= NK_PLUS NK_INTEGER", - /* 446 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal", - /* 447 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal", - /* 448 */ "tags_literal ::= NK_MINUS NK_INTEGER", - /* 449 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal", - /* 450 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal", - /* 451 */ "tags_literal ::= NK_FLOAT", - /* 452 */ "tags_literal ::= NK_PLUS NK_FLOAT", - /* 453 */ "tags_literal ::= NK_MINUS NK_FLOAT", - /* 454 */ "tags_literal ::= NK_BIN", - /* 455 */ "tags_literal ::= NK_BIN NK_PLUS duration_literal", - /* 456 */ "tags_literal ::= NK_BIN NK_MINUS duration_literal", - /* 457 */ "tags_literal ::= NK_PLUS NK_BIN", - /* 458 */ "tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal", - /* 459 */ "tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal", - /* 460 */ "tags_literal ::= NK_MINUS NK_BIN", - /* 461 */ "tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal", - /* 462 */ "tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal", - /* 463 */ "tags_literal ::= NK_HEX", - /* 464 */ "tags_literal ::= NK_HEX NK_PLUS duration_literal", - /* 465 */ "tags_literal ::= NK_HEX NK_MINUS duration_literal", - /* 466 */ "tags_literal ::= NK_PLUS NK_HEX", - /* 467 */ "tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal", - /* 468 */ "tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal", - /* 469 */ "tags_literal ::= NK_MINUS NK_HEX", - /* 470 */ "tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal", - /* 471 */ "tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal", - /* 472 */ "tags_literal ::= NK_STRING", - /* 473 */ "tags_literal ::= NK_STRING NK_PLUS duration_literal", - /* 474 */ "tags_literal ::= NK_STRING NK_MINUS duration_literal", - /* 475 */ "tags_literal ::= NK_BOOL", - /* 476 */ "tags_literal ::= NULL", - /* 477 */ "tags_literal ::= literal_func", - /* 478 */ "tags_literal ::= literal_func NK_PLUS duration_literal", - /* 479 */ "tags_literal ::= literal_func NK_MINUS duration_literal", - /* 480 */ "tags_literal_list ::= tags_literal", - /* 481 */ "tags_literal_list ::= tags_literal_list NK_COMMA tags_literal", - /* 482 */ "literal ::= NK_INTEGER", - /* 483 */ "literal ::= NK_FLOAT", - /* 484 */ "literal ::= NK_STRING", - /* 485 */ "literal ::= NK_BOOL", - /* 486 */ "literal ::= TIMESTAMP NK_STRING", - /* 487 */ "literal ::= duration_literal", - /* 488 */ "literal ::= NULL", - /* 489 */ "literal ::= NK_QUESTION", - /* 490 */ "duration_literal ::= NK_VARIABLE", - /* 491 */ "signed ::= NK_INTEGER", - /* 492 */ "signed ::= NK_PLUS NK_INTEGER", - /* 493 */ "signed ::= NK_MINUS NK_INTEGER", - /* 494 */ "signed ::= NK_FLOAT", - /* 495 */ "signed ::= NK_PLUS NK_FLOAT", - /* 496 */ "signed ::= NK_MINUS NK_FLOAT", - /* 497 */ "signed_literal ::= signed", - /* 498 */ "signed_literal ::= NK_STRING", - /* 499 */ "signed_literal ::= NK_BOOL", - /* 500 */ "signed_literal ::= TIMESTAMP NK_STRING", - /* 501 */ "signed_literal ::= duration_literal", - /* 502 */ "signed_literal ::= NULL", - /* 503 */ "signed_literal ::= literal_func", - /* 504 */ "signed_literal ::= NK_QUESTION", - /* 505 */ "literal_list ::= signed_literal", - /* 506 */ "literal_list ::= literal_list NK_COMMA signed_literal", - /* 507 */ "db_name ::= NK_ID", - /* 508 */ "table_name ::= NK_ID", - /* 509 */ "column_name ::= NK_ID", - /* 510 */ "function_name ::= NK_ID", - /* 511 */ "view_name ::= NK_ID", - /* 512 */ "table_alias ::= NK_ID", - /* 513 */ "column_alias ::= NK_ID", - /* 514 */ "column_alias ::= NK_ALIAS", - /* 515 */ "user_name ::= NK_ID", - /* 516 */ "topic_name ::= NK_ID", - /* 517 */ "stream_name ::= NK_ID", - /* 518 */ "cgroup_name ::= NK_ID", - /* 519 */ "index_name ::= NK_ID", - /* 520 */ "tsma_name ::= NK_ID", - /* 521 */ "expr_or_subquery ::= expression", - /* 522 */ "expression ::= literal", - /* 523 */ "expression ::= pseudo_column", - /* 524 */ "expression ::= column_reference", - /* 525 */ "expression ::= function_expression", - /* 526 */ "expression ::= case_when_expression", - /* 527 */ "expression ::= NK_LP expression NK_RP", - /* 528 */ "expression ::= NK_PLUS expr_or_subquery", - /* 529 */ "expression ::= NK_MINUS expr_or_subquery", - /* 530 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", - /* 531 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", - /* 532 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", - /* 533 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", - /* 534 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", - /* 535 */ "expression ::= column_reference NK_ARROW NK_STRING", - /* 536 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", - /* 537 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", - /* 538 */ "expression_list ::= expr_or_subquery", - /* 539 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", - /* 540 */ "column_reference ::= column_name", - /* 541 */ "column_reference ::= table_name NK_DOT column_name", - /* 542 */ "column_reference ::= NK_ALIAS", - /* 543 */ "column_reference ::= table_name NK_DOT NK_ALIAS", - /* 544 */ "pseudo_column ::= ROWTS", - /* 545 */ "pseudo_column ::= TBNAME", - /* 546 */ "pseudo_column ::= table_name NK_DOT TBNAME", - /* 547 */ "pseudo_column ::= QSTART", - /* 548 */ "pseudo_column ::= QEND", - /* 549 */ "pseudo_column ::= QDURATION", - /* 550 */ "pseudo_column ::= WSTART", - /* 551 */ "pseudo_column ::= WEND", - /* 552 */ "pseudo_column ::= WDURATION", - /* 553 */ "pseudo_column ::= IROWTS", - /* 554 */ "pseudo_column ::= ISFILLED", - /* 555 */ "pseudo_column ::= QTAGS", - /* 556 */ "function_expression ::= function_name NK_LP expression_list NK_RP", - /* 557 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", - /* 558 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", - /* 559 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP", - /* 560 */ "function_expression ::= literal_func", - /* 561 */ "literal_func ::= noarg_func NK_LP NK_RP", - /* 562 */ "literal_func ::= NOW", - /* 563 */ "literal_func ::= TODAY", - /* 564 */ "noarg_func ::= NOW", - /* 565 */ "noarg_func ::= TODAY", - /* 566 */ "noarg_func ::= TIMEZONE", - /* 567 */ "noarg_func ::= DATABASE", - /* 568 */ "noarg_func ::= CLIENT_VERSION", - /* 569 */ "noarg_func ::= SERVER_VERSION", - /* 570 */ "noarg_func ::= SERVER_STATUS", - /* 571 */ "noarg_func ::= CURRENT_USER", - /* 572 */ "noarg_func ::= USER", - /* 573 */ "star_func ::= COUNT", - /* 574 */ "star_func ::= FIRST", - /* 575 */ "star_func ::= LAST", - /* 576 */ "star_func ::= LAST_ROW", - /* 577 */ "star_func_para_list ::= NK_STAR", - /* 578 */ "star_func_para_list ::= other_para_list", - /* 579 */ "other_para_list ::= star_func_para", - /* 580 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", - /* 581 */ "star_func_para ::= expr_or_subquery", - /* 582 */ "star_func_para ::= table_name NK_DOT NK_STAR", - /* 583 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", - /* 584 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", - /* 585 */ "when_then_list ::= when_then_expr", - /* 586 */ "when_then_list ::= when_then_list when_then_expr", - /* 587 */ "when_then_expr ::= WHEN common_expression THEN common_expression", - /* 588 */ "case_when_else_opt ::=", - /* 589 */ "case_when_else_opt ::= ELSE common_expression", - /* 590 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", - /* 591 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", - /* 592 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", - /* 593 */ "predicate ::= expr_or_subquery IS NULL", - /* 594 */ "predicate ::= expr_or_subquery IS NOT NULL", - /* 595 */ "predicate ::= expr_or_subquery in_op in_predicate_value", - /* 596 */ "compare_op ::= NK_LT", - /* 597 */ "compare_op ::= NK_GT", - /* 598 */ "compare_op ::= NK_LE", - /* 599 */ "compare_op ::= NK_GE", - /* 600 */ "compare_op ::= NK_NE", - /* 601 */ "compare_op ::= NK_EQ", - /* 602 */ "compare_op ::= LIKE", - /* 603 */ "compare_op ::= NOT LIKE", - /* 604 */ "compare_op ::= MATCH", - /* 605 */ "compare_op ::= NMATCH", - /* 606 */ "compare_op ::= CONTAINS", - /* 607 */ "in_op ::= IN", - /* 608 */ "in_op ::= NOT IN", - /* 609 */ "in_predicate_value ::= NK_LP literal_list NK_RP", - /* 610 */ "boolean_value_expression ::= boolean_primary", - /* 611 */ "boolean_value_expression ::= NOT boolean_primary", - /* 612 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", - /* 613 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", - /* 614 */ "boolean_primary ::= predicate", - /* 615 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", - /* 616 */ "common_expression ::= expr_or_subquery", - /* 617 */ "common_expression ::= boolean_value_expression", - /* 618 */ "from_clause_opt ::=", - /* 619 */ "from_clause_opt ::= FROM table_reference_list", - /* 620 */ "table_reference_list ::= table_reference", - /* 621 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", - /* 622 */ "table_reference ::= table_primary", - /* 623 */ "table_reference ::= joined_table", - /* 624 */ "table_primary ::= table_name alias_opt", - /* 625 */ "table_primary ::= db_name NK_DOT table_name alias_opt", - /* 626 */ "table_primary ::= subquery alias_opt", - /* 627 */ "table_primary ::= parenthesized_joined_table", - /* 628 */ "alias_opt ::=", - /* 629 */ "alias_opt ::= table_alias", - /* 630 */ "alias_opt ::= AS table_alias", - /* 631 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", - /* 632 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", - /* 633 */ "joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt", - /* 634 */ "join_type ::=", - /* 635 */ "join_type ::= INNER", - /* 636 */ "join_type ::= LEFT", - /* 637 */ "join_type ::= RIGHT", - /* 638 */ "join_type ::= FULL", - /* 639 */ "join_subtype ::=", - /* 640 */ "join_subtype ::= OUTER", - /* 641 */ "join_subtype ::= SEMI", - /* 642 */ "join_subtype ::= ANTI", - /* 643 */ "join_subtype ::= ASOF", - /* 644 */ "join_subtype ::= WINDOW", - /* 645 */ "join_on_clause_opt ::=", - /* 646 */ "join_on_clause_opt ::= ON search_condition", - /* 647 */ "window_offset_clause_opt ::=", - /* 648 */ "window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP", - /* 649 */ "window_offset_literal ::= NK_VARIABLE", - /* 650 */ "window_offset_literal ::= NK_MINUS NK_VARIABLE", - /* 651 */ "jlimit_clause_opt ::=", - /* 652 */ "jlimit_clause_opt ::= JLIMIT NK_INTEGER", - /* 653 */ "query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", - /* 654 */ "hint_list ::=", - /* 655 */ "hint_list ::= NK_HINT", - /* 656 */ "tag_mode_opt ::=", - /* 657 */ "tag_mode_opt ::= TAGS", - /* 658 */ "set_quantifier_opt ::=", - /* 659 */ "set_quantifier_opt ::= DISTINCT", - /* 660 */ "set_quantifier_opt ::= ALL", - /* 661 */ "select_list ::= select_item", - /* 662 */ "select_list ::= select_list NK_COMMA select_item", - /* 663 */ "select_item ::= NK_STAR", - /* 664 */ "select_item ::= common_expression", - /* 665 */ "select_item ::= common_expression column_alias", - /* 666 */ "select_item ::= common_expression AS column_alias", - /* 667 */ "select_item ::= table_name NK_DOT NK_STAR", - /* 668 */ "where_clause_opt ::=", - /* 669 */ "where_clause_opt ::= WHERE search_condition", - /* 670 */ "partition_by_clause_opt ::=", - /* 671 */ "partition_by_clause_opt ::= PARTITION BY partition_list", - /* 672 */ "partition_list ::= partition_item", - /* 673 */ "partition_list ::= partition_list NK_COMMA partition_item", - /* 674 */ "partition_item ::= expr_or_subquery", - /* 675 */ "partition_item ::= expr_or_subquery column_alias", - /* 676 */ "partition_item ::= expr_or_subquery AS column_alias", - /* 677 */ "twindow_clause_opt ::=", - /* 678 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP", - /* 679 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", - /* 680 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt", - /* 681 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt", - /* 682 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", - /* 683 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP", - /* 684 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP", - /* 685 */ "sliding_opt ::=", - /* 686 */ "sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP", - /* 687 */ "interval_sliding_duration_literal ::= NK_VARIABLE", - /* 688 */ "interval_sliding_duration_literal ::= NK_STRING", - /* 689 */ "interval_sliding_duration_literal ::= NK_INTEGER", - /* 690 */ "fill_opt ::=", - /* 691 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", - /* 692 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP", - /* 693 */ "fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP", - /* 694 */ "fill_mode ::= NONE", - /* 695 */ "fill_mode ::= PREV", - /* 696 */ "fill_mode ::= NULL", - /* 697 */ "fill_mode ::= NULL_F", - /* 698 */ "fill_mode ::= LINEAR", - /* 699 */ "fill_mode ::= NEXT", - /* 700 */ "group_by_clause_opt ::=", - /* 701 */ "group_by_clause_opt ::= GROUP BY group_by_list", - /* 702 */ "group_by_list ::= expr_or_subquery", - /* 703 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", - /* 704 */ "having_clause_opt ::=", - /* 705 */ "having_clause_opt ::= HAVING search_condition", - /* 706 */ "range_opt ::=", - /* 707 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", - /* 708 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_RP", - /* 709 */ "every_opt ::=", - /* 710 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", - /* 711 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", - /* 712 */ "query_simple ::= query_specification", - /* 713 */ "query_simple ::= union_query_expression", - /* 714 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", - /* 715 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", - /* 716 */ "query_simple_or_subquery ::= query_simple", - /* 717 */ "query_simple_or_subquery ::= subquery", - /* 718 */ "query_or_subquery ::= query_expression", - /* 719 */ "query_or_subquery ::= subquery", - /* 720 */ "order_by_clause_opt ::=", - /* 721 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", - /* 722 */ "slimit_clause_opt ::=", - /* 723 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", - /* 724 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", - /* 725 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 726 */ "limit_clause_opt ::=", - /* 727 */ "limit_clause_opt ::= LIMIT NK_INTEGER", - /* 728 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", - /* 729 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 730 */ "subquery ::= NK_LP query_expression NK_RP", - /* 731 */ "subquery ::= NK_LP subquery NK_RP", - /* 732 */ "search_condition ::= common_expression", - /* 733 */ "sort_specification_list ::= sort_specification", - /* 734 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", - /* 735 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", - /* 736 */ "ordering_specification_opt ::=", - /* 737 */ "ordering_specification_opt ::= ASC", - /* 738 */ "ordering_specification_opt ::= DESC", - /* 739 */ "null_ordering_opt ::=", - /* 740 */ "null_ordering_opt ::= NULLS FIRST", - /* 741 */ "null_ordering_opt ::= NULLS LAST", - /* 742 */ "column_options ::=", - /* 743 */ "column_options ::= column_options PRIMARY KEY", - /* 744 */ "column_options ::= column_options ENCODE NK_STRING", - /* 745 */ "column_options ::= column_options COMPRESS NK_STRING", - /* 746 */ "column_options ::= column_options LEVEL NK_STRING", + /* 430 */ "cmd ::= BALANCE VGROUP LEADER DATABASE db_name", + /* 431 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", + /* 432 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", + /* 433 */ "cmd ::= SPLIT VGROUP NK_INTEGER", + /* 434 */ "on_vgroup_id ::=", + /* 435 */ "on_vgroup_id ::= ON NK_INTEGER", + /* 436 */ "dnode_list ::= DNODE NK_INTEGER", + /* 437 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", + /* 438 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", + /* 439 */ "cmd ::= query_or_subquery", + /* 440 */ "cmd ::= insert_query", + /* 441 */ "insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", + /* 442 */ "insert_query ::= INSERT INTO full_table_name query_or_subquery", + /* 443 */ "tags_literal ::= NK_INTEGER", + /* 444 */ "tags_literal ::= NK_INTEGER NK_PLUS duration_literal", + /* 445 */ "tags_literal ::= NK_INTEGER NK_MINUS duration_literal", + /* 446 */ "tags_literal ::= NK_PLUS NK_INTEGER", + /* 447 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal", + /* 448 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal", + /* 449 */ "tags_literal ::= NK_MINUS NK_INTEGER", + /* 450 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal", + /* 451 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal", + /* 452 */ "tags_literal ::= NK_FLOAT", + /* 453 */ "tags_literal ::= NK_PLUS NK_FLOAT", + /* 454 */ "tags_literal ::= NK_MINUS NK_FLOAT", + /* 455 */ "tags_literal ::= NK_BIN", + /* 456 */ "tags_literal ::= NK_BIN NK_PLUS duration_literal", + /* 457 */ "tags_literal ::= NK_BIN NK_MINUS duration_literal", + /* 458 */ "tags_literal ::= NK_PLUS NK_BIN", + /* 459 */ "tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal", + /* 460 */ "tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal", + /* 461 */ "tags_literal ::= NK_MINUS NK_BIN", + /* 462 */ "tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal", + /* 463 */ "tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal", + /* 464 */ "tags_literal ::= NK_HEX", + /* 465 */ "tags_literal ::= NK_HEX NK_PLUS duration_literal", + /* 466 */ "tags_literal ::= NK_HEX NK_MINUS duration_literal", + /* 467 */ "tags_literal ::= NK_PLUS NK_HEX", + /* 468 */ "tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal", + /* 469 */ "tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal", + /* 470 */ "tags_literal ::= NK_MINUS NK_HEX", + /* 471 */ "tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal", + /* 472 */ "tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal", + /* 473 */ "tags_literal ::= NK_STRING", + /* 474 */ "tags_literal ::= NK_STRING NK_PLUS duration_literal", + /* 475 */ "tags_literal ::= NK_STRING NK_MINUS duration_literal", + /* 476 */ "tags_literal ::= NK_BOOL", + /* 477 */ "tags_literal ::= NULL", + /* 478 */ "tags_literal ::= literal_func", + /* 479 */ "tags_literal ::= literal_func NK_PLUS duration_literal", + /* 480 */ "tags_literal ::= literal_func NK_MINUS duration_literal", + /* 481 */ "tags_literal_list ::= tags_literal", + /* 482 */ "tags_literal_list ::= tags_literal_list NK_COMMA tags_literal", + /* 483 */ "literal ::= NK_INTEGER", + /* 484 */ "literal ::= NK_FLOAT", + /* 485 */ "literal ::= NK_STRING", + /* 486 */ "literal ::= NK_BOOL", + /* 487 */ "literal ::= TIMESTAMP NK_STRING", + /* 488 */ "literal ::= duration_literal", + /* 489 */ "literal ::= NULL", + /* 490 */ "literal ::= NK_QUESTION", + /* 491 */ "duration_literal ::= NK_VARIABLE", + /* 492 */ "signed ::= NK_INTEGER", + /* 493 */ "signed ::= NK_PLUS NK_INTEGER", + /* 494 */ "signed ::= NK_MINUS NK_INTEGER", + /* 495 */ "signed ::= NK_FLOAT", + /* 496 */ "signed ::= NK_PLUS NK_FLOAT", + /* 497 */ "signed ::= NK_MINUS NK_FLOAT", + /* 498 */ "signed_literal ::= signed", + /* 499 */ "signed_literal ::= NK_STRING", + /* 500 */ "signed_literal ::= NK_BOOL", + /* 501 */ "signed_literal ::= TIMESTAMP NK_STRING", + /* 502 */ "signed_literal ::= duration_literal", + /* 503 */ "signed_literal ::= NULL", + /* 504 */ "signed_literal ::= literal_func", + /* 505 */ "signed_literal ::= NK_QUESTION", + /* 506 */ "literal_list ::= signed_literal", + /* 507 */ "literal_list ::= literal_list NK_COMMA signed_literal", + /* 508 */ "db_name ::= NK_ID", + /* 509 */ "table_name ::= NK_ID", + /* 510 */ "column_name ::= NK_ID", + /* 511 */ "function_name ::= NK_ID", + /* 512 */ "view_name ::= NK_ID", + /* 513 */ "table_alias ::= NK_ID", + /* 514 */ "column_alias ::= NK_ID", + /* 515 */ "column_alias ::= NK_ALIAS", + /* 516 */ "user_name ::= NK_ID", + /* 517 */ "topic_name ::= NK_ID", + /* 518 */ "stream_name ::= NK_ID", + /* 519 */ "cgroup_name ::= NK_ID", + /* 520 */ "index_name ::= NK_ID", + /* 521 */ "tsma_name ::= NK_ID", + /* 522 */ "expr_or_subquery ::= expression", + /* 523 */ "expression ::= literal", + /* 524 */ "expression ::= pseudo_column", + /* 525 */ "expression ::= column_reference", + /* 526 */ "expression ::= function_expression", + /* 527 */ "expression ::= case_when_expression", + /* 528 */ "expression ::= NK_LP expression NK_RP", + /* 529 */ "expression ::= NK_PLUS expr_or_subquery", + /* 530 */ "expression ::= NK_MINUS expr_or_subquery", + /* 531 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", + /* 532 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", + /* 533 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", + /* 534 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", + /* 535 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", + /* 536 */ "expression ::= column_reference NK_ARROW NK_STRING", + /* 537 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", + /* 538 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", + /* 539 */ "expression_list ::= expr_or_subquery", + /* 540 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", + /* 541 */ "column_reference ::= column_name", + /* 542 */ "column_reference ::= table_name NK_DOT column_name", + /* 543 */ "column_reference ::= NK_ALIAS", + /* 544 */ "column_reference ::= table_name NK_DOT NK_ALIAS", + /* 545 */ "pseudo_column ::= ROWTS", + /* 546 */ "pseudo_column ::= TBNAME", + /* 547 */ "pseudo_column ::= table_name NK_DOT TBNAME", + /* 548 */ "pseudo_column ::= QSTART", + /* 549 */ "pseudo_column ::= QEND", + /* 550 */ "pseudo_column ::= QDURATION", + /* 551 */ "pseudo_column ::= WSTART", + /* 552 */ "pseudo_column ::= WEND", + /* 553 */ "pseudo_column ::= WDURATION", + /* 554 */ "pseudo_column ::= IROWTS", + /* 555 */ "pseudo_column ::= ISFILLED", + /* 556 */ "pseudo_column ::= QTAGS", + /* 557 */ "function_expression ::= function_name NK_LP expression_list NK_RP", + /* 558 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", + /* 559 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", + /* 560 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP", + /* 561 */ "function_expression ::= literal_func", + /* 562 */ "literal_func ::= noarg_func NK_LP NK_RP", + /* 563 */ "literal_func ::= NOW", + /* 564 */ "literal_func ::= TODAY", + /* 565 */ "noarg_func ::= NOW", + /* 566 */ "noarg_func ::= TODAY", + /* 567 */ "noarg_func ::= TIMEZONE", + /* 568 */ "noarg_func ::= DATABASE", + /* 569 */ "noarg_func ::= CLIENT_VERSION", + /* 570 */ "noarg_func ::= SERVER_VERSION", + /* 571 */ "noarg_func ::= SERVER_STATUS", + /* 572 */ "noarg_func ::= CURRENT_USER", + /* 573 */ "noarg_func ::= USER", + /* 574 */ "star_func ::= COUNT", + /* 575 */ "star_func ::= FIRST", + /* 576 */ "star_func ::= LAST", + /* 577 */ "star_func ::= LAST_ROW", + /* 578 */ "star_func_para_list ::= NK_STAR", + /* 579 */ "star_func_para_list ::= other_para_list", + /* 580 */ "other_para_list ::= star_func_para", + /* 581 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", + /* 582 */ "star_func_para ::= expr_or_subquery", + /* 583 */ "star_func_para ::= table_name NK_DOT NK_STAR", + /* 584 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", + /* 585 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", + /* 586 */ "when_then_list ::= when_then_expr", + /* 587 */ "when_then_list ::= when_then_list when_then_expr", + /* 588 */ "when_then_expr ::= WHEN common_expression THEN common_expression", + /* 589 */ "case_when_else_opt ::=", + /* 590 */ "case_when_else_opt ::= ELSE common_expression", + /* 591 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", + /* 592 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", + /* 593 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", + /* 594 */ "predicate ::= expr_or_subquery IS NULL", + /* 595 */ "predicate ::= expr_or_subquery IS NOT NULL", + /* 596 */ "predicate ::= expr_or_subquery in_op in_predicate_value", + /* 597 */ "compare_op ::= NK_LT", + /* 598 */ "compare_op ::= NK_GT", + /* 599 */ "compare_op ::= NK_LE", + /* 600 */ "compare_op ::= NK_GE", + /* 601 */ "compare_op ::= NK_NE", + /* 602 */ "compare_op ::= NK_EQ", + /* 603 */ "compare_op ::= LIKE", + /* 604 */ "compare_op ::= NOT LIKE", + /* 605 */ "compare_op ::= MATCH", + /* 606 */ "compare_op ::= NMATCH", + /* 607 */ "compare_op ::= CONTAINS", + /* 608 */ "in_op ::= IN", + /* 609 */ "in_op ::= NOT IN", + /* 610 */ "in_predicate_value ::= NK_LP literal_list NK_RP", + /* 611 */ "boolean_value_expression ::= boolean_primary", + /* 612 */ "boolean_value_expression ::= NOT boolean_primary", + /* 613 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", + /* 614 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", + /* 615 */ "boolean_primary ::= predicate", + /* 616 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", + /* 617 */ "common_expression ::= expr_or_subquery", + /* 618 */ "common_expression ::= boolean_value_expression", + /* 619 */ "from_clause_opt ::=", + /* 620 */ "from_clause_opt ::= FROM table_reference_list", + /* 621 */ "table_reference_list ::= table_reference", + /* 622 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", + /* 623 */ "table_reference ::= table_primary", + /* 624 */ "table_reference ::= joined_table", + /* 625 */ "table_primary ::= table_name alias_opt", + /* 626 */ "table_primary ::= db_name NK_DOT table_name alias_opt", + /* 627 */ "table_primary ::= subquery alias_opt", + /* 628 */ "table_primary ::= parenthesized_joined_table", + /* 629 */ "alias_opt ::=", + /* 630 */ "alias_opt ::= table_alias", + /* 631 */ "alias_opt ::= AS table_alias", + /* 632 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", + /* 633 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", + /* 634 */ "joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt", + /* 635 */ "join_type ::=", + /* 636 */ "join_type ::= INNER", + /* 637 */ "join_type ::= LEFT", + /* 638 */ "join_type ::= RIGHT", + /* 639 */ "join_type ::= FULL", + /* 640 */ "join_subtype ::=", + /* 641 */ "join_subtype ::= OUTER", + /* 642 */ "join_subtype ::= SEMI", + /* 643 */ "join_subtype ::= ANTI", + /* 644 */ "join_subtype ::= ASOF", + /* 645 */ "join_subtype ::= WINDOW", + /* 646 */ "join_on_clause_opt ::=", + /* 647 */ "join_on_clause_opt ::= ON search_condition", + /* 648 */ "window_offset_clause_opt ::=", + /* 649 */ "window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP", + /* 650 */ "window_offset_literal ::= NK_VARIABLE", + /* 651 */ "window_offset_literal ::= NK_MINUS NK_VARIABLE", + /* 652 */ "jlimit_clause_opt ::=", + /* 653 */ "jlimit_clause_opt ::= JLIMIT NK_INTEGER", + /* 654 */ "query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", + /* 655 */ "hint_list ::=", + /* 656 */ "hint_list ::= NK_HINT", + /* 657 */ "tag_mode_opt ::=", + /* 658 */ "tag_mode_opt ::= TAGS", + /* 659 */ "set_quantifier_opt ::=", + /* 660 */ "set_quantifier_opt ::= DISTINCT", + /* 661 */ "set_quantifier_opt ::= ALL", + /* 662 */ "select_list ::= select_item", + /* 663 */ "select_list ::= select_list NK_COMMA select_item", + /* 664 */ "select_item ::= NK_STAR", + /* 665 */ "select_item ::= common_expression", + /* 666 */ "select_item ::= common_expression column_alias", + /* 667 */ "select_item ::= common_expression AS column_alias", + /* 668 */ "select_item ::= table_name NK_DOT NK_STAR", + /* 669 */ "where_clause_opt ::=", + /* 670 */ "where_clause_opt ::= WHERE search_condition", + /* 671 */ "partition_by_clause_opt ::=", + /* 672 */ "partition_by_clause_opt ::= PARTITION BY partition_list", + /* 673 */ "partition_list ::= partition_item", + /* 674 */ "partition_list ::= partition_list NK_COMMA partition_item", + /* 675 */ "partition_item ::= expr_or_subquery", + /* 676 */ "partition_item ::= expr_or_subquery column_alias", + /* 677 */ "partition_item ::= expr_or_subquery AS column_alias", + /* 678 */ "twindow_clause_opt ::=", + /* 679 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP", + /* 680 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", + /* 681 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt", + /* 682 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt", + /* 683 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", + /* 684 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP", + /* 685 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP", + /* 686 */ "sliding_opt ::=", + /* 687 */ "sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP", + /* 688 */ "interval_sliding_duration_literal ::= NK_VARIABLE", + /* 689 */ "interval_sliding_duration_literal ::= NK_STRING", + /* 690 */ "interval_sliding_duration_literal ::= NK_INTEGER", + /* 691 */ "fill_opt ::=", + /* 692 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", + /* 693 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP", + /* 694 */ "fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP", + /* 695 */ "fill_mode ::= NONE", + /* 696 */ "fill_mode ::= PREV", + /* 697 */ "fill_mode ::= NULL", + /* 698 */ "fill_mode ::= NULL_F", + /* 699 */ "fill_mode ::= LINEAR", + /* 700 */ "fill_mode ::= NEXT", + /* 701 */ "group_by_clause_opt ::=", + /* 702 */ "group_by_clause_opt ::= GROUP BY group_by_list", + /* 703 */ "group_by_list ::= expr_or_subquery", + /* 704 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", + /* 705 */ "having_clause_opt ::=", + /* 706 */ "having_clause_opt ::= HAVING search_condition", + /* 707 */ "range_opt ::=", + /* 708 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", + /* 709 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_RP", + /* 710 */ "every_opt ::=", + /* 711 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", + /* 712 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", + /* 713 */ "query_simple ::= query_specification", + /* 714 */ "query_simple ::= union_query_expression", + /* 715 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", + /* 716 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", + /* 717 */ "query_simple_or_subquery ::= query_simple", + /* 718 */ "query_simple_or_subquery ::= subquery", + /* 719 */ "query_or_subquery ::= query_expression", + /* 720 */ "query_or_subquery ::= subquery", + /* 721 */ "order_by_clause_opt ::=", + /* 722 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", + /* 723 */ "slimit_clause_opt ::=", + /* 724 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", + /* 725 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", + /* 726 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 727 */ "limit_clause_opt ::=", + /* 728 */ "limit_clause_opt ::= LIMIT NK_INTEGER", + /* 729 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", + /* 730 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 731 */ "subquery ::= NK_LP query_expression NK_RP", + /* 732 */ "subquery ::= NK_LP subquery NK_RP", + /* 733 */ "search_condition ::= common_expression", + /* 734 */ "sort_specification_list ::= sort_specification", + /* 735 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", + /* 736 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", + /* 737 */ "ordering_specification_opt ::=", + /* 738 */ "ordering_specification_opt ::= ASC", + /* 739 */ "ordering_specification_opt ::= DESC", + /* 740 */ "null_ordering_opt ::=", + /* 741 */ "null_ordering_opt ::= NULLS FIRST", + /* 742 */ "null_ordering_opt ::= NULLS LAST", + /* 743 */ "column_options ::=", + /* 744 */ "column_options ::= column_options PRIMARY KEY", + /* 745 */ "column_options ::= column_options ENCODE NK_STRING", + /* 746 */ "column_options ::= column_options COMPRESS NK_STRING", + /* 747 */ "column_options ::= column_options LEVEL NK_STRING", }; #endif /* NDEBUG */ @@ -3488,7 +3864,7 @@ static YYACTIONTYPE yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ - assert( i>=0 && i=0 && i<(int)(sizeof(yy_action)/sizeof(yy_action[0])) ); return yy_action[i]; } }while(1); @@ -4040,323 +4416,324 @@ static const YYCODETYPE yyRuleInfoLhs[] = { 376, /* (427) cmd ::= KILL COMPACT NK_INTEGER */ 376, /* (428) cmd ::= BALANCE VGROUP */ 376, /* (429) cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ - 376, /* (430) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - 376, /* (431) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - 376, /* (432) cmd ::= SPLIT VGROUP NK_INTEGER */ - 485, /* (433) on_vgroup_id ::= */ - 485, /* (434) on_vgroup_id ::= ON NK_INTEGER */ - 486, /* (435) dnode_list ::= DNODE NK_INTEGER */ - 486, /* (436) dnode_list ::= dnode_list DNODE NK_INTEGER */ - 376, /* (437) cmd ::= DELETE FROM full_table_name where_clause_opt */ - 376, /* (438) cmd ::= query_or_subquery */ - 376, /* (439) cmd ::= insert_query */ - 468, /* (440) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - 468, /* (441) insert_query ::= INSERT INTO full_table_name query_or_subquery */ - 423, /* (442) tags_literal ::= NK_INTEGER */ - 423, /* (443) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - 423, /* (444) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ - 423, /* (445) tags_literal ::= NK_PLUS NK_INTEGER */ - 423, /* (446) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - 423, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ - 423, /* (448) tags_literal ::= NK_MINUS NK_INTEGER */ - 423, /* (449) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ - 423, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ - 423, /* (451) tags_literal ::= NK_FLOAT */ - 423, /* (452) tags_literal ::= NK_PLUS NK_FLOAT */ - 423, /* (453) tags_literal ::= NK_MINUS NK_FLOAT */ - 423, /* (454) tags_literal ::= NK_BIN */ - 423, /* (455) tags_literal ::= NK_BIN NK_PLUS duration_literal */ - 423, /* (456) tags_literal ::= NK_BIN NK_MINUS duration_literal */ - 423, /* (457) tags_literal ::= NK_PLUS NK_BIN */ - 423, /* (458) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ - 423, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ - 423, /* (460) tags_literal ::= NK_MINUS NK_BIN */ - 423, /* (461) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ - 423, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ - 423, /* (463) tags_literal ::= NK_HEX */ - 423, /* (464) tags_literal ::= NK_HEX NK_PLUS duration_literal */ - 423, /* (465) tags_literal ::= NK_HEX NK_MINUS duration_literal */ - 423, /* (466) tags_literal ::= NK_PLUS NK_HEX */ - 423, /* (467) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ - 423, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ - 423, /* (469) tags_literal ::= NK_MINUS NK_HEX */ - 423, /* (470) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ - 423, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ - 423, /* (472) tags_literal ::= NK_STRING */ - 423, /* (473) tags_literal ::= NK_STRING NK_PLUS duration_literal */ - 423, /* (474) tags_literal ::= NK_STRING NK_MINUS duration_literal */ - 423, /* (475) tags_literal ::= NK_BOOL */ - 423, /* (476) tags_literal ::= NULL */ - 423, /* (477) tags_literal ::= literal_func */ - 423, /* (478) tags_literal ::= literal_func NK_PLUS duration_literal */ - 423, /* (479) tags_literal ::= literal_func NK_MINUS duration_literal */ - 426, /* (480) tags_literal_list ::= tags_literal */ - 426, /* (481) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ - 379, /* (482) literal ::= NK_INTEGER */ - 379, /* (483) literal ::= NK_FLOAT */ - 379, /* (484) literal ::= NK_STRING */ - 379, /* (485) literal ::= NK_BOOL */ - 379, /* (486) literal ::= TIMESTAMP NK_STRING */ - 379, /* (487) literal ::= duration_literal */ - 379, /* (488) literal ::= NULL */ - 379, /* (489) literal ::= NK_QUESTION */ - 436, /* (490) duration_literal ::= NK_VARIABLE */ - 408, /* (491) signed ::= NK_INTEGER */ - 408, /* (492) signed ::= NK_PLUS NK_INTEGER */ - 408, /* (493) signed ::= NK_MINUS NK_INTEGER */ - 408, /* (494) signed ::= NK_FLOAT */ - 408, /* (495) signed ::= NK_PLUS NK_FLOAT */ - 408, /* (496) signed ::= NK_MINUS NK_FLOAT */ - 488, /* (497) signed_literal ::= signed */ - 488, /* (498) signed_literal ::= NK_STRING */ - 488, /* (499) signed_literal ::= NK_BOOL */ - 488, /* (500) signed_literal ::= TIMESTAMP NK_STRING */ - 488, /* (501) signed_literal ::= duration_literal */ - 488, /* (502) signed_literal ::= NULL */ - 488, /* (503) signed_literal ::= literal_func */ - 488, /* (504) signed_literal ::= NK_QUESTION */ - 489, /* (505) literal_list ::= signed_literal */ - 489, /* (506) literal_list ::= literal_list NK_COMMA signed_literal */ - 391, /* (507) db_name ::= NK_ID */ - 392, /* (508) table_name ::= NK_ID */ - 420, /* (509) column_name ::= NK_ID */ - 438, /* (510) function_name ::= NK_ID */ - 474, /* (511) view_name ::= NK_ID */ - 490, /* (512) table_alias ::= NK_ID */ - 449, /* (513) column_alias ::= NK_ID */ - 449, /* (514) column_alias ::= NK_ALIAS */ - 384, /* (515) user_name ::= NK_ID */ - 393, /* (516) topic_name ::= NK_ID */ - 475, /* (517) stream_name ::= NK_ID */ - 465, /* (518) cgroup_name ::= NK_ID */ - 456, /* (519) index_name ::= NK_ID */ - 450, /* (520) tsma_name ::= NK_ID */ - 491, /* (521) expr_or_subquery ::= expression */ - 484, /* (522) expression ::= literal */ - 484, /* (523) expression ::= pseudo_column */ - 484, /* (524) expression ::= column_reference */ - 484, /* (525) expression ::= function_expression */ - 484, /* (526) expression ::= case_when_expression */ - 484, /* (527) expression ::= NK_LP expression NK_RP */ - 484, /* (528) expression ::= NK_PLUS expr_or_subquery */ - 484, /* (529) expression ::= NK_MINUS expr_or_subquery */ - 484, /* (530) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - 484, /* (531) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - 484, /* (532) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - 484, /* (533) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - 484, /* (534) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - 484, /* (535) expression ::= column_reference NK_ARROW NK_STRING */ - 484, /* (536) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - 484, /* (537) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - 461, /* (538) expression_list ::= expr_or_subquery */ - 461, /* (539) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - 493, /* (540) column_reference ::= column_name */ - 493, /* (541) column_reference ::= table_name NK_DOT column_name */ - 493, /* (542) column_reference ::= NK_ALIAS */ - 493, /* (543) column_reference ::= table_name NK_DOT NK_ALIAS */ - 492, /* (544) pseudo_column ::= ROWTS */ - 492, /* (545) pseudo_column ::= TBNAME */ - 492, /* (546) pseudo_column ::= table_name NK_DOT TBNAME */ - 492, /* (547) pseudo_column ::= QSTART */ - 492, /* (548) pseudo_column ::= QEND */ - 492, /* (549) pseudo_column ::= QDURATION */ - 492, /* (550) pseudo_column ::= WSTART */ - 492, /* (551) pseudo_column ::= WEND */ - 492, /* (552) pseudo_column ::= WDURATION */ - 492, /* (553) pseudo_column ::= IROWTS */ - 492, /* (554) pseudo_column ::= ISFILLED */ - 492, /* (555) pseudo_column ::= QTAGS */ - 494, /* (556) function_expression ::= function_name NK_LP expression_list NK_RP */ - 494, /* (557) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - 494, /* (558) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - 494, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ - 494, /* (560) function_expression ::= literal_func */ - 487, /* (561) literal_func ::= noarg_func NK_LP NK_RP */ - 487, /* (562) literal_func ::= NOW */ - 487, /* (563) literal_func ::= TODAY */ - 498, /* (564) noarg_func ::= NOW */ - 498, /* (565) noarg_func ::= TODAY */ - 498, /* (566) noarg_func ::= TIMEZONE */ - 498, /* (567) noarg_func ::= DATABASE */ - 498, /* (568) noarg_func ::= CLIENT_VERSION */ - 498, /* (569) noarg_func ::= SERVER_VERSION */ - 498, /* (570) noarg_func ::= SERVER_STATUS */ - 498, /* (571) noarg_func ::= CURRENT_USER */ - 498, /* (572) noarg_func ::= USER */ - 496, /* (573) star_func ::= COUNT */ - 496, /* (574) star_func ::= FIRST */ - 496, /* (575) star_func ::= LAST */ - 496, /* (576) star_func ::= LAST_ROW */ - 497, /* (577) star_func_para_list ::= NK_STAR */ - 497, /* (578) star_func_para_list ::= other_para_list */ - 499, /* (579) other_para_list ::= star_func_para */ - 499, /* (580) other_para_list ::= other_para_list NK_COMMA star_func_para */ - 500, /* (581) star_func_para ::= expr_or_subquery */ - 500, /* (582) star_func_para ::= table_name NK_DOT NK_STAR */ - 495, /* (583) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - 495, /* (584) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - 501, /* (585) when_then_list ::= when_then_expr */ - 501, /* (586) when_then_list ::= when_then_list when_then_expr */ - 504, /* (587) when_then_expr ::= WHEN common_expression THEN common_expression */ - 502, /* (588) case_when_else_opt ::= */ - 502, /* (589) case_when_else_opt ::= ELSE common_expression */ - 505, /* (590) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - 505, /* (591) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - 505, /* (592) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - 505, /* (593) predicate ::= expr_or_subquery IS NULL */ - 505, /* (594) predicate ::= expr_or_subquery IS NOT NULL */ - 505, /* (595) predicate ::= expr_or_subquery in_op in_predicate_value */ - 506, /* (596) compare_op ::= NK_LT */ - 506, /* (597) compare_op ::= NK_GT */ - 506, /* (598) compare_op ::= NK_LE */ - 506, /* (599) compare_op ::= NK_GE */ - 506, /* (600) compare_op ::= NK_NE */ - 506, /* (601) compare_op ::= NK_EQ */ - 506, /* (602) compare_op ::= LIKE */ - 506, /* (603) compare_op ::= NOT LIKE */ - 506, /* (604) compare_op ::= MATCH */ - 506, /* (605) compare_op ::= NMATCH */ - 506, /* (606) compare_op ::= CONTAINS */ - 507, /* (607) in_op ::= IN */ - 507, /* (608) in_op ::= NOT IN */ - 508, /* (609) in_predicate_value ::= NK_LP literal_list NK_RP */ - 509, /* (610) boolean_value_expression ::= boolean_primary */ - 509, /* (611) boolean_value_expression ::= NOT boolean_primary */ - 509, /* (612) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - 509, /* (613) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - 510, /* (614) boolean_primary ::= predicate */ - 510, /* (615) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - 503, /* (616) common_expression ::= expr_or_subquery */ - 503, /* (617) common_expression ::= boolean_value_expression */ - 511, /* (618) from_clause_opt ::= */ - 511, /* (619) from_clause_opt ::= FROM table_reference_list */ - 512, /* (620) table_reference_list ::= table_reference */ - 512, /* (621) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - 513, /* (622) table_reference ::= table_primary */ - 513, /* (623) table_reference ::= joined_table */ - 514, /* (624) table_primary ::= table_name alias_opt */ - 514, /* (625) table_primary ::= db_name NK_DOT table_name alias_opt */ - 514, /* (626) table_primary ::= subquery alias_opt */ - 514, /* (627) table_primary ::= parenthesized_joined_table */ - 516, /* (628) alias_opt ::= */ - 516, /* (629) alias_opt ::= table_alias */ - 516, /* (630) alias_opt ::= AS table_alias */ - 518, /* (631) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - 518, /* (632) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - 515, /* (633) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ - 519, /* (634) join_type ::= */ - 519, /* (635) join_type ::= INNER */ - 519, /* (636) join_type ::= LEFT */ - 519, /* (637) join_type ::= RIGHT */ - 519, /* (638) join_type ::= FULL */ - 520, /* (639) join_subtype ::= */ - 520, /* (640) join_subtype ::= OUTER */ - 520, /* (641) join_subtype ::= SEMI */ - 520, /* (642) join_subtype ::= ANTI */ - 520, /* (643) join_subtype ::= ASOF */ - 520, /* (644) join_subtype ::= WINDOW */ - 521, /* (645) join_on_clause_opt ::= */ - 521, /* (646) join_on_clause_opt ::= ON search_condition */ - 522, /* (647) window_offset_clause_opt ::= */ - 522, /* (648) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ - 524, /* (649) window_offset_literal ::= NK_VARIABLE */ - 524, /* (650) window_offset_literal ::= NK_MINUS NK_VARIABLE */ - 523, /* (651) jlimit_clause_opt ::= */ - 523, /* (652) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - 525, /* (653) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 526, /* (654) hint_list ::= */ - 526, /* (655) hint_list ::= NK_HINT */ - 528, /* (656) tag_mode_opt ::= */ - 528, /* (657) tag_mode_opt ::= TAGS */ - 527, /* (658) set_quantifier_opt ::= */ - 527, /* (659) set_quantifier_opt ::= DISTINCT */ - 527, /* (660) set_quantifier_opt ::= ALL */ - 529, /* (661) select_list ::= select_item */ - 529, /* (662) select_list ::= select_list NK_COMMA select_item */ - 537, /* (663) select_item ::= NK_STAR */ - 537, /* (664) select_item ::= common_expression */ - 537, /* (665) select_item ::= common_expression column_alias */ - 537, /* (666) select_item ::= common_expression AS column_alias */ - 537, /* (667) select_item ::= table_name NK_DOT NK_STAR */ - 464, /* (668) where_clause_opt ::= */ - 464, /* (669) where_clause_opt ::= WHERE search_condition */ - 530, /* (670) partition_by_clause_opt ::= */ - 530, /* (671) partition_by_clause_opt ::= PARTITION BY partition_list */ - 538, /* (672) partition_list ::= partition_item */ - 538, /* (673) partition_list ::= partition_list NK_COMMA partition_item */ - 539, /* (674) partition_item ::= expr_or_subquery */ - 539, /* (675) partition_item ::= expr_or_subquery column_alias */ - 539, /* (676) partition_item ::= expr_or_subquery AS column_alias */ - 534, /* (677) twindow_clause_opt ::= */ - 534, /* (678) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ - 534, /* (679) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - 534, /* (680) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - 534, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - 534, /* (682) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - 534, /* (683) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ - 534, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ - 457, /* (685) sliding_opt ::= */ - 457, /* (686) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ - 540, /* (687) interval_sliding_duration_literal ::= NK_VARIABLE */ - 540, /* (688) interval_sliding_duration_literal ::= NK_STRING */ - 540, /* (689) interval_sliding_duration_literal ::= NK_INTEGER */ - 533, /* (690) fill_opt ::= */ - 533, /* (691) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - 533, /* (692) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ - 533, /* (693) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ - 541, /* (694) fill_mode ::= NONE */ - 541, /* (695) fill_mode ::= PREV */ - 541, /* (696) fill_mode ::= NULL */ - 541, /* (697) fill_mode ::= NULL_F */ - 541, /* (698) fill_mode ::= LINEAR */ - 541, /* (699) fill_mode ::= NEXT */ - 535, /* (700) group_by_clause_opt ::= */ - 535, /* (701) group_by_clause_opt ::= GROUP BY group_by_list */ - 542, /* (702) group_by_list ::= expr_or_subquery */ - 542, /* (703) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 536, /* (704) having_clause_opt ::= */ - 536, /* (705) having_clause_opt ::= HAVING search_condition */ - 531, /* (706) range_opt ::= */ - 531, /* (707) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - 531, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ - 532, /* (709) every_opt ::= */ - 532, /* (710) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - 543, /* (711) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - 544, /* (712) query_simple ::= query_specification */ - 544, /* (713) query_simple ::= union_query_expression */ - 548, /* (714) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - 548, /* (715) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - 549, /* (716) query_simple_or_subquery ::= query_simple */ - 549, /* (717) query_simple_or_subquery ::= subquery */ - 463, /* (718) query_or_subquery ::= query_expression */ - 463, /* (719) query_or_subquery ::= subquery */ - 545, /* (720) order_by_clause_opt ::= */ - 545, /* (721) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 546, /* (722) slimit_clause_opt ::= */ - 546, /* (723) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - 546, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - 546, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 547, /* (726) limit_clause_opt ::= */ - 547, /* (727) limit_clause_opt ::= LIMIT NK_INTEGER */ - 547, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - 547, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 517, /* (730) subquery ::= NK_LP query_expression NK_RP */ - 517, /* (731) subquery ::= NK_LP subquery NK_RP */ - 394, /* (732) search_condition ::= common_expression */ - 550, /* (733) sort_specification_list ::= sort_specification */ - 550, /* (734) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - 551, /* (735) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 552, /* (736) ordering_specification_opt ::= */ - 552, /* (737) ordering_specification_opt ::= ASC */ - 552, /* (738) ordering_specification_opt ::= DESC */ - 553, /* (739) null_ordering_opt ::= */ - 553, /* (740) null_ordering_opt ::= NULLS FIRST */ - 553, /* (741) null_ordering_opt ::= NULLS LAST */ - 422, /* (742) column_options ::= */ - 422, /* (743) column_options ::= column_options PRIMARY KEY */ - 422, /* (744) column_options ::= column_options ENCODE NK_STRING */ - 422, /* (745) column_options ::= column_options COMPRESS NK_STRING */ - 422, /* (746) column_options ::= column_options LEVEL NK_STRING */ + 376, /* (430) cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ + 376, /* (431) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + 376, /* (432) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + 376, /* (433) cmd ::= SPLIT VGROUP NK_INTEGER */ + 485, /* (434) on_vgroup_id ::= */ + 485, /* (435) on_vgroup_id ::= ON NK_INTEGER */ + 486, /* (436) dnode_list ::= DNODE NK_INTEGER */ + 486, /* (437) dnode_list ::= dnode_list DNODE NK_INTEGER */ + 376, /* (438) cmd ::= DELETE FROM full_table_name where_clause_opt */ + 376, /* (439) cmd ::= query_or_subquery */ + 376, /* (440) cmd ::= insert_query */ + 468, /* (441) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + 468, /* (442) insert_query ::= INSERT INTO full_table_name query_or_subquery */ + 423, /* (443) tags_literal ::= NK_INTEGER */ + 423, /* (444) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + 423, /* (445) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ + 423, /* (446) tags_literal ::= NK_PLUS NK_INTEGER */ + 423, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + 423, /* (448) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ + 423, /* (449) tags_literal ::= NK_MINUS NK_INTEGER */ + 423, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ + 423, /* (451) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ + 423, /* (452) tags_literal ::= NK_FLOAT */ + 423, /* (453) tags_literal ::= NK_PLUS NK_FLOAT */ + 423, /* (454) tags_literal ::= NK_MINUS NK_FLOAT */ + 423, /* (455) tags_literal ::= NK_BIN */ + 423, /* (456) tags_literal ::= NK_BIN NK_PLUS duration_literal */ + 423, /* (457) tags_literal ::= NK_BIN NK_MINUS duration_literal */ + 423, /* (458) tags_literal ::= NK_PLUS NK_BIN */ + 423, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ + 423, /* (460) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ + 423, /* (461) tags_literal ::= NK_MINUS NK_BIN */ + 423, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ + 423, /* (463) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ + 423, /* (464) tags_literal ::= NK_HEX */ + 423, /* (465) tags_literal ::= NK_HEX NK_PLUS duration_literal */ + 423, /* (466) tags_literal ::= NK_HEX NK_MINUS duration_literal */ + 423, /* (467) tags_literal ::= NK_PLUS NK_HEX */ + 423, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ + 423, /* (469) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ + 423, /* (470) tags_literal ::= NK_MINUS NK_HEX */ + 423, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ + 423, /* (472) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ + 423, /* (473) tags_literal ::= NK_STRING */ + 423, /* (474) tags_literal ::= NK_STRING NK_PLUS duration_literal */ + 423, /* (475) tags_literal ::= NK_STRING NK_MINUS duration_literal */ + 423, /* (476) tags_literal ::= NK_BOOL */ + 423, /* (477) tags_literal ::= NULL */ + 423, /* (478) tags_literal ::= literal_func */ + 423, /* (479) tags_literal ::= literal_func NK_PLUS duration_literal */ + 423, /* (480) tags_literal ::= literal_func NK_MINUS duration_literal */ + 426, /* (481) tags_literal_list ::= tags_literal */ + 426, /* (482) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ + 379, /* (483) literal ::= NK_INTEGER */ + 379, /* (484) literal ::= NK_FLOAT */ + 379, /* (485) literal ::= NK_STRING */ + 379, /* (486) literal ::= NK_BOOL */ + 379, /* (487) literal ::= TIMESTAMP NK_STRING */ + 379, /* (488) literal ::= duration_literal */ + 379, /* (489) literal ::= NULL */ + 379, /* (490) literal ::= NK_QUESTION */ + 436, /* (491) duration_literal ::= NK_VARIABLE */ + 408, /* (492) signed ::= NK_INTEGER */ + 408, /* (493) signed ::= NK_PLUS NK_INTEGER */ + 408, /* (494) signed ::= NK_MINUS NK_INTEGER */ + 408, /* (495) signed ::= NK_FLOAT */ + 408, /* (496) signed ::= NK_PLUS NK_FLOAT */ + 408, /* (497) signed ::= NK_MINUS NK_FLOAT */ + 488, /* (498) signed_literal ::= signed */ + 488, /* (499) signed_literal ::= NK_STRING */ + 488, /* (500) signed_literal ::= NK_BOOL */ + 488, /* (501) signed_literal ::= TIMESTAMP NK_STRING */ + 488, /* (502) signed_literal ::= duration_literal */ + 488, /* (503) signed_literal ::= NULL */ + 488, /* (504) signed_literal ::= literal_func */ + 488, /* (505) signed_literal ::= NK_QUESTION */ + 489, /* (506) literal_list ::= signed_literal */ + 489, /* (507) literal_list ::= literal_list NK_COMMA signed_literal */ + 391, /* (508) db_name ::= NK_ID */ + 392, /* (509) table_name ::= NK_ID */ + 420, /* (510) column_name ::= NK_ID */ + 438, /* (511) function_name ::= NK_ID */ + 474, /* (512) view_name ::= NK_ID */ + 490, /* (513) table_alias ::= NK_ID */ + 449, /* (514) column_alias ::= NK_ID */ + 449, /* (515) column_alias ::= NK_ALIAS */ + 384, /* (516) user_name ::= NK_ID */ + 393, /* (517) topic_name ::= NK_ID */ + 475, /* (518) stream_name ::= NK_ID */ + 465, /* (519) cgroup_name ::= NK_ID */ + 456, /* (520) index_name ::= NK_ID */ + 450, /* (521) tsma_name ::= NK_ID */ + 491, /* (522) expr_or_subquery ::= expression */ + 484, /* (523) expression ::= literal */ + 484, /* (524) expression ::= pseudo_column */ + 484, /* (525) expression ::= column_reference */ + 484, /* (526) expression ::= function_expression */ + 484, /* (527) expression ::= case_when_expression */ + 484, /* (528) expression ::= NK_LP expression NK_RP */ + 484, /* (529) expression ::= NK_PLUS expr_or_subquery */ + 484, /* (530) expression ::= NK_MINUS expr_or_subquery */ + 484, /* (531) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + 484, /* (532) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + 484, /* (533) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + 484, /* (534) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + 484, /* (535) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + 484, /* (536) expression ::= column_reference NK_ARROW NK_STRING */ + 484, /* (537) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + 484, /* (538) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + 461, /* (539) expression_list ::= expr_or_subquery */ + 461, /* (540) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + 493, /* (541) column_reference ::= column_name */ + 493, /* (542) column_reference ::= table_name NK_DOT column_name */ + 493, /* (543) column_reference ::= NK_ALIAS */ + 493, /* (544) column_reference ::= table_name NK_DOT NK_ALIAS */ + 492, /* (545) pseudo_column ::= ROWTS */ + 492, /* (546) pseudo_column ::= TBNAME */ + 492, /* (547) pseudo_column ::= table_name NK_DOT TBNAME */ + 492, /* (548) pseudo_column ::= QSTART */ + 492, /* (549) pseudo_column ::= QEND */ + 492, /* (550) pseudo_column ::= QDURATION */ + 492, /* (551) pseudo_column ::= WSTART */ + 492, /* (552) pseudo_column ::= WEND */ + 492, /* (553) pseudo_column ::= WDURATION */ + 492, /* (554) pseudo_column ::= IROWTS */ + 492, /* (555) pseudo_column ::= ISFILLED */ + 492, /* (556) pseudo_column ::= QTAGS */ + 494, /* (557) function_expression ::= function_name NK_LP expression_list NK_RP */ + 494, /* (558) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + 494, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + 494, /* (560) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ + 494, /* (561) function_expression ::= literal_func */ + 487, /* (562) literal_func ::= noarg_func NK_LP NK_RP */ + 487, /* (563) literal_func ::= NOW */ + 487, /* (564) literal_func ::= TODAY */ + 498, /* (565) noarg_func ::= NOW */ + 498, /* (566) noarg_func ::= TODAY */ + 498, /* (567) noarg_func ::= TIMEZONE */ + 498, /* (568) noarg_func ::= DATABASE */ + 498, /* (569) noarg_func ::= CLIENT_VERSION */ + 498, /* (570) noarg_func ::= SERVER_VERSION */ + 498, /* (571) noarg_func ::= SERVER_STATUS */ + 498, /* (572) noarg_func ::= CURRENT_USER */ + 498, /* (573) noarg_func ::= USER */ + 496, /* (574) star_func ::= COUNT */ + 496, /* (575) star_func ::= FIRST */ + 496, /* (576) star_func ::= LAST */ + 496, /* (577) star_func ::= LAST_ROW */ + 497, /* (578) star_func_para_list ::= NK_STAR */ + 497, /* (579) star_func_para_list ::= other_para_list */ + 499, /* (580) other_para_list ::= star_func_para */ + 499, /* (581) other_para_list ::= other_para_list NK_COMMA star_func_para */ + 500, /* (582) star_func_para ::= expr_or_subquery */ + 500, /* (583) star_func_para ::= table_name NK_DOT NK_STAR */ + 495, /* (584) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + 495, /* (585) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + 501, /* (586) when_then_list ::= when_then_expr */ + 501, /* (587) when_then_list ::= when_then_list when_then_expr */ + 504, /* (588) when_then_expr ::= WHEN common_expression THEN common_expression */ + 502, /* (589) case_when_else_opt ::= */ + 502, /* (590) case_when_else_opt ::= ELSE common_expression */ + 505, /* (591) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + 505, /* (592) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + 505, /* (593) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + 505, /* (594) predicate ::= expr_or_subquery IS NULL */ + 505, /* (595) predicate ::= expr_or_subquery IS NOT NULL */ + 505, /* (596) predicate ::= expr_or_subquery in_op in_predicate_value */ + 506, /* (597) compare_op ::= NK_LT */ + 506, /* (598) compare_op ::= NK_GT */ + 506, /* (599) compare_op ::= NK_LE */ + 506, /* (600) compare_op ::= NK_GE */ + 506, /* (601) compare_op ::= NK_NE */ + 506, /* (602) compare_op ::= NK_EQ */ + 506, /* (603) compare_op ::= LIKE */ + 506, /* (604) compare_op ::= NOT LIKE */ + 506, /* (605) compare_op ::= MATCH */ + 506, /* (606) compare_op ::= NMATCH */ + 506, /* (607) compare_op ::= CONTAINS */ + 507, /* (608) in_op ::= IN */ + 507, /* (609) in_op ::= NOT IN */ + 508, /* (610) in_predicate_value ::= NK_LP literal_list NK_RP */ + 509, /* (611) boolean_value_expression ::= boolean_primary */ + 509, /* (612) boolean_value_expression ::= NOT boolean_primary */ + 509, /* (613) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + 509, /* (614) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + 510, /* (615) boolean_primary ::= predicate */ + 510, /* (616) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + 503, /* (617) common_expression ::= expr_or_subquery */ + 503, /* (618) common_expression ::= boolean_value_expression */ + 511, /* (619) from_clause_opt ::= */ + 511, /* (620) from_clause_opt ::= FROM table_reference_list */ + 512, /* (621) table_reference_list ::= table_reference */ + 512, /* (622) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + 513, /* (623) table_reference ::= table_primary */ + 513, /* (624) table_reference ::= joined_table */ + 514, /* (625) table_primary ::= table_name alias_opt */ + 514, /* (626) table_primary ::= db_name NK_DOT table_name alias_opt */ + 514, /* (627) table_primary ::= subquery alias_opt */ + 514, /* (628) table_primary ::= parenthesized_joined_table */ + 516, /* (629) alias_opt ::= */ + 516, /* (630) alias_opt ::= table_alias */ + 516, /* (631) alias_opt ::= AS table_alias */ + 518, /* (632) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + 518, /* (633) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + 515, /* (634) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + 519, /* (635) join_type ::= */ + 519, /* (636) join_type ::= INNER */ + 519, /* (637) join_type ::= LEFT */ + 519, /* (638) join_type ::= RIGHT */ + 519, /* (639) join_type ::= FULL */ + 520, /* (640) join_subtype ::= */ + 520, /* (641) join_subtype ::= OUTER */ + 520, /* (642) join_subtype ::= SEMI */ + 520, /* (643) join_subtype ::= ANTI */ + 520, /* (644) join_subtype ::= ASOF */ + 520, /* (645) join_subtype ::= WINDOW */ + 521, /* (646) join_on_clause_opt ::= */ + 521, /* (647) join_on_clause_opt ::= ON search_condition */ + 522, /* (648) window_offset_clause_opt ::= */ + 522, /* (649) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + 524, /* (650) window_offset_literal ::= NK_VARIABLE */ + 524, /* (651) window_offset_literal ::= NK_MINUS NK_VARIABLE */ + 523, /* (652) jlimit_clause_opt ::= */ + 523, /* (653) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + 525, /* (654) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 526, /* (655) hint_list ::= */ + 526, /* (656) hint_list ::= NK_HINT */ + 528, /* (657) tag_mode_opt ::= */ + 528, /* (658) tag_mode_opt ::= TAGS */ + 527, /* (659) set_quantifier_opt ::= */ + 527, /* (660) set_quantifier_opt ::= DISTINCT */ + 527, /* (661) set_quantifier_opt ::= ALL */ + 529, /* (662) select_list ::= select_item */ + 529, /* (663) select_list ::= select_list NK_COMMA select_item */ + 537, /* (664) select_item ::= NK_STAR */ + 537, /* (665) select_item ::= common_expression */ + 537, /* (666) select_item ::= common_expression column_alias */ + 537, /* (667) select_item ::= common_expression AS column_alias */ + 537, /* (668) select_item ::= table_name NK_DOT NK_STAR */ + 464, /* (669) where_clause_opt ::= */ + 464, /* (670) where_clause_opt ::= WHERE search_condition */ + 530, /* (671) partition_by_clause_opt ::= */ + 530, /* (672) partition_by_clause_opt ::= PARTITION BY partition_list */ + 538, /* (673) partition_list ::= partition_item */ + 538, /* (674) partition_list ::= partition_list NK_COMMA partition_item */ + 539, /* (675) partition_item ::= expr_or_subquery */ + 539, /* (676) partition_item ::= expr_or_subquery column_alias */ + 539, /* (677) partition_item ::= expr_or_subquery AS column_alias */ + 534, /* (678) twindow_clause_opt ::= */ + 534, /* (679) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + 534, /* (680) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + 534, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + 534, /* (682) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + 534, /* (683) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + 534, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + 534, /* (685) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + 457, /* (686) sliding_opt ::= */ + 457, /* (687) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ + 540, /* (688) interval_sliding_duration_literal ::= NK_VARIABLE */ + 540, /* (689) interval_sliding_duration_literal ::= NK_STRING */ + 540, /* (690) interval_sliding_duration_literal ::= NK_INTEGER */ + 533, /* (691) fill_opt ::= */ + 533, /* (692) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + 533, /* (693) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + 533, /* (694) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + 541, /* (695) fill_mode ::= NONE */ + 541, /* (696) fill_mode ::= PREV */ + 541, /* (697) fill_mode ::= NULL */ + 541, /* (698) fill_mode ::= NULL_F */ + 541, /* (699) fill_mode ::= LINEAR */ + 541, /* (700) fill_mode ::= NEXT */ + 535, /* (701) group_by_clause_opt ::= */ + 535, /* (702) group_by_clause_opt ::= GROUP BY group_by_list */ + 542, /* (703) group_by_list ::= expr_or_subquery */ + 542, /* (704) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 536, /* (705) having_clause_opt ::= */ + 536, /* (706) having_clause_opt ::= HAVING search_condition */ + 531, /* (707) range_opt ::= */ + 531, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + 531, /* (709) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + 532, /* (710) every_opt ::= */ + 532, /* (711) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + 543, /* (712) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + 544, /* (713) query_simple ::= query_specification */ + 544, /* (714) query_simple ::= union_query_expression */ + 548, /* (715) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + 548, /* (716) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + 549, /* (717) query_simple_or_subquery ::= query_simple */ + 549, /* (718) query_simple_or_subquery ::= subquery */ + 463, /* (719) query_or_subquery ::= query_expression */ + 463, /* (720) query_or_subquery ::= subquery */ + 545, /* (721) order_by_clause_opt ::= */ + 545, /* (722) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 546, /* (723) slimit_clause_opt ::= */ + 546, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + 546, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + 546, /* (726) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 547, /* (727) limit_clause_opt ::= */ + 547, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER */ + 547, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + 547, /* (730) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 517, /* (731) subquery ::= NK_LP query_expression NK_RP */ + 517, /* (732) subquery ::= NK_LP subquery NK_RP */ + 394, /* (733) search_condition ::= common_expression */ + 550, /* (734) sort_specification_list ::= sort_specification */ + 550, /* (735) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + 551, /* (736) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 552, /* (737) ordering_specification_opt ::= */ + 552, /* (738) ordering_specification_opt ::= ASC */ + 552, /* (739) ordering_specification_opt ::= DESC */ + 553, /* (740) null_ordering_opt ::= */ + 553, /* (741) null_ordering_opt ::= NULLS FIRST */ + 553, /* (742) null_ordering_opt ::= NULLS LAST */ + 422, /* (743) column_options ::= */ + 422, /* (744) column_options ::= column_options PRIMARY KEY */ + 422, /* (745) column_options ::= column_options ENCODE NK_STRING */ + 422, /* (746) column_options ::= column_options COMPRESS NK_STRING */ + 422, /* (747) column_options ::= column_options LEVEL NK_STRING */ }; /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number @@ -4792,323 +5169,324 @@ static const signed char yyRuleInfoNRhs[] = { -3, /* (427) cmd ::= KILL COMPACT NK_INTEGER */ -2, /* (428) cmd ::= BALANCE VGROUP */ -4, /* (429) cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ - -4, /* (430) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - -4, /* (431) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - -3, /* (432) cmd ::= SPLIT VGROUP NK_INTEGER */ - 0, /* (433) on_vgroup_id ::= */ - -2, /* (434) on_vgroup_id ::= ON NK_INTEGER */ - -2, /* (435) dnode_list ::= DNODE NK_INTEGER */ - -3, /* (436) dnode_list ::= dnode_list DNODE NK_INTEGER */ - -4, /* (437) cmd ::= DELETE FROM full_table_name where_clause_opt */ - -1, /* (438) cmd ::= query_or_subquery */ - -1, /* (439) cmd ::= insert_query */ - -7, /* (440) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - -4, /* (441) insert_query ::= INSERT INTO full_table_name query_or_subquery */ - -1, /* (442) tags_literal ::= NK_INTEGER */ - -3, /* (443) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - -3, /* (444) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ - -2, /* (445) tags_literal ::= NK_PLUS NK_INTEGER */ - -4, /* (446) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - -4, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ - -2, /* (448) tags_literal ::= NK_MINUS NK_INTEGER */ - -4, /* (449) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ - -4, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ - -1, /* (451) tags_literal ::= NK_FLOAT */ - -2, /* (452) tags_literal ::= NK_PLUS NK_FLOAT */ - -2, /* (453) tags_literal ::= NK_MINUS NK_FLOAT */ - -1, /* (454) tags_literal ::= NK_BIN */ - -3, /* (455) tags_literal ::= NK_BIN NK_PLUS duration_literal */ - -3, /* (456) tags_literal ::= NK_BIN NK_MINUS duration_literal */ - -2, /* (457) tags_literal ::= NK_PLUS NK_BIN */ - -4, /* (458) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ - -4, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ - -2, /* (460) tags_literal ::= NK_MINUS NK_BIN */ - -4, /* (461) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ - -4, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ - -1, /* (463) tags_literal ::= NK_HEX */ - -3, /* (464) tags_literal ::= NK_HEX NK_PLUS duration_literal */ - -3, /* (465) tags_literal ::= NK_HEX NK_MINUS duration_literal */ - -2, /* (466) tags_literal ::= NK_PLUS NK_HEX */ - -4, /* (467) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ - -4, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ - -2, /* (469) tags_literal ::= NK_MINUS NK_HEX */ - -4, /* (470) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ - -4, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ - -1, /* (472) tags_literal ::= NK_STRING */ - -3, /* (473) tags_literal ::= NK_STRING NK_PLUS duration_literal */ - -3, /* (474) tags_literal ::= NK_STRING NK_MINUS duration_literal */ - -1, /* (475) tags_literal ::= NK_BOOL */ - -1, /* (476) tags_literal ::= NULL */ - -1, /* (477) tags_literal ::= literal_func */ - -3, /* (478) tags_literal ::= literal_func NK_PLUS duration_literal */ - -3, /* (479) tags_literal ::= literal_func NK_MINUS duration_literal */ - -1, /* (480) tags_literal_list ::= tags_literal */ - -3, /* (481) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ - -1, /* (482) literal ::= NK_INTEGER */ - -1, /* (483) literal ::= NK_FLOAT */ - -1, /* (484) literal ::= NK_STRING */ - -1, /* (485) literal ::= NK_BOOL */ - -2, /* (486) literal ::= TIMESTAMP NK_STRING */ - -1, /* (487) literal ::= duration_literal */ - -1, /* (488) literal ::= NULL */ - -1, /* (489) literal ::= NK_QUESTION */ - -1, /* (490) duration_literal ::= NK_VARIABLE */ - -1, /* (491) signed ::= NK_INTEGER */ - -2, /* (492) signed ::= NK_PLUS NK_INTEGER */ - -2, /* (493) signed ::= NK_MINUS NK_INTEGER */ - -1, /* (494) signed ::= NK_FLOAT */ - -2, /* (495) signed ::= NK_PLUS NK_FLOAT */ - -2, /* (496) signed ::= NK_MINUS NK_FLOAT */ - -1, /* (497) signed_literal ::= signed */ - -1, /* (498) signed_literal ::= NK_STRING */ - -1, /* (499) signed_literal ::= NK_BOOL */ - -2, /* (500) signed_literal ::= TIMESTAMP NK_STRING */ - -1, /* (501) signed_literal ::= duration_literal */ - -1, /* (502) signed_literal ::= NULL */ - -1, /* (503) signed_literal ::= literal_func */ - -1, /* (504) signed_literal ::= NK_QUESTION */ - -1, /* (505) literal_list ::= signed_literal */ - -3, /* (506) literal_list ::= literal_list NK_COMMA signed_literal */ - -1, /* (507) db_name ::= NK_ID */ - -1, /* (508) table_name ::= NK_ID */ - -1, /* (509) column_name ::= NK_ID */ - -1, /* (510) function_name ::= NK_ID */ - -1, /* (511) view_name ::= NK_ID */ - -1, /* (512) table_alias ::= NK_ID */ - -1, /* (513) column_alias ::= NK_ID */ - -1, /* (514) column_alias ::= NK_ALIAS */ - -1, /* (515) user_name ::= NK_ID */ - -1, /* (516) topic_name ::= NK_ID */ - -1, /* (517) stream_name ::= NK_ID */ - -1, /* (518) cgroup_name ::= NK_ID */ - -1, /* (519) index_name ::= NK_ID */ - -1, /* (520) tsma_name ::= NK_ID */ - -1, /* (521) expr_or_subquery ::= expression */ - -1, /* (522) expression ::= literal */ - -1, /* (523) expression ::= pseudo_column */ - -1, /* (524) expression ::= column_reference */ - -1, /* (525) expression ::= function_expression */ - -1, /* (526) expression ::= case_when_expression */ - -3, /* (527) expression ::= NK_LP expression NK_RP */ - -2, /* (528) expression ::= NK_PLUS expr_or_subquery */ - -2, /* (529) expression ::= NK_MINUS expr_or_subquery */ - -3, /* (530) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - -3, /* (531) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - -3, /* (532) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - -3, /* (533) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - -3, /* (534) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - -3, /* (535) expression ::= column_reference NK_ARROW NK_STRING */ - -3, /* (536) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - -3, /* (537) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - -1, /* (538) expression_list ::= expr_or_subquery */ - -3, /* (539) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - -1, /* (540) column_reference ::= column_name */ - -3, /* (541) column_reference ::= table_name NK_DOT column_name */ - -1, /* (542) column_reference ::= NK_ALIAS */ - -3, /* (543) column_reference ::= table_name NK_DOT NK_ALIAS */ - -1, /* (544) pseudo_column ::= ROWTS */ - -1, /* (545) pseudo_column ::= TBNAME */ - -3, /* (546) pseudo_column ::= table_name NK_DOT TBNAME */ - -1, /* (547) pseudo_column ::= QSTART */ - -1, /* (548) pseudo_column ::= QEND */ - -1, /* (549) pseudo_column ::= QDURATION */ - -1, /* (550) pseudo_column ::= WSTART */ - -1, /* (551) pseudo_column ::= WEND */ - -1, /* (552) pseudo_column ::= WDURATION */ - -1, /* (553) pseudo_column ::= IROWTS */ - -1, /* (554) pseudo_column ::= ISFILLED */ - -1, /* (555) pseudo_column ::= QTAGS */ - -4, /* (556) function_expression ::= function_name NK_LP expression_list NK_RP */ - -4, /* (557) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - -6, /* (558) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - -6, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ - -1, /* (560) function_expression ::= literal_func */ - -3, /* (561) literal_func ::= noarg_func NK_LP NK_RP */ - -1, /* (562) literal_func ::= NOW */ - -1, /* (563) literal_func ::= TODAY */ - -1, /* (564) noarg_func ::= NOW */ - -1, /* (565) noarg_func ::= TODAY */ - -1, /* (566) noarg_func ::= TIMEZONE */ - -1, /* (567) noarg_func ::= DATABASE */ - -1, /* (568) noarg_func ::= CLIENT_VERSION */ - -1, /* (569) noarg_func ::= SERVER_VERSION */ - -1, /* (570) noarg_func ::= SERVER_STATUS */ - -1, /* (571) noarg_func ::= CURRENT_USER */ - -1, /* (572) noarg_func ::= USER */ - -1, /* (573) star_func ::= COUNT */ - -1, /* (574) star_func ::= FIRST */ - -1, /* (575) star_func ::= LAST */ - -1, /* (576) star_func ::= LAST_ROW */ - -1, /* (577) star_func_para_list ::= NK_STAR */ - -1, /* (578) star_func_para_list ::= other_para_list */ - -1, /* (579) other_para_list ::= star_func_para */ - -3, /* (580) other_para_list ::= other_para_list NK_COMMA star_func_para */ - -1, /* (581) star_func_para ::= expr_or_subquery */ - -3, /* (582) star_func_para ::= table_name NK_DOT NK_STAR */ - -4, /* (583) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - -5, /* (584) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - -1, /* (585) when_then_list ::= when_then_expr */ - -2, /* (586) when_then_list ::= when_then_list when_then_expr */ - -4, /* (587) when_then_expr ::= WHEN common_expression THEN common_expression */ - 0, /* (588) case_when_else_opt ::= */ - -2, /* (589) case_when_else_opt ::= ELSE common_expression */ - -3, /* (590) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - -5, /* (591) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - -6, /* (592) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - -3, /* (593) predicate ::= expr_or_subquery IS NULL */ - -4, /* (594) predicate ::= expr_or_subquery IS NOT NULL */ - -3, /* (595) predicate ::= expr_or_subquery in_op in_predicate_value */ - -1, /* (596) compare_op ::= NK_LT */ - -1, /* (597) compare_op ::= NK_GT */ - -1, /* (598) compare_op ::= NK_LE */ - -1, /* (599) compare_op ::= NK_GE */ - -1, /* (600) compare_op ::= NK_NE */ - -1, /* (601) compare_op ::= NK_EQ */ - -1, /* (602) compare_op ::= LIKE */ - -2, /* (603) compare_op ::= NOT LIKE */ - -1, /* (604) compare_op ::= MATCH */ - -1, /* (605) compare_op ::= NMATCH */ - -1, /* (606) compare_op ::= CONTAINS */ - -1, /* (607) in_op ::= IN */ - -2, /* (608) in_op ::= NOT IN */ - -3, /* (609) in_predicate_value ::= NK_LP literal_list NK_RP */ - -1, /* (610) boolean_value_expression ::= boolean_primary */ - -2, /* (611) boolean_value_expression ::= NOT boolean_primary */ - -3, /* (612) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - -3, /* (613) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - -1, /* (614) boolean_primary ::= predicate */ - -3, /* (615) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - -1, /* (616) common_expression ::= expr_or_subquery */ - -1, /* (617) common_expression ::= boolean_value_expression */ - 0, /* (618) from_clause_opt ::= */ - -2, /* (619) from_clause_opt ::= FROM table_reference_list */ - -1, /* (620) table_reference_list ::= table_reference */ - -3, /* (621) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - -1, /* (622) table_reference ::= table_primary */ - -1, /* (623) table_reference ::= joined_table */ - -2, /* (624) table_primary ::= table_name alias_opt */ - -4, /* (625) table_primary ::= db_name NK_DOT table_name alias_opt */ - -2, /* (626) table_primary ::= subquery alias_opt */ - -1, /* (627) table_primary ::= parenthesized_joined_table */ - 0, /* (628) alias_opt ::= */ - -1, /* (629) alias_opt ::= table_alias */ - -2, /* (630) alias_opt ::= AS table_alias */ - -3, /* (631) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - -3, /* (632) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - -8, /* (633) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ - 0, /* (634) join_type ::= */ - -1, /* (635) join_type ::= INNER */ - -1, /* (636) join_type ::= LEFT */ - -1, /* (637) join_type ::= RIGHT */ - -1, /* (638) join_type ::= FULL */ - 0, /* (639) join_subtype ::= */ - -1, /* (640) join_subtype ::= OUTER */ - -1, /* (641) join_subtype ::= SEMI */ - -1, /* (642) join_subtype ::= ANTI */ - -1, /* (643) join_subtype ::= ASOF */ - -1, /* (644) join_subtype ::= WINDOW */ - 0, /* (645) join_on_clause_opt ::= */ - -2, /* (646) join_on_clause_opt ::= ON search_condition */ - 0, /* (647) window_offset_clause_opt ::= */ - -6, /* (648) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ - -1, /* (649) window_offset_literal ::= NK_VARIABLE */ - -2, /* (650) window_offset_literal ::= NK_MINUS NK_VARIABLE */ - 0, /* (651) jlimit_clause_opt ::= */ - -2, /* (652) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - -14, /* (653) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 0, /* (654) hint_list ::= */ - -1, /* (655) hint_list ::= NK_HINT */ - 0, /* (656) tag_mode_opt ::= */ - -1, /* (657) tag_mode_opt ::= TAGS */ - 0, /* (658) set_quantifier_opt ::= */ - -1, /* (659) set_quantifier_opt ::= DISTINCT */ - -1, /* (660) set_quantifier_opt ::= ALL */ - -1, /* (661) select_list ::= select_item */ - -3, /* (662) select_list ::= select_list NK_COMMA select_item */ - -1, /* (663) select_item ::= NK_STAR */ - -1, /* (664) select_item ::= common_expression */ - -2, /* (665) select_item ::= common_expression column_alias */ - -3, /* (666) select_item ::= common_expression AS column_alias */ - -3, /* (667) select_item ::= table_name NK_DOT NK_STAR */ - 0, /* (668) where_clause_opt ::= */ - -2, /* (669) where_clause_opt ::= WHERE search_condition */ - 0, /* (670) partition_by_clause_opt ::= */ - -3, /* (671) partition_by_clause_opt ::= PARTITION BY partition_list */ - -1, /* (672) partition_list ::= partition_item */ - -3, /* (673) partition_list ::= partition_list NK_COMMA partition_item */ - -1, /* (674) partition_item ::= expr_or_subquery */ - -2, /* (675) partition_item ::= expr_or_subquery column_alias */ - -3, /* (676) partition_item ::= expr_or_subquery AS column_alias */ - 0, /* (677) twindow_clause_opt ::= */ - -6, /* (678) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ - -4, /* (679) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - -6, /* (680) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - -8, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - -7, /* (682) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - -4, /* (683) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ - -6, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ - 0, /* (685) sliding_opt ::= */ - -4, /* (686) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ - -1, /* (687) interval_sliding_duration_literal ::= NK_VARIABLE */ - -1, /* (688) interval_sliding_duration_literal ::= NK_STRING */ - -1, /* (689) interval_sliding_duration_literal ::= NK_INTEGER */ - 0, /* (690) fill_opt ::= */ - -4, /* (691) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - -6, /* (692) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ - -6, /* (693) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ - -1, /* (694) fill_mode ::= NONE */ - -1, /* (695) fill_mode ::= PREV */ - -1, /* (696) fill_mode ::= NULL */ - -1, /* (697) fill_mode ::= NULL_F */ - -1, /* (698) fill_mode ::= LINEAR */ - -1, /* (699) fill_mode ::= NEXT */ - 0, /* (700) group_by_clause_opt ::= */ - -3, /* (701) group_by_clause_opt ::= GROUP BY group_by_list */ - -1, /* (702) group_by_list ::= expr_or_subquery */ - -3, /* (703) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 0, /* (704) having_clause_opt ::= */ - -2, /* (705) having_clause_opt ::= HAVING search_condition */ - 0, /* (706) range_opt ::= */ - -6, /* (707) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - -4, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ - 0, /* (709) every_opt ::= */ - -4, /* (710) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - -4, /* (711) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - -1, /* (712) query_simple ::= query_specification */ - -1, /* (713) query_simple ::= union_query_expression */ - -4, /* (714) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - -3, /* (715) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - -1, /* (716) query_simple_or_subquery ::= query_simple */ - -1, /* (717) query_simple_or_subquery ::= subquery */ - -1, /* (718) query_or_subquery ::= query_expression */ - -1, /* (719) query_or_subquery ::= subquery */ - 0, /* (720) order_by_clause_opt ::= */ - -3, /* (721) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 0, /* (722) slimit_clause_opt ::= */ - -2, /* (723) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - -4, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - -4, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 0, /* (726) limit_clause_opt ::= */ - -2, /* (727) limit_clause_opt ::= LIMIT NK_INTEGER */ - -4, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - -4, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - -3, /* (730) subquery ::= NK_LP query_expression NK_RP */ - -3, /* (731) subquery ::= NK_LP subquery NK_RP */ - -1, /* (732) search_condition ::= common_expression */ - -1, /* (733) sort_specification_list ::= sort_specification */ - -3, /* (734) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - -3, /* (735) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 0, /* (736) ordering_specification_opt ::= */ - -1, /* (737) ordering_specification_opt ::= ASC */ - -1, /* (738) ordering_specification_opt ::= DESC */ - 0, /* (739) null_ordering_opt ::= */ - -2, /* (740) null_ordering_opt ::= NULLS FIRST */ - -2, /* (741) null_ordering_opt ::= NULLS LAST */ - 0, /* (742) column_options ::= */ - -3, /* (743) column_options ::= column_options PRIMARY KEY */ - -3, /* (744) column_options ::= column_options ENCODE NK_STRING */ - -3, /* (745) column_options ::= column_options COMPRESS NK_STRING */ - -3, /* (746) column_options ::= column_options LEVEL NK_STRING */ + -5, /* (430) cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ + -4, /* (431) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + -4, /* (432) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + -3, /* (433) cmd ::= SPLIT VGROUP NK_INTEGER */ + 0, /* (434) on_vgroup_id ::= */ + -2, /* (435) on_vgroup_id ::= ON NK_INTEGER */ + -2, /* (436) dnode_list ::= DNODE NK_INTEGER */ + -3, /* (437) dnode_list ::= dnode_list DNODE NK_INTEGER */ + -4, /* (438) cmd ::= DELETE FROM full_table_name where_clause_opt */ + -1, /* (439) cmd ::= query_or_subquery */ + -1, /* (440) cmd ::= insert_query */ + -7, /* (441) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + -4, /* (442) insert_query ::= INSERT INTO full_table_name query_or_subquery */ + -1, /* (443) tags_literal ::= NK_INTEGER */ + -3, /* (444) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + -3, /* (445) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ + -2, /* (446) tags_literal ::= NK_PLUS NK_INTEGER */ + -4, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + -4, /* (448) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ + -2, /* (449) tags_literal ::= NK_MINUS NK_INTEGER */ + -4, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ + -4, /* (451) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ + -1, /* (452) tags_literal ::= NK_FLOAT */ + -2, /* (453) tags_literal ::= NK_PLUS NK_FLOAT */ + -2, /* (454) tags_literal ::= NK_MINUS NK_FLOAT */ + -1, /* (455) tags_literal ::= NK_BIN */ + -3, /* (456) tags_literal ::= NK_BIN NK_PLUS duration_literal */ + -3, /* (457) tags_literal ::= NK_BIN NK_MINUS duration_literal */ + -2, /* (458) tags_literal ::= NK_PLUS NK_BIN */ + -4, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ + -4, /* (460) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ + -2, /* (461) tags_literal ::= NK_MINUS NK_BIN */ + -4, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ + -4, /* (463) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ + -1, /* (464) tags_literal ::= NK_HEX */ + -3, /* (465) tags_literal ::= NK_HEX NK_PLUS duration_literal */ + -3, /* (466) tags_literal ::= NK_HEX NK_MINUS duration_literal */ + -2, /* (467) tags_literal ::= NK_PLUS NK_HEX */ + -4, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ + -4, /* (469) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ + -2, /* (470) tags_literal ::= NK_MINUS NK_HEX */ + -4, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ + -4, /* (472) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ + -1, /* (473) tags_literal ::= NK_STRING */ + -3, /* (474) tags_literal ::= NK_STRING NK_PLUS duration_literal */ + -3, /* (475) tags_literal ::= NK_STRING NK_MINUS duration_literal */ + -1, /* (476) tags_literal ::= NK_BOOL */ + -1, /* (477) tags_literal ::= NULL */ + -1, /* (478) tags_literal ::= literal_func */ + -3, /* (479) tags_literal ::= literal_func NK_PLUS duration_literal */ + -3, /* (480) tags_literal ::= literal_func NK_MINUS duration_literal */ + -1, /* (481) tags_literal_list ::= tags_literal */ + -3, /* (482) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ + -1, /* (483) literal ::= NK_INTEGER */ + -1, /* (484) literal ::= NK_FLOAT */ + -1, /* (485) literal ::= NK_STRING */ + -1, /* (486) literal ::= NK_BOOL */ + -2, /* (487) literal ::= TIMESTAMP NK_STRING */ + -1, /* (488) literal ::= duration_literal */ + -1, /* (489) literal ::= NULL */ + -1, /* (490) literal ::= NK_QUESTION */ + -1, /* (491) duration_literal ::= NK_VARIABLE */ + -1, /* (492) signed ::= NK_INTEGER */ + -2, /* (493) signed ::= NK_PLUS NK_INTEGER */ + -2, /* (494) signed ::= NK_MINUS NK_INTEGER */ + -1, /* (495) signed ::= NK_FLOAT */ + -2, /* (496) signed ::= NK_PLUS NK_FLOAT */ + -2, /* (497) signed ::= NK_MINUS NK_FLOAT */ + -1, /* (498) signed_literal ::= signed */ + -1, /* (499) signed_literal ::= NK_STRING */ + -1, /* (500) signed_literal ::= NK_BOOL */ + -2, /* (501) signed_literal ::= TIMESTAMP NK_STRING */ + -1, /* (502) signed_literal ::= duration_literal */ + -1, /* (503) signed_literal ::= NULL */ + -1, /* (504) signed_literal ::= literal_func */ + -1, /* (505) signed_literal ::= NK_QUESTION */ + -1, /* (506) literal_list ::= signed_literal */ + -3, /* (507) literal_list ::= literal_list NK_COMMA signed_literal */ + -1, /* (508) db_name ::= NK_ID */ + -1, /* (509) table_name ::= NK_ID */ + -1, /* (510) column_name ::= NK_ID */ + -1, /* (511) function_name ::= NK_ID */ + -1, /* (512) view_name ::= NK_ID */ + -1, /* (513) table_alias ::= NK_ID */ + -1, /* (514) column_alias ::= NK_ID */ + -1, /* (515) column_alias ::= NK_ALIAS */ + -1, /* (516) user_name ::= NK_ID */ + -1, /* (517) topic_name ::= NK_ID */ + -1, /* (518) stream_name ::= NK_ID */ + -1, /* (519) cgroup_name ::= NK_ID */ + -1, /* (520) index_name ::= NK_ID */ + -1, /* (521) tsma_name ::= NK_ID */ + -1, /* (522) expr_or_subquery ::= expression */ + -1, /* (523) expression ::= literal */ + -1, /* (524) expression ::= pseudo_column */ + -1, /* (525) expression ::= column_reference */ + -1, /* (526) expression ::= function_expression */ + -1, /* (527) expression ::= case_when_expression */ + -3, /* (528) expression ::= NK_LP expression NK_RP */ + -2, /* (529) expression ::= NK_PLUS expr_or_subquery */ + -2, /* (530) expression ::= NK_MINUS expr_or_subquery */ + -3, /* (531) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + -3, /* (532) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + -3, /* (533) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + -3, /* (534) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + -3, /* (535) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + -3, /* (536) expression ::= column_reference NK_ARROW NK_STRING */ + -3, /* (537) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + -3, /* (538) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + -1, /* (539) expression_list ::= expr_or_subquery */ + -3, /* (540) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + -1, /* (541) column_reference ::= column_name */ + -3, /* (542) column_reference ::= table_name NK_DOT column_name */ + -1, /* (543) column_reference ::= NK_ALIAS */ + -3, /* (544) column_reference ::= table_name NK_DOT NK_ALIAS */ + -1, /* (545) pseudo_column ::= ROWTS */ + -1, /* (546) pseudo_column ::= TBNAME */ + -3, /* (547) pseudo_column ::= table_name NK_DOT TBNAME */ + -1, /* (548) pseudo_column ::= QSTART */ + -1, /* (549) pseudo_column ::= QEND */ + -1, /* (550) pseudo_column ::= QDURATION */ + -1, /* (551) pseudo_column ::= WSTART */ + -1, /* (552) pseudo_column ::= WEND */ + -1, /* (553) pseudo_column ::= WDURATION */ + -1, /* (554) pseudo_column ::= IROWTS */ + -1, /* (555) pseudo_column ::= ISFILLED */ + -1, /* (556) pseudo_column ::= QTAGS */ + -4, /* (557) function_expression ::= function_name NK_LP expression_list NK_RP */ + -4, /* (558) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + -6, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + -6, /* (560) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ + -1, /* (561) function_expression ::= literal_func */ + -3, /* (562) literal_func ::= noarg_func NK_LP NK_RP */ + -1, /* (563) literal_func ::= NOW */ + -1, /* (564) literal_func ::= TODAY */ + -1, /* (565) noarg_func ::= NOW */ + -1, /* (566) noarg_func ::= TODAY */ + -1, /* (567) noarg_func ::= TIMEZONE */ + -1, /* (568) noarg_func ::= DATABASE */ + -1, /* (569) noarg_func ::= CLIENT_VERSION */ + -1, /* (570) noarg_func ::= SERVER_VERSION */ + -1, /* (571) noarg_func ::= SERVER_STATUS */ + -1, /* (572) noarg_func ::= CURRENT_USER */ + -1, /* (573) noarg_func ::= USER */ + -1, /* (574) star_func ::= COUNT */ + -1, /* (575) star_func ::= FIRST */ + -1, /* (576) star_func ::= LAST */ + -1, /* (577) star_func ::= LAST_ROW */ + -1, /* (578) star_func_para_list ::= NK_STAR */ + -1, /* (579) star_func_para_list ::= other_para_list */ + -1, /* (580) other_para_list ::= star_func_para */ + -3, /* (581) other_para_list ::= other_para_list NK_COMMA star_func_para */ + -1, /* (582) star_func_para ::= expr_or_subquery */ + -3, /* (583) star_func_para ::= table_name NK_DOT NK_STAR */ + -4, /* (584) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + -5, /* (585) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + -1, /* (586) when_then_list ::= when_then_expr */ + -2, /* (587) when_then_list ::= when_then_list when_then_expr */ + -4, /* (588) when_then_expr ::= WHEN common_expression THEN common_expression */ + 0, /* (589) case_when_else_opt ::= */ + -2, /* (590) case_when_else_opt ::= ELSE common_expression */ + -3, /* (591) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + -5, /* (592) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + -6, /* (593) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + -3, /* (594) predicate ::= expr_or_subquery IS NULL */ + -4, /* (595) predicate ::= expr_or_subquery IS NOT NULL */ + -3, /* (596) predicate ::= expr_or_subquery in_op in_predicate_value */ + -1, /* (597) compare_op ::= NK_LT */ + -1, /* (598) compare_op ::= NK_GT */ + -1, /* (599) compare_op ::= NK_LE */ + -1, /* (600) compare_op ::= NK_GE */ + -1, /* (601) compare_op ::= NK_NE */ + -1, /* (602) compare_op ::= NK_EQ */ + -1, /* (603) compare_op ::= LIKE */ + -2, /* (604) compare_op ::= NOT LIKE */ + -1, /* (605) compare_op ::= MATCH */ + -1, /* (606) compare_op ::= NMATCH */ + -1, /* (607) compare_op ::= CONTAINS */ + -1, /* (608) in_op ::= IN */ + -2, /* (609) in_op ::= NOT IN */ + -3, /* (610) in_predicate_value ::= NK_LP literal_list NK_RP */ + -1, /* (611) boolean_value_expression ::= boolean_primary */ + -2, /* (612) boolean_value_expression ::= NOT boolean_primary */ + -3, /* (613) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + -3, /* (614) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + -1, /* (615) boolean_primary ::= predicate */ + -3, /* (616) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + -1, /* (617) common_expression ::= expr_or_subquery */ + -1, /* (618) common_expression ::= boolean_value_expression */ + 0, /* (619) from_clause_opt ::= */ + -2, /* (620) from_clause_opt ::= FROM table_reference_list */ + -1, /* (621) table_reference_list ::= table_reference */ + -3, /* (622) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + -1, /* (623) table_reference ::= table_primary */ + -1, /* (624) table_reference ::= joined_table */ + -2, /* (625) table_primary ::= table_name alias_opt */ + -4, /* (626) table_primary ::= db_name NK_DOT table_name alias_opt */ + -2, /* (627) table_primary ::= subquery alias_opt */ + -1, /* (628) table_primary ::= parenthesized_joined_table */ + 0, /* (629) alias_opt ::= */ + -1, /* (630) alias_opt ::= table_alias */ + -2, /* (631) alias_opt ::= AS table_alias */ + -3, /* (632) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + -3, /* (633) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + -8, /* (634) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + 0, /* (635) join_type ::= */ + -1, /* (636) join_type ::= INNER */ + -1, /* (637) join_type ::= LEFT */ + -1, /* (638) join_type ::= RIGHT */ + -1, /* (639) join_type ::= FULL */ + 0, /* (640) join_subtype ::= */ + -1, /* (641) join_subtype ::= OUTER */ + -1, /* (642) join_subtype ::= SEMI */ + -1, /* (643) join_subtype ::= ANTI */ + -1, /* (644) join_subtype ::= ASOF */ + -1, /* (645) join_subtype ::= WINDOW */ + 0, /* (646) join_on_clause_opt ::= */ + -2, /* (647) join_on_clause_opt ::= ON search_condition */ + 0, /* (648) window_offset_clause_opt ::= */ + -6, /* (649) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + -1, /* (650) window_offset_literal ::= NK_VARIABLE */ + -2, /* (651) window_offset_literal ::= NK_MINUS NK_VARIABLE */ + 0, /* (652) jlimit_clause_opt ::= */ + -2, /* (653) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + -14, /* (654) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 0, /* (655) hint_list ::= */ + -1, /* (656) hint_list ::= NK_HINT */ + 0, /* (657) tag_mode_opt ::= */ + -1, /* (658) tag_mode_opt ::= TAGS */ + 0, /* (659) set_quantifier_opt ::= */ + -1, /* (660) set_quantifier_opt ::= DISTINCT */ + -1, /* (661) set_quantifier_opt ::= ALL */ + -1, /* (662) select_list ::= select_item */ + -3, /* (663) select_list ::= select_list NK_COMMA select_item */ + -1, /* (664) select_item ::= NK_STAR */ + -1, /* (665) select_item ::= common_expression */ + -2, /* (666) select_item ::= common_expression column_alias */ + -3, /* (667) select_item ::= common_expression AS column_alias */ + -3, /* (668) select_item ::= table_name NK_DOT NK_STAR */ + 0, /* (669) where_clause_opt ::= */ + -2, /* (670) where_clause_opt ::= WHERE search_condition */ + 0, /* (671) partition_by_clause_opt ::= */ + -3, /* (672) partition_by_clause_opt ::= PARTITION BY partition_list */ + -1, /* (673) partition_list ::= partition_item */ + -3, /* (674) partition_list ::= partition_list NK_COMMA partition_item */ + -1, /* (675) partition_item ::= expr_or_subquery */ + -2, /* (676) partition_item ::= expr_or_subquery column_alias */ + -3, /* (677) partition_item ::= expr_or_subquery AS column_alias */ + 0, /* (678) twindow_clause_opt ::= */ + -6, /* (679) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + -4, /* (680) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + -6, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + -8, /* (682) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + -7, /* (683) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + -4, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + -6, /* (685) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + 0, /* (686) sliding_opt ::= */ + -4, /* (687) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ + -1, /* (688) interval_sliding_duration_literal ::= NK_VARIABLE */ + -1, /* (689) interval_sliding_duration_literal ::= NK_STRING */ + -1, /* (690) interval_sliding_duration_literal ::= NK_INTEGER */ + 0, /* (691) fill_opt ::= */ + -4, /* (692) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + -6, /* (693) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + -6, /* (694) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + -1, /* (695) fill_mode ::= NONE */ + -1, /* (696) fill_mode ::= PREV */ + -1, /* (697) fill_mode ::= NULL */ + -1, /* (698) fill_mode ::= NULL_F */ + -1, /* (699) fill_mode ::= LINEAR */ + -1, /* (700) fill_mode ::= NEXT */ + 0, /* (701) group_by_clause_opt ::= */ + -3, /* (702) group_by_clause_opt ::= GROUP BY group_by_list */ + -1, /* (703) group_by_list ::= expr_or_subquery */ + -3, /* (704) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 0, /* (705) having_clause_opt ::= */ + -2, /* (706) having_clause_opt ::= HAVING search_condition */ + 0, /* (707) range_opt ::= */ + -6, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + -4, /* (709) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + 0, /* (710) every_opt ::= */ + -4, /* (711) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + -4, /* (712) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + -1, /* (713) query_simple ::= query_specification */ + -1, /* (714) query_simple ::= union_query_expression */ + -4, /* (715) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + -3, /* (716) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + -1, /* (717) query_simple_or_subquery ::= query_simple */ + -1, /* (718) query_simple_or_subquery ::= subquery */ + -1, /* (719) query_or_subquery ::= query_expression */ + -1, /* (720) query_or_subquery ::= subquery */ + 0, /* (721) order_by_clause_opt ::= */ + -3, /* (722) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 0, /* (723) slimit_clause_opt ::= */ + -2, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + -4, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + -4, /* (726) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 0, /* (727) limit_clause_opt ::= */ + -2, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER */ + -4, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + -4, /* (730) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + -3, /* (731) subquery ::= NK_LP query_expression NK_RP */ + -3, /* (732) subquery ::= NK_LP subquery NK_RP */ + -1, /* (733) search_condition ::= common_expression */ + -1, /* (734) sort_specification_list ::= sort_specification */ + -3, /* (735) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + -3, /* (736) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 0, /* (737) ordering_specification_opt ::= */ + -1, /* (738) ordering_specification_opt ::= ASC */ + -1, /* (739) ordering_specification_opt ::= DESC */ + 0, /* (740) null_ordering_opt ::= */ + -2, /* (741) null_ordering_opt ::= NULLS FIRST */ + -2, /* (742) null_ordering_opt ::= NULLS LAST */ + 0, /* (743) column_options ::= */ + -3, /* (744) column_options ::= column_options PRIMARY KEY */ + -3, /* (745) column_options ::= column_options ENCODE NK_STRING */ + -3, /* (746) column_options ::= column_options COMPRESS NK_STRING */ + -3, /* (747) column_options ::= column_options LEVEL NK_STRING */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -5138,54 +5516,6 @@ static YYACTIONTYPE yy_reduce( (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfoNRhs[yyruleno]; - if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", - yyTracePrompt, - yyruleno, yyRuleName[yyruleno], - yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ - yypParser->yyhwm++; - assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yytos>=yypParser->yystackEnd ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } -#else - if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ - if( yyGrowStack(yypParser) ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } - yymsp = yypParser->yytos; - } -#endif - } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example @@ -5264,15 +5594,15 @@ static YYACTIONTYPE yy_reduce( case 328: /* tag_list_opt ::= */ yytestcase(yyruleno==328); case 401: /* col_list_opt ::= */ yytestcase(yyruleno==401); case 408: /* tag_def_or_ref_opt ::= */ yytestcase(yyruleno==408); - case 670: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==670); - case 700: /* group_by_clause_opt ::= */ yytestcase(yyruleno==700); - case 720: /* order_by_clause_opt ::= */ yytestcase(yyruleno==720); + case 671: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==671); + case 701: /* group_by_clause_opt ::= */ yytestcase(yyruleno==701); + case 721: /* order_by_clause_opt ::= */ yytestcase(yyruleno==721); { yymsp[1].minor.yy748 = NULL; } break; case 28: /* white_list_opt ::= white_list */ case 239: /* tags_def_opt ::= tags_def */ yytestcase(yyruleno==239); case 409: /* tag_def_or_ref_opt ::= tags_def */ yytestcase(yyruleno==409); - case 578: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==578); + case 579: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==579); { yylhsminor.yy748 = yymsp[0].minor.yy748; } yymsp[0].minor.yy748 = yylhsminor.yy748; break; @@ -5357,27 +5687,27 @@ static YYACTIONTYPE yy_reduce( case 172: /* end_opt ::= */ yytestcase(yyruleno==172); case 323: /* like_pattern_opt ::= */ yytestcase(yyruleno==323); case 420: /* subtable_opt ::= */ yytestcase(yyruleno==420); - case 588: /* case_when_else_opt ::= */ yytestcase(yyruleno==588); - case 618: /* from_clause_opt ::= */ yytestcase(yyruleno==618); - case 645: /* join_on_clause_opt ::= */ yytestcase(yyruleno==645); - case 647: /* window_offset_clause_opt ::= */ yytestcase(yyruleno==647); - case 651: /* jlimit_clause_opt ::= */ yytestcase(yyruleno==651); - case 668: /* where_clause_opt ::= */ yytestcase(yyruleno==668); - case 677: /* twindow_clause_opt ::= */ yytestcase(yyruleno==677); - case 685: /* sliding_opt ::= */ yytestcase(yyruleno==685); - case 690: /* fill_opt ::= */ yytestcase(yyruleno==690); - case 704: /* having_clause_opt ::= */ yytestcase(yyruleno==704); - case 706: /* range_opt ::= */ yytestcase(yyruleno==706); - case 709: /* every_opt ::= */ yytestcase(yyruleno==709); - case 722: /* slimit_clause_opt ::= */ yytestcase(yyruleno==722); - case 726: /* limit_clause_opt ::= */ yytestcase(yyruleno==726); + case 589: /* case_when_else_opt ::= */ yytestcase(yyruleno==589); + case 619: /* from_clause_opt ::= */ yytestcase(yyruleno==619); + case 646: /* join_on_clause_opt ::= */ yytestcase(yyruleno==646); + case 648: /* window_offset_clause_opt ::= */ yytestcase(yyruleno==648); + case 652: /* jlimit_clause_opt ::= */ yytestcase(yyruleno==652); + case 669: /* where_clause_opt ::= */ yytestcase(yyruleno==669); + case 678: /* twindow_clause_opt ::= */ yytestcase(yyruleno==678); + case 686: /* sliding_opt ::= */ yytestcase(yyruleno==686); + case 691: /* fill_opt ::= */ yytestcase(yyruleno==691); + case 705: /* having_clause_opt ::= */ yytestcase(yyruleno==705); + case 707: /* range_opt ::= */ yytestcase(yyruleno==707); + case 710: /* every_opt ::= */ yytestcase(yyruleno==710); + case 723: /* slimit_clause_opt ::= */ yytestcase(yyruleno==723); + case 727: /* limit_clause_opt ::= */ yytestcase(yyruleno==727); { yymsp[1].minor.yy600 = NULL; } break; case 53: /* with_opt ::= WITH search_condition */ - case 619: /* from_clause_opt ::= FROM table_reference_list */ yytestcase(yyruleno==619); - case 646: /* join_on_clause_opt ::= ON search_condition */ yytestcase(yyruleno==646); - case 669: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==669); - case 705: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==705); + case 620: /* from_clause_opt ::= FROM table_reference_list */ yytestcase(yyruleno==620); + case 647: /* join_on_clause_opt ::= ON search_condition */ yytestcase(yyruleno==647); + case 670: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==670); + case 706: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==706); { yymsp[-1].minor.yy600 = yymsp[0].minor.yy600; } break; case 54: /* cmd ::= CREATE ENCRYPT_KEY NK_STRING */ @@ -5423,33 +5753,33 @@ static YYACTIONTYPE yy_reduce( case 358: /* sma_func_name ::= FIRST */ yytestcase(yyruleno==358); case 359: /* sma_func_name ::= LAST */ yytestcase(yyruleno==359); case 360: /* sma_func_name ::= LAST_ROW */ yytestcase(yyruleno==360); - case 507: /* db_name ::= NK_ID */ yytestcase(yyruleno==507); - case 508: /* table_name ::= NK_ID */ yytestcase(yyruleno==508); - case 509: /* column_name ::= NK_ID */ yytestcase(yyruleno==509); - case 510: /* function_name ::= NK_ID */ yytestcase(yyruleno==510); - case 511: /* view_name ::= NK_ID */ yytestcase(yyruleno==511); - case 512: /* table_alias ::= NK_ID */ yytestcase(yyruleno==512); - case 513: /* column_alias ::= NK_ID */ yytestcase(yyruleno==513); - case 514: /* column_alias ::= NK_ALIAS */ yytestcase(yyruleno==514); - case 515: /* user_name ::= NK_ID */ yytestcase(yyruleno==515); - case 516: /* topic_name ::= NK_ID */ yytestcase(yyruleno==516); - case 517: /* stream_name ::= NK_ID */ yytestcase(yyruleno==517); - case 518: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==518); - case 519: /* index_name ::= NK_ID */ yytestcase(yyruleno==519); - case 520: /* tsma_name ::= NK_ID */ yytestcase(yyruleno==520); - case 564: /* noarg_func ::= NOW */ yytestcase(yyruleno==564); - case 565: /* noarg_func ::= TODAY */ yytestcase(yyruleno==565); - case 566: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==566); - case 567: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==567); - case 568: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==568); - case 569: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==569); - case 570: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==570); - case 571: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==571); - case 572: /* noarg_func ::= USER */ yytestcase(yyruleno==572); - case 573: /* star_func ::= COUNT */ yytestcase(yyruleno==573); - case 574: /* star_func ::= FIRST */ yytestcase(yyruleno==574); - case 575: /* star_func ::= LAST */ yytestcase(yyruleno==575); - case 576: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==576); + case 508: /* db_name ::= NK_ID */ yytestcase(yyruleno==508); + case 509: /* table_name ::= NK_ID */ yytestcase(yyruleno==509); + case 510: /* column_name ::= NK_ID */ yytestcase(yyruleno==510); + case 511: /* function_name ::= NK_ID */ yytestcase(yyruleno==511); + case 512: /* view_name ::= NK_ID */ yytestcase(yyruleno==512); + case 513: /* table_alias ::= NK_ID */ yytestcase(yyruleno==513); + case 514: /* column_alias ::= NK_ID */ yytestcase(yyruleno==514); + case 515: /* column_alias ::= NK_ALIAS */ yytestcase(yyruleno==515); + case 516: /* user_name ::= NK_ID */ yytestcase(yyruleno==516); + case 517: /* topic_name ::= NK_ID */ yytestcase(yyruleno==517); + case 518: /* stream_name ::= NK_ID */ yytestcase(yyruleno==518); + case 519: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==519); + case 520: /* index_name ::= NK_ID */ yytestcase(yyruleno==520); + case 521: /* tsma_name ::= NK_ID */ yytestcase(yyruleno==521); + case 565: /* noarg_func ::= NOW */ yytestcase(yyruleno==565); + case 566: /* noarg_func ::= TODAY */ yytestcase(yyruleno==566); + case 567: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==567); + case 568: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==568); + case 569: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==569); + case 570: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==570); + case 571: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==571); + case 572: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==572); + case 573: /* noarg_func ::= USER */ yytestcase(yyruleno==573); + case 574: /* star_func ::= COUNT */ yytestcase(yyruleno==574); + case 575: /* star_func ::= FIRST */ yytestcase(yyruleno==575); + case 576: /* star_func ::= LAST */ yytestcase(yyruleno==576); + case 577: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==577); { yylhsminor.yy649 = yymsp[0].minor.yy0; } yymsp[0].minor.yy649 = yylhsminor.yy649; break; @@ -5460,16 +5790,16 @@ static YYACTIONTYPE yy_reduce( case 385: /* agg_func_opt ::= */ yytestcase(yyruleno==385); case 391: /* or_replace_opt ::= */ yytestcase(yyruleno==391); case 422: /* ignore_opt ::= */ yytestcase(yyruleno==422); - case 656: /* tag_mode_opt ::= */ yytestcase(yyruleno==656); - case 658: /* set_quantifier_opt ::= */ yytestcase(yyruleno==658); + case 657: /* tag_mode_opt ::= */ yytestcase(yyruleno==657); + case 659: /* set_quantifier_opt ::= */ yytestcase(yyruleno==659); { yymsp[1].minor.yy705 = false; } break; case 70: /* force_opt ::= FORCE */ case 71: /* unsafe_opt ::= UNSAFE */ yytestcase(yyruleno==71); case 379: /* analyze_opt ::= ANALYZE */ yytestcase(yyruleno==379); case 386: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==386); - case 657: /* tag_mode_opt ::= TAGS */ yytestcase(yyruleno==657); - case 659: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==659); + case 658: /* tag_mode_opt ::= TAGS */ yytestcase(yyruleno==658); + case 660: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==660); { yymsp[0].minor.yy705 = true; } break; case 72: /* cmd ::= ALTER CLUSTER NK_STRING */ @@ -5772,7 +6102,7 @@ static YYACTIONTYPE yy_reduce( yymsp[0].minor.yy748 = yylhsminor.yy748; break; case 159: /* integer_list ::= integer_list NK_COMMA NK_INTEGER */ - case 436: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==436); + case 437: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==437); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -5794,13 +6124,13 @@ static YYACTIONTYPE yy_reduce( case 329: /* tag_list_opt ::= tag_item */ yytestcase(yyruleno==329); case 353: /* func_list ::= func */ yytestcase(yyruleno==353); case 403: /* column_stream_def_list ::= column_stream_def */ yytestcase(yyruleno==403); - case 480: /* tags_literal_list ::= tags_literal */ yytestcase(yyruleno==480); - case 505: /* literal_list ::= signed_literal */ yytestcase(yyruleno==505); - case 579: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==579); - case 585: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==585); - case 661: /* select_list ::= select_item */ yytestcase(yyruleno==661); - case 672: /* partition_list ::= partition_item */ yytestcase(yyruleno==672); - case 733: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==733); + case 481: /* tags_literal_list ::= tags_literal */ yytestcase(yyruleno==481); + case 506: /* literal_list ::= signed_literal */ yytestcase(yyruleno==506); + case 580: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==580); + case 586: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==586); + case 662: /* select_list ::= select_item */ yytestcase(yyruleno==662); + case 673: /* partition_list ::= partition_item */ yytestcase(yyruleno==673); + case 734: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==734); { yylhsminor.yy748 = createNodeList(pCxt, yymsp[0].minor.yy600); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; @@ -5813,12 +6143,12 @@ static YYACTIONTYPE yy_reduce( case 330: /* tag_list_opt ::= tag_list_opt NK_COMMA tag_item */ yytestcase(yyruleno==330); case 354: /* func_list ::= func_list NK_COMMA func */ yytestcase(yyruleno==354); case 404: /* column_stream_def_list ::= column_stream_def_list NK_COMMA column_stream_def */ yytestcase(yyruleno==404); - case 481: /* tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ yytestcase(yyruleno==481); - case 506: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==506); - case 580: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==580); - case 662: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==662); - case 673: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==673); - case 734: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==734); + case 482: /* tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ yytestcase(yyruleno==482); + case 507: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==507); + case 581: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==581); + case 663: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==663); + case 674: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==674); + case 735: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==735); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, yymsp[0].minor.yy600); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -5861,8 +6191,8 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy705, yymsp[0].minor.yy600); } break; case 181: /* cmd ::= ALTER TABLE alter_table_clause */ - case 438: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==438); - case 439: /* cmd ::= insert_query */ yytestcase(yyruleno==439); + case 439: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==439); + case 440: /* cmd ::= insert_query */ yytestcase(yyruleno==440); { pCxt->pRootNode = yymsp[0].minor.yy600; } break; case 182: /* cmd ::= ALTER STABLE alter_table_clause */ @@ -5913,7 +6243,7 @@ static YYACTIONTYPE yy_reduce( yymsp[-5].minor.yy600 = yylhsminor.yy600; break; case 195: /* multi_create_clause ::= multi_create_clause create_subtable_clause */ - case 586: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==586); + case 587: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==587); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-1].minor.yy748, yymsp[0].minor.yy600); } yymsp[-1].minor.yy748 = yylhsminor.yy748; break; @@ -6079,12 +6409,12 @@ static YYACTIONTYPE yy_reduce( { yymsp[-1].minor.yy145.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy145.val = yymsp[0].minor.yy0; } break; case 253: /* duration_list ::= duration_literal */ - case 538: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==538); + case 539: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==539); { yylhsminor.yy748 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; case 254: /* duration_list ::= duration_list NK_COMMA duration_literal */ - case 539: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==539); + case 540: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==540); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -6364,7 +6694,7 @@ yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; case 356: /* sma_func_name ::= function_name */ - case 629: /* alias_opt ::= table_alias */ yytestcase(yyruleno==629); + case 630: /* alias_opt ::= table_alias */ yytestcase(yyruleno==630); { yylhsminor.yy649 = yymsp[0].minor.yy649; } yymsp[0].minor.yy649 = yylhsminor.yy649; break; @@ -6437,11 +6767,11 @@ yymsp[0].minor.yy600); } { pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy705, &yymsp[0].minor.yy649); } break; case 389: /* language_opt ::= */ - case 433: /* on_vgroup_id ::= */ yytestcase(yyruleno==433); + case 434: /* on_vgroup_id ::= */ yytestcase(yyruleno==434); { yymsp[1].minor.yy649 = nil_token; } break; case 390: /* language_opt ::= LANGUAGE NK_STRING */ - case 434: /* on_vgroup_id ::= ON NK_INTEGER */ yytestcase(yyruleno==434); + case 435: /* on_vgroup_id ::= ON NK_INTEGER */ yytestcase(yyruleno==435); { yymsp[-1].minor.yy649 = yymsp[0].minor.yy0; } break; case 393: /* cmd ::= CREATE or_replace_opt VIEW full_view_name AS query_or_subquery */ @@ -6475,11 +6805,11 @@ yymsp[0].minor.yy600); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; case 406: /* stream_col_options ::= */ - case 742: /* column_options ::= */ yytestcase(yyruleno==742); + case 743: /* column_options ::= */ yytestcase(yyruleno==743); { yymsp[1].minor.yy600 = createDefaultColumnOptions(pCxt); } break; case 407: /* stream_col_options ::= stream_col_options PRIMARY KEY */ - case 743: /* column_options ::= column_options PRIMARY KEY */ yytestcase(yyruleno==743); + case 744: /* column_options ::= column_options PRIMARY KEY */ yytestcase(yyruleno==744); { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_PRIMARYKEY, NULL); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; @@ -6513,8 +6843,8 @@ yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; case 421: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - case 686: /* sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ yytestcase(yyruleno==686); - case 710: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==710); + case 687: /* sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ yytestcase(yyruleno==687); + case 711: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==711); { yymsp[-3].minor.yy600 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy600); } break; case 424: /* cmd ::= KILL CONNECTION NK_INTEGER */ @@ -6535,41 +6865,44 @@ yymsp[0].minor.yy600); } case 429: /* cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ { pCxt->pRootNode = createBalanceVgroupLeaderStmt(pCxt, &yymsp[0].minor.yy649); } break; - case 430: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + case 430: /* cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ +{ pCxt->pRootNode = createBalanceVgroupLeaderDBNameStmt(pCxt, &yymsp[0].minor.yy649); } + break; + case 431: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 431: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + case 432: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ { pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy748); } break; - case 432: /* cmd ::= SPLIT VGROUP NK_INTEGER */ + case 433: /* cmd ::= SPLIT VGROUP NK_INTEGER */ { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 435: /* dnode_list ::= DNODE NK_INTEGER */ + case 436: /* dnode_list ::= DNODE NK_INTEGER */ { yymsp[-1].minor.yy748 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } break; - case 437: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ + case 438: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ { pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 440: /* insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + case 441: /* insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ { yymsp[-6].minor.yy600 = createInsertStmt(pCxt, yymsp[-4].minor.yy600, yymsp[-2].minor.yy748, yymsp[0].minor.yy600); } break; - case 441: /* insert_query ::= INSERT INTO full_table_name query_or_subquery */ + case 442: /* insert_query ::= INSERT INTO full_table_name query_or_subquery */ { yymsp[-3].minor.yy600 = createInsertStmt(pCxt, yymsp[-1].minor.yy600, NULL, yymsp[0].minor.yy600); } break; - case 442: /* tags_literal ::= NK_INTEGER */ - case 454: /* tags_literal ::= NK_BIN */ yytestcase(yyruleno==454); - case 463: /* tags_literal ::= NK_HEX */ yytestcase(yyruleno==463); + case 443: /* tags_literal ::= NK_INTEGER */ + case 455: /* tags_literal ::= NK_BIN */ yytestcase(yyruleno==455); + case 464: /* tags_literal ::= NK_HEX */ yytestcase(yyruleno==464); { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 443: /* tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - case 444: /* tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==444); - case 455: /* tags_literal ::= NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==455); - case 456: /* tags_literal ::= NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==456); - case 464: /* tags_literal ::= NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==464); - case 465: /* tags_literal ::= NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==465); - case 473: /* tags_literal ::= NK_STRING NK_PLUS duration_literal */ yytestcase(yyruleno==473); - case 474: /* tags_literal ::= NK_STRING NK_MINUS duration_literal */ yytestcase(yyruleno==474); + case 444: /* tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + case 445: /* tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==445); + case 456: /* tags_literal ::= NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==456); + case 457: /* tags_literal ::= NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==457); + case 465: /* tags_literal ::= NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==465); + case 466: /* tags_literal ::= NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==466); + case 474: /* tags_literal ::= NK_STRING NK_PLUS duration_literal */ yytestcase(yyruleno==474); + case 475: /* tags_literal ::= NK_STRING NK_MINUS duration_literal */ yytestcase(yyruleno==475); { SToken l = yymsp[-2].minor.yy0; SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6578,12 +6911,12 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 445: /* tags_literal ::= NK_PLUS NK_INTEGER */ - case 448: /* tags_literal ::= NK_MINUS NK_INTEGER */ yytestcase(yyruleno==448); - case 457: /* tags_literal ::= NK_PLUS NK_BIN */ yytestcase(yyruleno==457); - case 460: /* tags_literal ::= NK_MINUS NK_BIN */ yytestcase(yyruleno==460); - case 466: /* tags_literal ::= NK_PLUS NK_HEX */ yytestcase(yyruleno==466); - case 469: /* tags_literal ::= NK_MINUS NK_HEX */ yytestcase(yyruleno==469); + case 446: /* tags_literal ::= NK_PLUS NK_INTEGER */ + case 449: /* tags_literal ::= NK_MINUS NK_INTEGER */ yytestcase(yyruleno==449); + case 458: /* tags_literal ::= NK_PLUS NK_BIN */ yytestcase(yyruleno==458); + case 461: /* tags_literal ::= NK_MINUS NK_BIN */ yytestcase(yyruleno==461); + case 467: /* tags_literal ::= NK_PLUS NK_HEX */ yytestcase(yyruleno==467); + case 470: /* tags_literal ::= NK_MINUS NK_HEX */ yytestcase(yyruleno==470); { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6591,18 +6924,18 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 446: /* tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - case 447: /* tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==447); - case 449: /* tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ yytestcase(yyruleno==449); - case 450: /* tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==450); - case 458: /* tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==458); - case 459: /* tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==459); - case 461: /* tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==461); - case 462: /* tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==462); - case 467: /* tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==467); - case 468: /* tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==468); - case 470: /* tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==470); - case 471: /* tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==471); + case 447: /* tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + case 448: /* tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==448); + case 450: /* tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ yytestcase(yyruleno==450); + case 451: /* tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==451); + case 459: /* tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==459); + case 460: /* tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==460); + case 462: /* tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==462); + case 463: /* tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==463); + case 468: /* tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==468); + case 469: /* tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==469); + case 471: /* tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==471); + case 472: /* tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==472); { SToken l = yymsp[-3].minor.yy0; SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6611,12 +6944,12 @@ yymsp[0].minor.yy600); } } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 451: /* tags_literal ::= NK_FLOAT */ + case 452: /* tags_literal ::= NK_FLOAT */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 452: /* tags_literal ::= NK_PLUS NK_FLOAT */ - case 453: /* tags_literal ::= NK_MINUS NK_FLOAT */ yytestcase(yyruleno==453); + case 453: /* tags_literal ::= NK_PLUS NK_FLOAT */ + case 454: /* tags_literal ::= NK_MINUS NK_FLOAT */ yytestcase(yyruleno==454); { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6624,24 +6957,24 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 472: /* tags_literal ::= NK_STRING */ + case 473: /* tags_literal ::= NK_STRING */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 475: /* tags_literal ::= NK_BOOL */ + case 476: /* tags_literal ::= NK_BOOL */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 476: /* tags_literal ::= NULL */ + case 477: /* tags_literal ::= NULL */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 477: /* tags_literal ::= literal_func */ + case 478: /* tags_literal ::= literal_func */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BINARY, NULL, yymsp[0].minor.yy600); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 478: /* tags_literal ::= literal_func NK_PLUS duration_literal */ - case 479: /* tags_literal ::= literal_func NK_MINUS duration_literal */ yytestcase(yyruleno==479); + case 479: /* tags_literal ::= literal_func NK_PLUS duration_literal */ + case 480: /* tags_literal ::= literal_func NK_MINUS duration_literal */ yytestcase(yyruleno==480); { SToken l = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6650,72 +6983,72 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 482: /* literal ::= NK_INTEGER */ + case 483: /* literal ::= NK_INTEGER */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 483: /* literal ::= NK_FLOAT */ + case 484: /* literal ::= NK_FLOAT */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 484: /* literal ::= NK_STRING */ + case 485: /* literal ::= NK_STRING */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 485: /* literal ::= NK_BOOL */ + case 486: /* literal ::= NK_BOOL */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 486: /* literal ::= TIMESTAMP NK_STRING */ + case 487: /* literal ::= TIMESTAMP NK_STRING */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 487: /* literal ::= duration_literal */ - case 497: /* signed_literal ::= signed */ yytestcase(yyruleno==497); - case 521: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==521); - case 522: /* expression ::= literal */ yytestcase(yyruleno==522); - case 524: /* expression ::= column_reference */ yytestcase(yyruleno==524); - case 525: /* expression ::= function_expression */ yytestcase(yyruleno==525); - case 526: /* expression ::= case_when_expression */ yytestcase(yyruleno==526); - case 560: /* function_expression ::= literal_func */ yytestcase(yyruleno==560); - case 610: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==610); - case 614: /* boolean_primary ::= predicate */ yytestcase(yyruleno==614); - case 616: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==616); - case 617: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==617); - case 620: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==620); - case 622: /* table_reference ::= table_primary */ yytestcase(yyruleno==622); - case 623: /* table_reference ::= joined_table */ yytestcase(yyruleno==623); - case 627: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==627); - case 712: /* query_simple ::= query_specification */ yytestcase(yyruleno==712); - case 713: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==713); - case 716: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==716); - case 718: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==718); + case 488: /* literal ::= duration_literal */ + case 498: /* signed_literal ::= signed */ yytestcase(yyruleno==498); + case 522: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==522); + case 523: /* expression ::= literal */ yytestcase(yyruleno==523); + case 525: /* expression ::= column_reference */ yytestcase(yyruleno==525); + case 526: /* expression ::= function_expression */ yytestcase(yyruleno==526); + case 527: /* expression ::= case_when_expression */ yytestcase(yyruleno==527); + case 561: /* function_expression ::= literal_func */ yytestcase(yyruleno==561); + case 611: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==611); + case 615: /* boolean_primary ::= predicate */ yytestcase(yyruleno==615); + case 617: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==617); + case 618: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==618); + case 621: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==621); + case 623: /* table_reference ::= table_primary */ yytestcase(yyruleno==623); + case 624: /* table_reference ::= joined_table */ yytestcase(yyruleno==624); + case 628: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==628); + case 713: /* query_simple ::= query_specification */ yytestcase(yyruleno==713); + case 714: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==714); + case 717: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==717); + case 719: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==719); { yylhsminor.yy600 = yymsp[0].minor.yy600; } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 488: /* literal ::= NULL */ + case 489: /* literal ::= NULL */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 489: /* literal ::= NK_QUESTION */ + case 490: /* literal ::= NK_QUESTION */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 490: /* duration_literal ::= NK_VARIABLE */ - case 687: /* interval_sliding_duration_literal ::= NK_VARIABLE */ yytestcase(yyruleno==687); - case 688: /* interval_sliding_duration_literal ::= NK_STRING */ yytestcase(yyruleno==688); - case 689: /* interval_sliding_duration_literal ::= NK_INTEGER */ yytestcase(yyruleno==689); + case 491: /* duration_literal ::= NK_VARIABLE */ + case 688: /* interval_sliding_duration_literal ::= NK_VARIABLE */ yytestcase(yyruleno==688); + case 689: /* interval_sliding_duration_literal ::= NK_STRING */ yytestcase(yyruleno==689); + case 690: /* interval_sliding_duration_literal ::= NK_INTEGER */ yytestcase(yyruleno==690); { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 491: /* signed ::= NK_INTEGER */ + case 492: /* signed ::= NK_INTEGER */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 492: /* signed ::= NK_PLUS NK_INTEGER */ + case 493: /* signed ::= NK_PLUS NK_INTEGER */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } break; - case 493: /* signed ::= NK_MINUS NK_INTEGER */ + case 494: /* signed ::= NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6723,14 +7056,14 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 494: /* signed ::= NK_FLOAT */ + case 495: /* signed ::= NK_FLOAT */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 495: /* signed ::= NK_PLUS NK_FLOAT */ + case 496: /* signed ::= NK_PLUS NK_FLOAT */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } break; - case 496: /* signed ::= NK_MINUS NK_FLOAT */ + case 497: /* signed ::= NK_MINUS NK_FLOAT */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6738,61 +7071,61 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 498: /* signed_literal ::= NK_STRING */ + case 499: /* signed_literal ::= NK_STRING */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 499: /* signed_literal ::= NK_BOOL */ + case 500: /* signed_literal ::= NK_BOOL */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 500: /* signed_literal ::= TIMESTAMP NK_STRING */ + case 501: /* signed_literal ::= TIMESTAMP NK_STRING */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } break; - case 501: /* signed_literal ::= duration_literal */ - case 503: /* signed_literal ::= literal_func */ yytestcase(yyruleno==503); - case 581: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==581); - case 664: /* select_item ::= common_expression */ yytestcase(yyruleno==664); - case 674: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==674); - case 717: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==717); - case 719: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==719); - case 732: /* search_condition ::= common_expression */ yytestcase(yyruleno==732); + case 502: /* signed_literal ::= duration_literal */ + case 504: /* signed_literal ::= literal_func */ yytestcase(yyruleno==504); + case 582: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==582); + case 665: /* select_item ::= common_expression */ yytestcase(yyruleno==665); + case 675: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==675); + case 718: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==718); + case 720: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==720); + case 733: /* search_condition ::= common_expression */ yytestcase(yyruleno==733); { yylhsminor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 502: /* signed_literal ::= NULL */ + case 503: /* signed_literal ::= NULL */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 504: /* signed_literal ::= NK_QUESTION */ + case 505: /* signed_literal ::= NK_QUESTION */ { yylhsminor.yy600 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 523: /* expression ::= pseudo_column */ + case 524: /* expression ::= pseudo_column */ { yylhsminor.yy600 = yymsp[0].minor.yy600; setRawExprNodeIsPseudoColumn(pCxt, yylhsminor.yy600, true); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 527: /* expression ::= NK_LP expression NK_RP */ - case 615: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==615); - case 731: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==731); + case 528: /* expression ::= NK_LP expression NK_RP */ + case 616: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==616); + case 732: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==732); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 528: /* expression ::= NK_PLUS expr_or_subquery */ + case 529: /* expression ::= NK_PLUS expr_or_subquery */ { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 529: /* expression ::= NK_MINUS expr_or_subquery */ + case 530: /* expression ::= NK_MINUS expr_or_subquery */ { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 530: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + case 531: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6800,7 +7133,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 531: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + case 532: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6808,7 +7141,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 532: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + case 533: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6816,7 +7149,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 533: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + case 534: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6824,7 +7157,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 534: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ + case 535: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6832,14 +7165,14 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 535: /* expression ::= column_reference NK_ARROW NK_STRING */ + case 536: /* expression ::= column_reference NK_ARROW NK_STRING */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 536: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + case 537: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6847,7 +7180,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 537: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + case 538: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6855,81 +7188,81 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 540: /* column_reference ::= column_name */ + case 541: /* column_reference ::= column_name */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy649, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy649)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 541: /* column_reference ::= table_name NK_DOT column_name */ + case 542: /* column_reference ::= table_name NK_DOT column_name */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy649, createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy649)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 542: /* column_reference ::= NK_ALIAS */ + case 543: /* column_reference ::= NK_ALIAS */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 543: /* column_reference ::= table_name NK_DOT NK_ALIAS */ + case 544: /* column_reference ::= table_name NK_DOT NK_ALIAS */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 544: /* pseudo_column ::= ROWTS */ - case 545: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==545); - case 547: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==547); - case 548: /* pseudo_column ::= QEND */ yytestcase(yyruleno==548); - case 549: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==549); - case 550: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==550); - case 551: /* pseudo_column ::= WEND */ yytestcase(yyruleno==551); - case 552: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==552); - case 553: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==553); - case 554: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==554); - case 555: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==555); - case 562: /* literal_func ::= NOW */ yytestcase(yyruleno==562); - case 563: /* literal_func ::= TODAY */ yytestcase(yyruleno==563); + case 545: /* pseudo_column ::= ROWTS */ + case 546: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==546); + case 548: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==548); + case 549: /* pseudo_column ::= QEND */ yytestcase(yyruleno==549); + case 550: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==550); + case 551: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==551); + case 552: /* pseudo_column ::= WEND */ yytestcase(yyruleno==552); + case 553: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==553); + case 554: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==554); + case 555: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==555); + case 556: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==556); + case 563: /* literal_func ::= NOW */ yytestcase(yyruleno==563); + case 564: /* literal_func ::= TODAY */ yytestcase(yyruleno==564); { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 546: /* pseudo_column ::= table_name NK_DOT TBNAME */ + case 547: /* pseudo_column ::= table_name NK_DOT TBNAME */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy649)))); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 556: /* function_expression ::= function_name NK_LP expression_list NK_RP */ - case 557: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==557); + case 557: /* function_expression ::= function_name NK_LP expression_list NK_RP */ + case 558: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==558); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy649, yymsp[-1].minor.yy748)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 558: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - case 559: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ yytestcase(yyruleno==559); + case 559: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + case 560: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ yytestcase(yyruleno==560); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy400)); } yymsp[-5].minor.yy600 = yylhsminor.yy600; break; - case 561: /* literal_func ::= noarg_func NK_LP NK_RP */ + case 562: /* literal_func ::= noarg_func NK_LP NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy649, NULL)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 577: /* star_func_para_list ::= NK_STAR */ + case 578: /* star_func_para_list ::= NK_STAR */ { yylhsminor.yy748 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 582: /* star_func_para ::= table_name NK_DOT NK_STAR */ - case 667: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==667); + case 583: /* star_func_para ::= table_name NK_DOT NK_STAR */ + case 668: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==668); { yylhsminor.yy600 = createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 583: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ + case 584: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy748, yymsp[-1].minor.yy600)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 584: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + case 585: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-2].minor.yy748, yymsp[-1].minor.yy600)); } yymsp[-4].minor.yy600 = yylhsminor.yy600; break; - case 587: /* when_then_expr ::= WHEN common_expression THEN common_expression */ + case 588: /* when_then_expr ::= WHEN common_expression THEN common_expression */ { yymsp[-3].minor.yy600 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } break; - case 589: /* case_when_else_opt ::= ELSE common_expression */ + case 590: /* case_when_else_opt ::= ELSE common_expression */ { yymsp[-1].minor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } break; - case 590: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ - case 595: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==595); + case 591: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ + case 596: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==596); { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6937,7 +7270,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 591: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + case 592: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6945,7 +7278,7 @@ yymsp[0].minor.yy600); } } yymsp[-4].minor.yy600 = yylhsminor.yy600; break; - case 592: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + case 593: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6953,71 +7286,71 @@ yymsp[0].minor.yy600); } } yymsp[-5].minor.yy600 = yylhsminor.yy600; break; - case 593: /* predicate ::= expr_or_subquery IS NULL */ + case 594: /* predicate ::= expr_or_subquery IS NULL */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), NULL)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 594: /* predicate ::= expr_or_subquery IS NOT NULL */ + case 595: /* predicate ::= expr_or_subquery IS NOT NULL */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 596: /* compare_op ::= NK_LT */ + case 597: /* compare_op ::= NK_LT */ { yymsp[0].minor.yy292 = OP_TYPE_LOWER_THAN; } break; - case 597: /* compare_op ::= NK_GT */ + case 598: /* compare_op ::= NK_GT */ { yymsp[0].minor.yy292 = OP_TYPE_GREATER_THAN; } break; - case 598: /* compare_op ::= NK_LE */ + case 599: /* compare_op ::= NK_LE */ { yymsp[0].minor.yy292 = OP_TYPE_LOWER_EQUAL; } break; - case 599: /* compare_op ::= NK_GE */ + case 600: /* compare_op ::= NK_GE */ { yymsp[0].minor.yy292 = OP_TYPE_GREATER_EQUAL; } break; - case 600: /* compare_op ::= NK_NE */ + case 601: /* compare_op ::= NK_NE */ { yymsp[0].minor.yy292 = OP_TYPE_NOT_EQUAL; } break; - case 601: /* compare_op ::= NK_EQ */ + case 602: /* compare_op ::= NK_EQ */ { yymsp[0].minor.yy292 = OP_TYPE_EQUAL; } break; - case 602: /* compare_op ::= LIKE */ + case 603: /* compare_op ::= LIKE */ { yymsp[0].minor.yy292 = OP_TYPE_LIKE; } break; - case 603: /* compare_op ::= NOT LIKE */ + case 604: /* compare_op ::= NOT LIKE */ { yymsp[-1].minor.yy292 = OP_TYPE_NOT_LIKE; } break; - case 604: /* compare_op ::= MATCH */ + case 605: /* compare_op ::= MATCH */ { yymsp[0].minor.yy292 = OP_TYPE_MATCH; } break; - case 605: /* compare_op ::= NMATCH */ + case 606: /* compare_op ::= NMATCH */ { yymsp[0].minor.yy292 = OP_TYPE_NMATCH; } break; - case 606: /* compare_op ::= CONTAINS */ + case 607: /* compare_op ::= CONTAINS */ { yymsp[0].minor.yy292 = OP_TYPE_JSON_CONTAINS; } break; - case 607: /* in_op ::= IN */ + case 608: /* in_op ::= IN */ { yymsp[0].minor.yy292 = OP_TYPE_IN; } break; - case 608: /* in_op ::= NOT IN */ + case 609: /* in_op ::= NOT IN */ { yymsp[-1].minor.yy292 = OP_TYPE_NOT_IN; } break; - case 609: /* in_predicate_value ::= NK_LP literal_list NK_RP */ + case 610: /* in_predicate_value ::= NK_LP literal_list NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 611: /* boolean_value_expression ::= NOT boolean_primary */ + case 612: /* boolean_value_expression ::= NOT boolean_primary */ { SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 612: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + case 613: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -7025,7 +7358,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 613: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + case 614: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -7033,33 +7366,33 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 621: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ + case 622: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ { yylhsminor.yy600 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, JOIN_STYPE_NONE, yymsp[-2].minor.yy600, yymsp[0].minor.yy600, NULL); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 624: /* table_primary ::= table_name alias_opt */ + case 625: /* table_primary ::= table_name alias_opt */ { yylhsminor.yy600 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy649, &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 625: /* table_primary ::= db_name NK_DOT table_name alias_opt */ + case 626: /* table_primary ::= db_name NK_DOT table_name alias_opt */ { yylhsminor.yy600 = createRealTableNode(pCxt, &yymsp[-3].minor.yy649, &yymsp[-1].minor.yy649, &yymsp[0].minor.yy649); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 626: /* table_primary ::= subquery alias_opt */ + case 627: /* table_primary ::= subquery alias_opt */ { yylhsminor.yy600 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 628: /* alias_opt ::= */ + case 629: /* alias_opt ::= */ { yymsp[1].minor.yy649 = nil_token; } break; - case 630: /* alias_opt ::= AS table_alias */ + case 631: /* alias_opt ::= AS table_alias */ { yymsp[-1].minor.yy649 = yymsp[0].minor.yy649; } break; - case 631: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - case 632: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==632); + case 632: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + case 633: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==633); { yymsp[-2].minor.yy600 = yymsp[-1].minor.yy600; } break; - case 633: /* joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + case 634: /* joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ { yylhsminor.yy600 = createJoinTableNode(pCxt, yymsp[-6].minor.yy564, yymsp[-5].minor.yy758, yymsp[-7].minor.yy600, yymsp[-3].minor.yy600, yymsp[-2].minor.yy600); yylhsminor.yy600 = addWindowOffsetClause(pCxt, yylhsminor.yy600, yymsp[-1].minor.yy600); @@ -7067,47 +7400,47 @@ yymsp[0].minor.yy600); } } yymsp[-7].minor.yy600 = yylhsminor.yy600; break; - case 634: /* join_type ::= */ + case 635: /* join_type ::= */ { yymsp[1].minor.yy564 = JOIN_TYPE_INNER; } break; - case 635: /* join_type ::= INNER */ + case 636: /* join_type ::= INNER */ { yymsp[0].minor.yy564 = JOIN_TYPE_INNER; } break; - case 636: /* join_type ::= LEFT */ + case 637: /* join_type ::= LEFT */ { yymsp[0].minor.yy564 = JOIN_TYPE_LEFT; } break; - case 637: /* join_type ::= RIGHT */ + case 638: /* join_type ::= RIGHT */ { yymsp[0].minor.yy564 = JOIN_TYPE_RIGHT; } break; - case 638: /* join_type ::= FULL */ + case 639: /* join_type ::= FULL */ { yymsp[0].minor.yy564 = JOIN_TYPE_FULL; } break; - case 639: /* join_subtype ::= */ + case 640: /* join_subtype ::= */ { yymsp[1].minor.yy758 = JOIN_STYPE_NONE; } break; - case 640: /* join_subtype ::= OUTER */ + case 641: /* join_subtype ::= OUTER */ { yymsp[0].minor.yy758 = JOIN_STYPE_OUTER; } break; - case 641: /* join_subtype ::= SEMI */ + case 642: /* join_subtype ::= SEMI */ { yymsp[0].minor.yy758 = JOIN_STYPE_SEMI; } break; - case 642: /* join_subtype ::= ANTI */ + case 643: /* join_subtype ::= ANTI */ { yymsp[0].minor.yy758 = JOIN_STYPE_ANTI; } break; - case 643: /* join_subtype ::= ASOF */ + case 644: /* join_subtype ::= ASOF */ { yymsp[0].minor.yy758 = JOIN_STYPE_ASOF; } break; - case 644: /* join_subtype ::= WINDOW */ + case 645: /* join_subtype ::= WINDOW */ { yymsp[0].minor.yy758 = JOIN_STYPE_WIN; } break; - case 648: /* window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + case 649: /* window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ { yymsp[-5].minor.yy600 = createWindowOffsetNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 649: /* window_offset_literal ::= NK_VARIABLE */ + case 650: /* window_offset_literal ::= NK_VARIABLE */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createTimeOffsetValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 650: /* window_offset_literal ::= NK_MINUS NK_VARIABLE */ + case 651: /* window_offset_literal ::= NK_MINUS NK_VARIABLE */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -7115,12 +7448,12 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 652: /* jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - case 723: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ yytestcase(yyruleno==723); - case 727: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==727); + case 653: /* jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + case 724: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ yytestcase(yyruleno==724); + case 728: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==728); { yymsp[-1].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } break; - case 653: /* query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + case 654: /* query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ { yymsp[-13].minor.yy600 = createSelectStmt(pCxt, yymsp[-11].minor.yy705, yymsp[-9].minor.yy748, yymsp[-8].minor.yy600, yymsp[-12].minor.yy748); yymsp[-13].minor.yy600 = setSelectStmtTagMode(pCxt, yymsp[-13].minor.yy600, yymsp[-10].minor.yy705); @@ -7134,98 +7467,98 @@ yymsp[0].minor.yy600); } yymsp[-13].minor.yy600 = addFillClause(pCxt, yymsp[-13].minor.yy600, yymsp[-3].minor.yy600); } break; - case 654: /* hint_list ::= */ + case 655: /* hint_list ::= */ { yymsp[1].minor.yy748 = createHintNodeList(pCxt, NULL); } break; - case 655: /* hint_list ::= NK_HINT */ + case 656: /* hint_list ::= NK_HINT */ { yylhsminor.yy748 = createHintNodeList(pCxt, &yymsp[0].minor.yy0); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 660: /* set_quantifier_opt ::= ALL */ + case 661: /* set_quantifier_opt ::= ALL */ { yymsp[0].minor.yy705 = false; } break; - case 663: /* select_item ::= NK_STAR */ + case 664: /* select_item ::= NK_STAR */ { yylhsminor.yy600 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 665: /* select_item ::= common_expression column_alias */ - case 675: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==675); + case 666: /* select_item ::= common_expression column_alias */ + case 676: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==676); { yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 666: /* select_item ::= common_expression AS column_alias */ - case 676: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==676); + case 667: /* select_item ::= common_expression AS column_alias */ + case 677: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==677); { yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 671: /* partition_by_clause_opt ::= PARTITION BY partition_list */ - case 701: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==701); - case 721: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==721); + case 672: /* partition_by_clause_opt ::= PARTITION BY partition_list */ + case 702: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==702); + case 722: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==722); { yymsp[-2].minor.yy748 = yymsp[0].minor.yy748; } break; - case 678: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + case 679: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ { yymsp[-5].minor.yy600 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 679: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + case 680: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ { yymsp[-3].minor.yy600 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 680: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + case 681: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ { yymsp[-5].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 681: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + case 682: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ { yymsp[-7].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy600), releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 682: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + case 683: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ { yymsp[-6].minor.yy600 = createEventWindowNode(pCxt, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } break; - case 683: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + case 684: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ { yymsp[-3].minor.yy600 = createCountWindowNode(pCxt, &yymsp[-1].minor.yy0, &yymsp[-1].minor.yy0); } break; - case 684: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + case 685: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ { yymsp[-5].minor.yy600 = createCountWindowNode(pCxt, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0); } break; - case 691: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ + case 692: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ { yymsp[-3].minor.yy600 = createFillNode(pCxt, yymsp[-1].minor.yy6, NULL); } break; - case 692: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + case 693: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ { yymsp[-5].minor.yy600 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } break; - case 693: /* fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + case 694: /* fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ { yymsp[-5].minor.yy600 = createFillNode(pCxt, FILL_MODE_VALUE_F, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } break; - case 694: /* fill_mode ::= NONE */ + case 695: /* fill_mode ::= NONE */ { yymsp[0].minor.yy6 = FILL_MODE_NONE; } break; - case 695: /* fill_mode ::= PREV */ + case 696: /* fill_mode ::= PREV */ { yymsp[0].minor.yy6 = FILL_MODE_PREV; } break; - case 696: /* fill_mode ::= NULL */ + case 697: /* fill_mode ::= NULL */ { yymsp[0].minor.yy6 = FILL_MODE_NULL; } break; - case 697: /* fill_mode ::= NULL_F */ + case 698: /* fill_mode ::= NULL_F */ { yymsp[0].minor.yy6 = FILL_MODE_NULL_F; } break; - case 698: /* fill_mode ::= LINEAR */ + case 699: /* fill_mode ::= LINEAR */ { yymsp[0].minor.yy6 = FILL_MODE_LINEAR; } break; - case 699: /* fill_mode ::= NEXT */ + case 700: /* fill_mode ::= NEXT */ { yymsp[0].minor.yy6 = FILL_MODE_NEXT; } break; - case 702: /* group_by_list ::= expr_or_subquery */ + case 703: /* group_by_list ::= expr_or_subquery */ { yylhsminor.yy748 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 703: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + case 704: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; - case 707: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + case 708: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ { yymsp[-5].minor.yy600 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 708: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + case 709: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ { yymsp[-3].minor.yy600 = createInterpTimePoint(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 711: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + case 712: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ { yylhsminor.yy600 = addOrderByClause(pCxt, yymsp[-3].minor.yy600, yymsp[-2].minor.yy748); yylhsminor.yy600 = addSlimitClause(pCxt, yylhsminor.yy600, yymsp[-1].minor.yy600); @@ -7233,57 +7566,57 @@ yymsp[0].minor.yy600); } } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 714: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + case 715: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ { yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 715: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + case 716: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ { yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 724: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - case 728: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==728); + case 725: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + case 729: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==729); { yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } break; - case 725: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - case 729: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==729); + case 726: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + case 730: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==730); { yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } break; - case 730: /* subquery ::= NK_LP query_expression NK_RP */ + case 731: /* subquery ::= NK_LP query_expression NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy600); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 735: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + case 736: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ { yylhsminor.yy600 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), yymsp[-1].minor.yy1010, yymsp[0].minor.yy273); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 736: /* ordering_specification_opt ::= */ + case 737: /* ordering_specification_opt ::= */ { yymsp[1].minor.yy1010 = ORDER_ASC; } break; - case 737: /* ordering_specification_opt ::= ASC */ + case 738: /* ordering_specification_opt ::= ASC */ { yymsp[0].minor.yy1010 = ORDER_ASC; } break; - case 738: /* ordering_specification_opt ::= DESC */ + case 739: /* ordering_specification_opt ::= DESC */ { yymsp[0].minor.yy1010 = ORDER_DESC; } break; - case 739: /* null_ordering_opt ::= */ + case 740: /* null_ordering_opt ::= */ { yymsp[1].minor.yy273 = NULL_ORDER_DEFAULT; } break; - case 740: /* null_ordering_opt ::= NULLS FIRST */ + case 741: /* null_ordering_opt ::= NULLS FIRST */ { yymsp[-1].minor.yy273 = NULL_ORDER_FIRST; } break; - case 741: /* null_ordering_opt ::= NULLS LAST */ + case 742: /* null_ordering_opt ::= NULLS LAST */ { yymsp[-1].minor.yy273 = NULL_ORDER_LAST; } break; - case 744: /* column_options ::= column_options ENCODE NK_STRING */ + case 745: /* column_options ::= column_options ENCODE NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_ENCODE, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 745: /* column_options ::= column_options COMPRESS NK_STRING */ + case 746: /* column_options ::= column_options COMPRESS NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_COMPRESS, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 746: /* column_options ::= column_options LEVEL NK_STRING */ + case 747: /* column_options ::= column_options LEVEL NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_LEVEL, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; @@ -7442,12 +7775,56 @@ void Parse( } #endif - do{ + while(1){ /* Exit by "break" */ + assert( yypParser->yytos>=yypParser->yystack ); assert( yyact==yypParser->yytos->stateno ); yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); if( yyact >= YY_MIN_REDUCE ){ - yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, - yyminor ParseCTX_PARAM); + unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */ +#ifndef NDEBUG + assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); + if( yyTraceFILE ){ + int yysize = yyRuleInfoNRhs[yyruleno]; + if( yysize ){ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", + yyTracePrompt, + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos[yysize].stateno); + }else{ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n", + yyTracePrompt, yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ + yypParser->yyhwm++; + assert( yypParser->yyhwm == + (int)(yypParser->yytos - yypParser->yystack)); + } +#endif +#if YYSTACKDEPTH>0 + if( yypParser->yytos>=yypParser->yystackEnd ){ + yyStackOverflow(yypParser); + break; + } +#else + if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ + if( yyGrowStack(yypParser) ){ + yyStackOverflow(yypParser); + break; + } + } +#endif + } + yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor ParseCTX_PARAM); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); #ifndef YYNOERRORRECOVERY @@ -7503,14 +7880,13 @@ void Parse( yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ - while( yypParser->yytos >= yypParser->yystack - && (yyact = yy_find_reduce_action( - yypParser->yytos->stateno, - YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE - ){ + while( yypParser->yytos > yypParser->yystack ){ + yyact = yy_find_reduce_action(yypParser->yytos->stateno, + YYERRORSYMBOL); + if( yyact<=YY_MAX_SHIFTREDUCE ) break; yy_pop_parser_stack(yypParser); } - if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ + if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY @@ -7560,7 +7936,7 @@ void Parse( break; #endif } - }while( yypParser->yytos>yypParser->yystack ); + } #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 1ec3e6192d..a2a0343316 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -246,11 +246,10 @@ static bool scanPathOptMayBeOptimized(SLogicNode* pNode) { static bool scanPathOptShouldGetFuncs(SLogicNode* pNode) { if (QUERY_NODE_LOGIC_PLAN_PARTITION == nodeType(pNode)) { - if (pNode->pParent && QUERY_NODE_LOGIC_PLAN_WINDOW == nodeType(pNode->pParent)) { - if (WINDOW_TYPE_INTERVAL == ((SWindowLogicNode*)pNode->pParent)->winType) return true; - } else { + if (!pNode->pParent || QUERY_NODE_LOGIC_PLAN_WINDOW != nodeType(pNode->pParent) || + WINDOW_TYPE_INTERVAL == ((SWindowLogicNode*)pNode->pParent)->winType) return !scanPathOptHaveNormalCol(((SPartitionLogicNode*)pNode)->pPartitionKeys); - } + return false; } if ((QUERY_NODE_LOGIC_PLAN_WINDOW == nodeType(pNode) && diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 34312dab54..db13da5f3b 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1588,7 +1588,7 @@ int32_t valueEncode(void* value, int32_t vlen, int64_t ttl, char** dest) { if (*dest == NULL) { size_t size = sizeof(key.unixTimestamp) + sizeof(key.len) + sizeof(key.rawLen) + sizeof(key.compress) + key.len; char* p = taosMemoryCalloc(1, size); - char* buf = p; + char* buf = p; len += taosEncodeFixedI64((void**)&buf, key.unixTimestamp); len += taosEncodeFixedI32((void**)&buf, key.len); len += taosEncodeFixedI32((void**)&buf, key.rawLen); @@ -2740,8 +2740,10 @@ int32_t streamStateGetGroupKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey, if (pKey->groupId == groupId) { return 0; } - taosMemoryFree((void*)*pVal); - *pVal = NULL; + if (pVal != NULL) { + taosMemoryFree((void*)*pVal); + *pVal = NULL; + } } return -1; } diff --git a/source/libs/stream/src/streamMeta.c b/source/libs/stream/src/streamMeta.c index 4fa9b2c66f..0aace1cb5b 100644 --- a/source/libs/stream/src/streamMeta.c +++ b/source/libs/stream/src/streamMeta.c @@ -1631,6 +1631,8 @@ int32_t streamMetaAddFailedTask(SStreamMeta* pMeta, int64_t streamId, int32_t ta streamMetaAddTaskLaunchResult(pMeta, hId.streamId, hId.taskId, startTs, now, false); } } else { + streamMetaRUnLock(pMeta); + stError("failed to locate the stream task:0x%" PRIx64 "-0x%x (vgId:%d), it may have been destroyed or stopped", streamId, taskId, pMeta->vgId); code = TSDB_CODE_STREAM_TASK_NOT_EXIST; diff --git a/source/libs/stream/src/tstreamFileState.c b/source/libs/stream/src/tstreamFileState.c index 82c36e6609..83de642e51 100644 --- a/source/libs/stream/src/tstreamFileState.c +++ b/source/libs/stream/src/tstreamFileState.c @@ -557,7 +557,6 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, const int32_t BATCH_LIMIT = 256; int64_t st = taosGetTimestampMs(); - int32_t numOfElems = listNEles(pSnapshot); SListNode* pNode = NULL; int idx = streamStateGetCfIdx(pFileState->pFileStore, pFileState->cfName); @@ -589,8 +588,11 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, } taosMemoryFree(buf); - if (streamStateGetBatchSize(batch) > 0) { + int32_t numOfElems = streamStateGetBatchSize(batch); + if (numOfElems > 0) { streamStatePutBatch_rocksdb(pFileState->pFileStore, batch); + } else { + goto _end; } streamStateClearBatch(batch); @@ -609,6 +611,7 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, streamStatePutBatch_rocksdb(pFileState->pFileStore, batch); } +_end: streamStateDestroyBatch(batch); return code; } diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index fbdb5f4201..c7e654605b 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -463,7 +463,7 @@ _DEL_WAL: pSyncNode->snapshottingIndex, lastApplyIndex); } else { sNError(pSyncNode, "wal snapshot begin error since:%s, index:%" PRId64 ", last apply index:%" PRId64, - terrstr(terrno), pSyncNode->snapshottingIndex, lastApplyIndex); + terrstr(), pSyncNode->snapshottingIndex, lastApplyIndex); atomic_store_64(&pSyncNode->snapshottingIndex, SYNC_INDEX_INVALID); } diff --git a/source/libs/transport/inc/transComm.h b/source/libs/transport/inc/transComm.h index da6d71e07b..e62ca7d69a 100644 --- a/source/libs/transport/inc/transComm.h +++ b/source/libs/transport/inc/transComm.h @@ -123,7 +123,7 @@ typedef struct { STransMsg* pRsp; SEpSet epSet; int8_t hasEpSet; - tsem_t* pSem; + tsem2_t* pSem; int8_t inited; SRWLatch latch; } STransSyncMsg; @@ -302,8 +302,8 @@ int transClearBuffer(SConnBuffer* buf); int transDestroyBuffer(SConnBuffer* buf); int transAllocBuffer(SConnBuffer* connBuf, uv_buf_t* uvBuf); bool transReadComplete(SConnBuffer* connBuf); -int transResetBuffer(SConnBuffer* connBuf); -int transDumpFromBuffer(SConnBuffer* connBuf, char** buf); +int transResetBuffer(SConnBuffer* connBuf, int8_t resetBuf); +int transDumpFromBuffer(SConnBuffer* connBuf, char** buf, int8_t resetBuf); int transSetConnOption(uv_tcp_t* stream, int keepalive); diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index dfd7630f35..d0fb5cbfdb 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -382,13 +382,18 @@ void cliHandleResp(SCliConn* conn) { STransMsgHead* pHead = NULL; - int32_t msgLen = transDumpFromBuffer(&conn->readBuf, (char**)&pHead); + int8_t resetBuf = conn->status == ConnAcquire ? 0 : 1; + int32_t msgLen = transDumpFromBuffer(&conn->readBuf, (char**)&pHead, resetBuf); if (msgLen <= 0) { taosMemoryFree(pHead); tDebug("%s conn %p recv invalid packet ", CONN_GET_INST_LABEL(conn), conn); return; } + if (resetBuf == 0) { + tTrace("%s conn %p not reset read buf", transLabel(pTransInst), conn); + } + if (transDecompressMsg((char**)&pHead, msgLen) < 0) { tDebug("%s conn %p recv invalid packet, failed to decompress", CONN_GET_INST_LABEL(conn), conn); } @@ -2450,7 +2455,7 @@ int cliAppCb(SCliConn* pConn, STransMsg* pResp, SCliMsg* pMsg) { pSyncMsg->hasEpSet = 1; epsetAssign(&pSyncMsg->epSet, &pCtx->epSet); } - tsem_post(pSyncMsg->pSem); + tsem2_post(pSyncMsg->pSem); taosReleaseRef(transGetSyncMsgMgt(), pCtx->syncMsgRef); } else { rpcFreeCont(pResp->pCont); @@ -2679,8 +2684,8 @@ _RETURN: return ret; } int64_t transCreateSyncMsg(STransMsg* pTransMsg) { - tsem_t* sem = taosMemoryCalloc(1, sizeof(tsem_t)); - tsem_init(sem, 0, 0); + tsem2_t* sem = taosMemoryCalloc(1, sizeof(tsem2_t)); + tsem2_init(sem, 0, 0); STransSyncMsg* pSyncMsg = taosMemoryCalloc(1, sizeof(STransSyncMsg)); @@ -2740,7 +2745,7 @@ int transSendRecvWithTimeout(void* shandle, SEpSet* pEpSet, STransMsg* pReq, STr goto _RETURN; } - ret = tsem_timewait(pSyncMsg->pSem, timeoutMs); + ret = tsem2_timewait(pSyncMsg->pSem, timeoutMs); if (ret < 0) { pRsp->code = TSDB_CODE_TIMEOUT_ERROR; ret = TSDB_CODE_TIMEOUT_ERROR; diff --git a/source/libs/transport/src/transComm.c b/source/libs/transport/src/transComm.c index fff13e7ebb..e894d73c59 100644 --- a/source/libs/transport/src/transComm.c +++ b/source/libs/transport/src/transComm.c @@ -126,7 +126,7 @@ int transClearBuffer(SConnBuffer* buf) { return 0; } -int transDumpFromBuffer(SConnBuffer* connBuf, char** buf) { +int transDumpFromBuffer(SConnBuffer* connBuf, char** buf, int8_t resetBuf) { static const int HEADSIZE = sizeof(STransMsgHead); SConnBuffer* p = connBuf; @@ -137,7 +137,7 @@ int transDumpFromBuffer(SConnBuffer* connBuf, char** buf) { if (total >= HEADSIZE && !p->invalid) { *buf = taosMemoryCalloc(1, total); memcpy(*buf, p->buf, total); - if (transResetBuffer(connBuf) < 0) { + if (transResetBuffer(connBuf, resetBuf) < 0) { return -1; } } else { @@ -146,7 +146,7 @@ int transDumpFromBuffer(SConnBuffer* connBuf, char** buf) { return total; } -int transResetBuffer(SConnBuffer* connBuf) { +int transResetBuffer(SConnBuffer* connBuf, int8_t resetBuf) { SConnBuffer* p = connBuf; if (p->total < p->len) { int left = p->len - p->total; @@ -159,8 +159,10 @@ int transResetBuffer(SConnBuffer* connBuf) { p->total = 0; p->len = 0; if (p->cap > BUFFER_CAP) { - p->cap = BUFFER_CAP; - p->buf = taosMemoryRealloc(p->buf, p->cap); + if (resetBuf) { + p->cap = BUFFER_CAP; + p->buf = taosMemoryRealloc(p->buf, p->cap); + } } } else { ASSERTS(0, "invalid read from sock buf"); @@ -681,7 +683,7 @@ void transDestroySyncMsg(void* msg) { if (msg == NULL) return; STransSyncMsg* pSyncMsg = msg; - tsem_destroy(pSyncMsg->pSem); + tsem2_destroy(pSyncMsg->pSem); taosMemoryFree(pSyncMsg->pSem); transFreeMsg(pSyncMsg->pRsp->pCont); taosMemoryFree(pSyncMsg->pRsp); diff --git a/source/libs/transport/src/transSvr.c b/source/libs/transport/src/transSvr.c index 21ad5be869..04f6ac8c95 100644 --- a/source/libs/transport/src/transSvr.c +++ b/source/libs/transport/src/transSvr.c @@ -342,11 +342,15 @@ static bool uvHandleReq(SSvrConn* pConn) { STransMsgHead* pHead = NULL; - int msgLen = transDumpFromBuffer(&pConn->readBuf, (char**)&pHead); + int8_t resetBuf = pConn->status == ConnAcquire ? 0 : 1; + int msgLen = transDumpFromBuffer(&pConn->readBuf, (char**)&pHead, resetBuf); if (msgLen <= 0) { tError("%s conn %p read invalid packet", transLabel(pTransInst), pConn); return false; } + if (resetBuf == 0) { + tTrace("%s conn %p not reset read buf", transLabel(pTransInst), pConn); + } if (transDecompressMsg((char**)&pHead, msgLen) < 0) { tError("%s conn %p recv invalid packet, failed to decompress", transLabel(pTransInst), pConn); @@ -676,7 +680,8 @@ static FORCE_INLINE void destroySmsg(SSvrMsg* smsg) { taosMemoryFree(smsg); } static FORCE_INLINE void destroySmsgWrapper(void* smsg, void* param) { destroySmsg((SSvrMsg*)smsg); } -static void destroyAllConn(SWorkThrd* pThrd) { + +static void destroyAllConn(SWorkThrd* pThrd) { tTrace("thread %p destroy all conn ", pThrd); while (!QUEUE_IS_EMPTY(&pThrd->conn)) { queue* h = QUEUE_HEAD(&pThrd->conn); diff --git a/source/os/src/osSemaphore.c b/source/os/src/osSemaphore.c index 7d1cc746ff..dd962a157f 100644 --- a/source/os/src/osSemaphore.c +++ b/source/os/src/osSemaphore.c @@ -215,14 +215,6 @@ int32_t taosGetAppName(char* name, int32_t* len) { return 0; } -int32_t tsem_wait(tsem_t* sem) { - int ret = 0; - do { - ret = sem_wait(sem); - } while (ret != 0 && errno == EINTR); - return ret; -} - int32_t tsem_timewait(tsem_t* sem, int64_t ms) { int ret = 0; @@ -241,4 +233,101 @@ int32_t tsem_timewait(tsem_t* sem, int64_t ms) { return ret; } +int32_t tsem_wait(tsem_t* sem) { + int ret = 0; + do { + ret = sem_wait(sem); + } while (ret != 0 && errno == EINTR); + return ret; +} + +int tsem2_init(tsem2_t* sem, int pshared, unsigned int value) { + int ret = taosThreadMutexInit(&sem->mutex, NULL); + if (ret != 0) return ret; + ret = taosThreadCondAttrInit(&sem->attr); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + return ret; + } + ret = taosThreadCondAttrSetclock(&sem->attr, CLOCK_MONOTONIC); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondAttrDestroy(&sem->attr); + return ret; + } + ret = taosThreadCondInit(&sem->cond, &sem->attr); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondAttrDestroy(&sem->attr); + return ret; + } + + sem->count = value; + return 0; +} + +int tsem2_post(tsem2_t *sem) { + taosThreadMutexLock(&sem->mutex); + sem->count++; + taosThreadCondSignal(&sem->cond); + taosThreadMutexUnlock(&sem->mutex); + return 0; +} + +int tsem2_destroy(tsem2_t* sem) { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondDestroy(&sem->cond); + taosThreadCondAttrDestroy(&sem->attr); + return 0; +} + +int32_t tsem2_wait(tsem2_t* sem) { + taosThreadMutexLock(&sem->mutex); + while (sem->count <= 0) { + int ret = taosThreadCondWait(&sem->cond, &sem->mutex); + if (0 == ret) { + continue; + } else { + taosThreadMutexUnlock(&sem->mutex); + return ret; + } + } + sem->count--; + taosThreadMutexUnlock(&sem->mutex); + return 0; +} + +int32_t tsem2_timewait(tsem2_t* sem, int64_t ms) { + int ret = 0; + + taosThreadMutexLock(&sem->mutex); + if (sem->count <= 0) { + struct timespec ts = {0}; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1) { + taosThreadMutexUnlock(&sem->mutex); + return -1; + } + + ts.tv_sec += ms / 1000; + ts.tv_nsec += (ms % 1000) * 1000000; + ts.tv_sec += ts.tv_nsec / 1000000000; + ts.tv_nsec %= 1000000000; + + while (sem->count <= 0) { + ret = taosThreadCondTimedWait(&sem->cond, &sem->mutex, &ts); + if (ret != 0) { + taosThreadMutexUnlock(&sem->mutex); + return ret; + } + } + } + + sem->count--; + taosThreadMutexUnlock(&sem->mutex); + return ret; +} + #endif diff --git a/source/os/src/osThread.c b/source/os/src/osThread.c index 0dd5374cf0..0acd6f67f5 100644 --- a/source/os/src/osThread.c +++ b/source/os/src/osThread.c @@ -170,6 +170,16 @@ int32_t taosThreadCondAttrInit(TdThreadCondAttr *attr) { #endif } +int32_t taosThreadCondAttrSetclock(TdThreadCondAttr *attr, int clockId) { +#ifdef __USE_WIN_THREAD + return 0; +#elif defined(__APPLE__) + return 0; +#else + return pthread_condattr_setclock(attr, clockId); +#endif +} + int32_t taosThreadCondAttrSetPshared(TdThreadCondAttr *attr, int32_t pshared) { #ifdef __USE_WIN_THREAD return 0; diff --git a/source/os/test/osSemaphoreTests.cpp b/source/os/test/osSemaphoreTests.cpp index 67cf4bb517..09fbe27f55 100644 --- a/source/os/test/osSemaphoreTests.cpp +++ b/source/os/test/osSemaphoreTests.cpp @@ -71,7 +71,6 @@ TEST(osSemaphoreTests, WaitTime1) { tsem_destroy(&sem); } - TEST(osSemaphoreTests, WaitAndPost) { tsem_t sem; int result = tsem_init(&sem, 0, 0); @@ -106,3 +105,135 @@ TEST(osSemaphoreTests, TimedWait) { result = tsem_destroy(&sem); EXPECT_EQ(result, 0); } + +TEST(osSemaphoreTests, Performance1_1) { + tsem_t sem; + const int count = 100000; + + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + for (int i = 0; i < count; ++i) { + tsem_wait(&sem); + } + tsem_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance1_2) { + tsem2_t sem; + const int count = 100000; + + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + for (int i = 0; i < count; ++i) { + tsem2_wait(&sem); + } + tsem2_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance2_1) { + tsem_t sem; + const int count = 50000; + + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + for (int i = 0; i < count * 2; ++i) { + tsem_wait(&sem); + } + tsem_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance2_2) { + tsem2_t sem; + const int count = 50000; + + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + for (int i = 0; i < count * 2; ++i) { + tsem2_wait(&sem); + } + tsem2_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance3_1) { + const int count = 100000; + + for (int i = 0; i < count; ++i) { + tsem_t sem; + tsem_init(&sem, 0, 1); + EXPECT_EQ(tsem_timewait(&sem, 1000), 0); + tsem_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance3_2) { + const int count = 100000; + + for (int i = 0; i < count; ++i) { + tsem2_t sem; + tsem2_init(&sem, 0, 1); + EXPECT_EQ(tsem2_timewait(&sem, 1000), 0); + tsem2_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance4_1) { + const int count = 1000; + for (int i = 0; i < count; ++i) { + tsem_t sem; + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + tsem_post(&sem); + }).detach(); + + tsem_timewait(&sem, 1000); + + tsem_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance4_2) { + const int count = 1000; + for (int i = 0; i < count; ++i) { + tsem2_t sem; + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + tsem2_post(&sem); + }).detach(); + + tsem2_timewait(&sem, 1000); + + tsem2_destroy(&sem); + } +} diff --git a/source/util/CMakeLists.txt b/source/util/CMakeLists.txt index 5ee0740eef..f907746821 100644 --- a/source/util/CMakeLists.txt +++ b/source/util/CMakeLists.txt @@ -21,29 +21,29 @@ target_include_directories( PRIVATE "${TD_SOURCE_DIR}/utils/TSZ/sz/inc" PRIVATE "${TD_SOURCE_DIR}/utils/TSZ/zstd/" PRIVATE "${TD_SOURCE_DIR}/contrib/lzma2/" + PRIVATE "${TD_SOURCE_DIR}/contrib/pcre2/" ) target_link_directories( util PUBLIC "${TD_SOURCE_DIR}/contrib/lzma2" + PUBLIC "${TD_SOURCE_DIR}/contrib/pcre2" ) - if (TD_LINUX) target_link_libraries( util PUBLIC os common - PUBLIC lz4_static fast-lzma2 - PUBLIC api cjson geos_c TSZ - - ) -else() + PUBLIC lz4_static fast-lzma2 pcre2-8 + PUBLIC api cjson geos_c TSZ + ) +else() target_link_libraries( util PUBLIC os common - PUBLIC lz4_static - PUBLIC api cjson geos_c TSZ - ) + PUBLIC lz4_static pcre2-8 + PUBLIC api cjson geos_c TSZ + ) endif() if(${BUILD_TEST}) diff --git a/source/util/src/tcompression.c b/source/util/src/tcompression.c index da67b68c1c..5a3dc867e6 100644 --- a/source/util/src/tcompression.c +++ b/source/util/src/tcompression.c @@ -61,9 +61,7 @@ #include "zstd.h" #endif -#ifdef TD_TSZ #include "td_sz.h" -#endif int32_t tsCompressPlain2(const char *const input, const int32_t nelements, char *const output, const char type); int32_t tsDecompressPlain2(const char *const input, const int32_t nelements, char *const output, const char type); @@ -322,7 +320,6 @@ static const int32_t TEST_NUMBER = 1; #define safeInt64Add(a, b) (((a >= 0) && (b <= INT64_MAX - a)) || ((a < 0) && (b >= INT64_MIN - a))) -#ifdef TD_TSZ bool lossyFloat = false; bool lossyDouble = false; @@ -341,8 +338,6 @@ int32_t tsCompressInit(char *lossyColumns, float fPrecision, double dPrecision, // exit call void tsCompressExit() { tdszExit(); } -#endif - /* * Compress Integer (Simple8B). */ @@ -1214,7 +1209,6 @@ int32_t tsDecompressFloatImp(const char *const input, const int32_t nelements, c return nelements * FLOAT_BYTES; } -#ifdef TD_TSZ // // ---------- float double lossy ----------- // @@ -1283,7 +1277,6 @@ int32_t tsDecompressDoubleLossyImp(const char *input, int32_t compressedSize, co // decompressed with sz return tdszDecompress(SZ_DOUBLE, input + 1, compressedSize - 1, nelements, output); } -#endif #ifdef BUILD_NO_CALL /************************************************************************* @@ -2463,13 +2456,11 @@ int32_t tsDecompressTimestamp(void *pIn, int32_t nIn, int32_t nEle, void *pOut, // Float ===================================================== int32_t tsCompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ // lossy mode if (lossyFloat) { return tsCompressFloatLossyImp(pIn, nEle, pOut); // lossless mode } else { -#endif if (cmprAlg == ONE_STAGE_COMP) { return tsCompressFloatImp(pIn, nEle, pOut); } else if (cmprAlg == TWO_STAGE_COMP) { @@ -2479,19 +2470,15 @@ int32_t tsCompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_ ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } int32_t tsDecompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (HEAD_ALGO(((uint8_t *)pIn)[0]) == ALGO_SZ_LOSSY) { // decompress lossy return tsDecompressFloatLossyImp(pIn, nIn, nEle, pOut); } else { -#endif // decompress lossless if (cmprAlg == ONE_STAGE_COMP) { return tsDecompressFloatImp(pIn, nEle, pOut); @@ -2502,20 +2489,16 @@ int32_t tsDecompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int3 ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } // Double ===================================================== int32_t tsCompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (lossyDouble) { // lossy mode return tsCompressDoubleLossyImp(pIn, nEle, pOut); } else { -#endif // lossless mode if (cmprAlg == ONE_STAGE_COMP) { return tsCompressDoubleImp(pIn, nEle, pOut); @@ -2526,19 +2509,15 @@ int32_t tsCompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32 ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } int32_t tsDecompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (HEAD_ALGO(((uint8_t *)pIn)[0]) == ALGO_SZ_LOSSY) { // decompress lossy return tsDecompressDoubleLossyImp(pIn, nIn, nEle, pOut); } else { -#endif // decompress lossless if (cmprAlg == ONE_STAGE_COMP) { return tsDecompressDoubleImp(pIn, nEle, pOut); @@ -2549,9 +2528,7 @@ int32_t tsDecompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } // Binary ===================================================== diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 3ef656b2b4..ad811cc891 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -259,6 +259,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_CREATING, "Database in creating TAOS_DEFINE_ERROR(TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE, "Encryption is not allowed to be changed after database is created") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INCONSIST_ENCRYPT_KEY, "Inconsistent encryption key") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ENCRYPT_KEY, "The cluster has not been set properly for database encryption") +TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED, "The database encryption function grant expired") // mnode-node TAOS_DEFINE_ERROR(TSDB_CODE_MND_MNODE_ALREADY_EXIST, "Mnode already exists") @@ -719,7 +720,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_STAT, "Invalid tsma state" TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_PTR, "Invalid tsma pointer") TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_PARA, "Invalid tsma parameters") TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_TB, "Invalid table to create tsma, only stable or normal table allowed") -TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_INTERVAL, "Invalid tsma interval, 1ms ~ 1h is allowed") +TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_INTERVAL, "Invalid tsma interval, 1m ~ 1h is allowed") TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_INVALID_FUNC_PARAM, "Invalid tsma func param, only one non-tag column allowed") TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_UNSUPPORTED_FUNC, "Tsma func not supported") TAOS_DEFINE_ERROR(TSDB_CODE_TSMA_MUST_BE_DROPPED, "Tsma must be dropped first") diff --git a/source/util/src/tgeosctx.c b/source/util/src/tgeosctx.c index b4e7e953df..b60e9ee8ac 100644 --- a/source/util/src/tgeosctx.c +++ b/source/util/src/tgeosctx.c @@ -43,6 +43,10 @@ void destroyThreadLocalGeosCtx() { tlGeosCtx.WKBWriter = NULL; } + if (tlGeosCtx.WKTRegex) { + destroyRegexes(tlGeosCtx.WKTRegex, tlGeosCtx.WKTMatchData); + } + if(tlGeosCtx.handle) { GEOS_finish_r(tlGeosCtx.handle); tlGeosCtx.handle = NULL; diff --git a/source/util/src/tpcr2.c b/source/util/src/tpcr2.c new file mode 100644 index 0000000000..5f5e4ffde6 --- /dev/null +++ b/source/util/src/tpcr2.c @@ -0,0 +1,35 @@ +#include "tpcre2.h" + +int32_t doRegComp(pcre2_code** ppRegex, pcre2_match_data** ppMatchData, const char* pattern) { + uint32_t options = PCRE2_CASELESS; + int errorcode; + PCRE2_SIZE erroroffset; + + *ppRegex = pcre2_compile((PCRE2_SPTR8)pattern, PCRE2_ZERO_TERMINATED, options, &errorcode, &erroroffset, NULL); + if (*ppRegex == NULL) { + PCRE2_UCHAR buffer[256]; + pcre2_get_error_message(errorcode, buffer, sizeof(buffer)); + return 1; + } + + *ppMatchData = pcre2_match_data_create_from_pattern(*ppRegex, NULL); + + return 0; +} + +int32_t doRegExec(const char* pString, pcre2_code* pRegex, pcre2_match_data* pMatchData) { + int32_t ret = 0; + ret = pcre2_match(pRegex, (PCRE2_SPTR)pString, PCRE2_ZERO_TERMINATED, 0, 0, pMatchData, NULL); + if (ret < 0) { + PCRE2_UCHAR buffer[256]; + pcre2_get_error_message(ret, buffer, sizeof(buffer)); + return 1; + } + + return (ret > 0) ? 0 : 1; +} + +void destroyRegexes(pcre2_code* pWktRegex, pcre2_match_data* pWktMatchData) { + pcre2_code_free(pWktRegex); + pcre2_match_data_free(pWktMatchData); +} diff --git a/source/util/src/tworker.c b/source/util/src/tworker.c index d2651c1d2c..07186331ae 100644 --- a/source/util/src/tworker.c +++ b/source/util/src/tworker.c @@ -224,6 +224,7 @@ static void *tAutoQWorkerThreadFp(SQueueWorker *worker) { taosUpdateItemSize(qinfo.queue, 1); } + DestoryThreadLocalRegComp(); return NULL; } diff --git a/tests/army/community/insert/insert_basic.py b/tests/army/community/insert/insert_basic.py new file mode 100644 index 0000000000..481db4eadd --- /dev/null +++ b/tests/army/community/insert/insert_basic.py @@ -0,0 +1,86 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import time +import random + +import taos +import frame +import frame.etool + + +from frame.log import * +from frame.cases import * +from frame.sql import * +from frame.caseBase import * +from frame import * + + +class TDTestCase(TBase): + + def checkGeometry(self): + tdLog.info(f"check geometry") + + tdSql.execute("create database db_geometry;") + tdSql.execute("use db_geometry;") + tdSql.execute("create table t_ge (ts timestamp, id int, c1 GEOMETRY(512));") + tdSql.execute("insert into t_ge values(now, 1, 'MULTIPOINT ((0 0), (1 1))');") + tdSql.execute("insert into t_ge values(now, 1, 'MULTIPOINT (0 0, 1 1)');") + tdSql.execute("insert into t_ge values(now, 2, 'POINT (0 0)');") + tdSql.execute("insert into t_ge values(now, 2, 'POINT EMPTY');") + tdSql.execute("insert into t_ge values(now, 3, 'LINESTRING (0 0, 0 1, 1 2)');") + tdSql.execute("insert into t_ge values(now, 3, 'LINESTRING EMPTY');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON EMPTY');") + tdSql.execute("insert into t_ge values(now, 5, 'MULTILINESTRING ((0 0, 1 1), (2 2, 3 3))');") + tdSql.execute("insert into t_ge values(now, 6, 'MULTIPOLYGON (((1 1, 1 3, 3 3, 3 1, 1 1)), ((4 3, 6 3, 6 1, 4 1, 4 3)))');") + tdSql.execute("insert into t_ge values(now, 7, 'GEOMETRYCOLLECTION (MULTIPOINT((0 0), (1 1)), POINT(3 4), LINESTRING(2 3, 3 4))');") + tdSql.query("select * from t_ge;") + tdSql.checkRows(12) + tdSql.query("select * from t_ge where id=1;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=2;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=3;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=4;") + tdSql.checkRows(3) + tdSql.query("select * from t_ge where id=5;") + tdSql.checkRows(1) + tdSql.query("select * from t_ge where id=6;") + tdSql.checkRows(1) + tdSql.query("select * from t_ge where id=7;") + tdSql.checkRows(1) + + def checkDataType(self): + tdLog.info(f"check datatype") + + self.checkGeometry() + + + + # run + def run(self): + tdLog.debug(f"start to excute {__file__}") + + # check insert datatype + self.checkDataType() + + tdLog.success(f"{__file__} successfully executed") + + + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) \ No newline at end of file diff --git a/tests/army/community/insert/test_column_tag_boundary.py b/tests/army/community/insert/test_column_tag_boundary.py new file mode 100644 index 0000000000..4c04fd3f9b --- /dev/null +++ b/tests/army/community/insert/test_column_tag_boundary.py @@ -0,0 +1,181 @@ +from frame.log import * +from frame.cases import * +from frame.sql import * +from frame.caseBase import * +from frame import * +from frame.eos import * +import random +import string + +class TDTestCase(TBase): + """Add test case to test column and tag boundary for task TD-28586 + """ + def init(self, conn, logSql, replicaVar=1): + self.replicaVar = int(replicaVar) + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + # define the max properties of column and tag + self.super_table_max_column_num = 4096 + self.max_tag_num = 128 + self.max_tag_length = 16382 + self.max_column_length = 65517 + self.child_table_num = 1 + self.insert_round_num = 700 + self.row_num_per_round = 15 + + def prepare_data(self): + # database + tdSql.execute("create database db;") + tdSql.execute("use db;") + + def test_binary_boundary(self): + # create tables + tdSql.execute(f"create table st_binary (ts timestamp, c1 binary({self.max_column_length})) tags (t1 binary({self.max_tag_length}));") + for i in range(self.child_table_num): + # create child table with max column and tag length + tag = ''.join(random.sample(string.ascii_lowercase, 1)) * self.max_tag_length + tdSql.execute(f"create table ct_binary{i+1} using st_binary tags('{tag}');") + # insert data + for j in range(self.insert_round_num): + sql = "insert into ct_binary%s values" % (i+1) + for k in range(self.row_num_per_round): + sql += "(now+%ss, '%s')," % (str(j * 10 + k + 1), 'a' * self.max_column_length) + tdSql.execute(sql) + tdLog.info(f"Insert {self.row_num_per_round} rows data into ct_binary{i+1} {j+1} times successfully") + tdSql.execute("flush database db;") + # check the data + for i in range(self.child_table_num): + tdSql.query(f"select * from ct_binary{i+1};") + tdSql.checkRows(10500) + row_num = random.randint(0, 9999) + tdSql.checkData(row_num, 1, 'a' * self.max_column_length) + tdSql.query(f"show tags from ct_binary{i+1};") + tdSql.checkData(0, 5, tag) + + def test_varchar_boundary(self): + # create tables + tdSql.execute(f"create table st_varchar (ts timestamp, c1 varchar({self.max_column_length})) tags (t1 varchar({self.max_tag_length}));") + for i in range(self.child_table_num): + # create child table with max column and tag length + tag = ''.join(random.sample(string.ascii_lowercase, 1)) * self.max_tag_length + tdSql.execute(f"create table ct_varchar{i+1} using st_varchar tags('{tag}');") + # insert data + for j in range(self.insert_round_num): + sql = "insert into ct_varchar%s values" % (i+1) + for k in range(self.row_num_per_round): + sql += "(now+%ss, '%s')," % (str(j * 10 + k + 1), 'b' * self.max_column_length) + tdSql.execute(sql) + tdLog.info(f"Insert {self.row_num_per_round} rows data into ct_varchar{i+1} {j+1} times successfully") + tdSql.execute("flush database db;") + # check the data + for i in range(self.child_table_num): + tdSql.query(f"select * from ct_varchar{i+1};") + tdSql.checkRows(10500) + row_num = random.randint(0, 9999) + tdSql.checkData(row_num, 1, 'b' * self.max_column_length) + tdSql.query(f"show tags from ct_varchar{i+1};") + tdSql.checkData(0, 5, tag) + + def gen_chinese_string(self, length): + start = 0x4e00 + end = 0x9fa5 + chinese_string = '' + for _ in range(length): + chinese_string += chr(random.randint(start, end)) + return chinese_string + + def test_nchar_boundary(self): + max_nchar_column_length = self.max_column_length // 4 + max_nchar_tag_length = self.max_tag_length // 4 + # create tables + tdSql.execute(f"create table st_nchar (ts timestamp, c1 nchar({max_nchar_column_length})) tags (t1 nchar({max_nchar_tag_length}));") + for i in range(self.child_table_num): + # create child table with max column and tag length + tag = self.gen_chinese_string(max_nchar_tag_length) + column = self.gen_chinese_string(max_nchar_column_length) + tdSql.execute(f"create table ct_nchar{i+1} using st_nchar tags('{tag}');") + # insert data + for j in range(self.insert_round_num): + sql = "insert into ct_nchar%s values" % (i+1) + for k in range(self.row_num_per_round): + sql += "(now+%ss, '%s')," % (str(j * 10 + k + 1), column) + tdSql.execute(sql) + tdLog.info(f"Insert {self.row_num_per_round} rows data into ct_nchar{i+1} {j+1} times successfully") + tdSql.execute("flush database db;") + # check the data + for i in range(self.child_table_num): + tdSql.query(f"select * from ct_nchar{i+1};") + tdSql.checkRows(10500) + row_num = random.randint(0, 9999) + tdSql.checkData(row_num, 1, column) + tdSql.query(f"show tags from ct_nchar{i+1};") + tdSql.checkData(0, 5, tag) + + def test_varbinary_boundary(self): + row_num_per_round = 8 + # create tables + tdSql.execute(f"create table st_varbinary (ts timestamp, c1 varbinary({self.max_column_length})) tags (t1 varbinary({self.max_tag_length}));") + for i in range(self.child_table_num): + # create child table with max column and tag length + tag = (''.join(random.sample(string.ascii_lowercase, 1)) * self.max_tag_length).encode().hex() + column = (''.join(random.sample(string.ascii_lowercase, 1)) * self.max_column_length).encode().hex() + tdSql.execute("create table ct_varbinary%s using st_varbinary tags('%s');" % (str(i+1), '\\x' + tag)) + # insert data + for j in range(self.insert_round_num): + sql = "insert into ct_varbinary%s values" % (i+1) + for k in range(row_num_per_round): + sql += "(now+%ss, '%s')," % (str(j * 10 + k + 1), '\\x' + column) + tdSql.execute(sql) + tdLog.info(f"Insert {row_num_per_round} rows data into ct_varbinary{i+1} {j+1} times successfully") + tdSql.execute("flush database db;") + # check the data + for i in range(self.child_table_num): + tdSql.query(f"select * from ct_varbinary{i+1};") + tdSql.checkRows(5600) + row_num = random.randint(0, 5599) + tdSql.checkData(row_num, 1, bytes.fromhex(column)) + tdSql.query(f"show tags from ct_varbinary{i+1};") + tdSql.checkData(0, 5, '\\x' + tag.upper()) + + def test_json_tag_boundary(self): + row_num_per_round = 8 + max_json_tag_length = 4095 + max_json_tag_key_length = 256 + # create tables + tdSql.execute(f"create table st_json_tag (ts timestamp, c1 varbinary({self.max_column_length})) tags (t1 json);") + for i in range(self.child_table_num): + # create child table with max column and tag length + tag_key = ''.join(random.sample(string.ascii_lowercase, 1)) * max_json_tag_key_length + tag_value = ''.join(random.sample(string.ascii_lowercase, 1)) * (max_json_tag_length - max_json_tag_key_length - 7) + column = (''.join(random.sample(string.ascii_lowercase, 1)) * self.max_column_length).encode().hex() + tdSql.execute("create table ct_json_tag%s using st_json_tag tags('%s');" % (str(i+1), f'{{"{tag_key}":"{tag_value}"}}')) + # insert data + for j in range(self.insert_round_num): + sql = "insert into ct_json_tag%s values" % (i+1) + for k in range(row_num_per_round): + sql += "(now+%ss, '%s')," % (str(j * 10 + k + 1), '\\x' + column) + tdSql.execute(sql) + tdLog.info(f"Insert {row_num_per_round} rows data into ct_json_tag{i+1} {j+1} times successfully") + tdSql.execute("flush database db;") + # check the data + for i in range(self.child_table_num): + tdSql.query(f"select * from ct_json_tag{i+1} where t1->'{tag_key}' = '{tag_value}';") + tdSql.checkRows(5600) + row_num = random.randint(0, 5599) + tdSql.checkData(row_num, 1, bytes.fromhex(column)) + + def run(self): + self.prepare_data() + self.test_binary_boundary() + self.test_varchar_boundary() + self.test_nchar_boundary() + self.test_varbinary_boundary() + self.test_json_tag_boundary() + + def stop(self): + tdSql.execute("drop database db;") + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/army/community/query/show.py b/tests/army/community/query/show.py index 9192aee06e..980e60387a 100644 --- a/tests/army/community/query/show.py +++ b/tests/army/community/query/show.py @@ -102,6 +102,22 @@ class TDTestCase(TBase): allRows = self.insert_rows * self.childtable_count tdSql.checkFirstValue(sql, allRows) + def checkShowTags(self): + # verification for TD-29904 + tdSql.error("show tags from t100000", expectErrInfo='Fail to get table info, error: Table does not exist') + + sql = "show tags from child1" + tdSql.query(sql) + tdSql.checkRows(5) + + sql = f"show tags from child1 from {self.db}" + tdSql.query(sql) + tdSql.checkRows(5) + + sql = f"show tags from {self.db}.child1" + tdSql.query(sql) + tdSql.checkRows(5) + def checkShow(self): # not support sql = "show accounts;" @@ -125,10 +141,12 @@ class TDTestCase(TBase): sqls = [ "show scores;", "SHOW CLUSTER VARIABLES", - "SHOW BNODES;", + # "SHOW BNODES;", ] tdSql.executes(sqls) + self.checkShowTags() + # run def run(self): @@ -143,6 +161,9 @@ class TDTestCase(TBase): # do action self.doQuery() + # check show + self.checkShow() + tdLog.success(f"{__file__} successfully executed") diff --git a/tests/army/community/storage/compressBasic.py b/tests/army/community/storage/compressBasic.py index db52c9baf8..48254fe3ac 100644 --- a/tests/army/community/storage/compressBasic.py +++ b/tests/army/community/storage/compressBasic.py @@ -47,14 +47,20 @@ class TDTestCase(TBase): dtypes = [ "tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned", "bigint","bigint unsigned","timestamp","bool","float","double","binary(16)","nchar(16)", "varchar(16)","varbinary(16)"] + + def combineValid(self, datatype, encode, compress): + if datatype != "float" and datatype != "double": + if compress == "tsz": + return False + return True def genAllSqls(self, stbName, max): # encode encodes = [ - [["tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned","bigint","bigint unsigned"], ["simple8b"]], - [["timestamp","bigint","bigint unsigned"], ["delta-i"]], - [["bool"], ["bit-packing"]], - [["float","double"], ["delta-d"]] + [["tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned","bigint","bigint unsigned"], ["simple8B"]], + [["timestamp","bigint","bigint unsigned"], ["Delta-i"]], + [["bool"], ["Bit-packing"]], + [["float","double"], ["Delta-d"]] ] c = 0 # column number @@ -65,7 +71,6 @@ class TDTestCase(TBase): # loop append sqls for lines in encodes: - print(lines) for datatype in lines[0]: for encode in lines[1]: for compress in self.compresses: @@ -74,8 +79,9 @@ class TDTestCase(TBase): # first sql = f"create table {self.db}.st{t} (ts timestamp" else: - sql += f", c{c} {datatype} ENCODE '{encode}' COMPRESS '{compress}' LEVEL '{level}'" - c += 1 + if self.combineValid(datatype, encode, compress): + sql += f", c{c} {datatype} ENCODE '{encode}' COMPRESS '{compress}' LEVEL '{level}'" + c += 1 if c >= max: # append sqls @@ -97,9 +103,11 @@ class TDTestCase(TBase): # check error create def errorCreate(self): sqls = [ - f"create table terr(ts timestamp, c0 int ENCODE 'abc') ", - f"" + f"create table terr(ts timestamp, c0 int ENCODE 'simple8B' COMPRESS 'tsz' LEVEL 'high') ", + f"create table terr(ts timestamp, bi bigint encode 'bit-packing') tags (area int);" + f"create table terr(ts timestamp, ic int encode 'delta-d') tags (area int);" ] + tdSql.errors(sqls) for dtype in self.dtypes: # encode @@ -111,6 +119,11 @@ class TDTestCase(TBase): # level sql = f"create table terr(ts timestamp, c0 {dtype} LEVEL 'hig') " tdSql.error(sql) + + # tsz check + if dtype != "float" and dtype != "double": + sql = f"create table terr(ts timestamp, c0 {dtype} COMPRESS 'tsz') " + tdSql.error(sql) # default value correct def defaultCorrect(self): diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index d9d16d1f57..7348b1fea0 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -11,14 +11,16 @@ # army-test # ,,y,army,./pytest.sh python3 ./test.py -f enterprise/multi-level/mlevel_basic.py -N 3 -L 3 -D 2 -,,y,army,./pytest.sh python3 ./test.py -f enterprise/s3/s3Basic.py -N 3 +,,n,army,python3 ./test.py -f enterprise/s3/s3Basic.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/snapshot.py -N 3 -L 3 -D 2 ,,y,army,./pytest.sh python3 ./test.py -f community/query/function/test_func_elapsed.py ,,y,army,./pytest.sh python3 ./test.py -f community/query/test_join.py ,,y,army,./pytest.sh python3 ./test.py -f community/query/test_compare.py +,,y,army,./pytest.sh python3 ./test.py -f community/insert/test_column_tag_boundary.py ,,y,army,./pytest.sh python3 ./test.py -f community/query/fill/fill_desc.py -N 3 -L 3 -D 2 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/incSnapshot.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/query/query_basic.py -N 3 +,,y,army,./pytest.sh python3 ./test.py -f community/insert/insert_basic.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/splitVgroupByLearner.py -N 3 ,,n,army,python3 ./test.py -f community/cmdline/fullopt.py ,,n,army,python3 ./test.py -f community/query/show.py -N 3 @@ -489,11 +491,11 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last+last_row.py -Q 2 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last+last_row.py -Q 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/last+last_row.py -Q 4 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -R -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 2 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 3 -#,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 4 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -R +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 2 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_1.py -Q 4 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_2.py ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_2.py -R ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_2.py -Q 2 @@ -509,6 +511,11 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_4.py -Q 2 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_4.py -Q 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_4.py -Q 4 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_5.py +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_5.py -R +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_5.py -Q 2 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_5.py -Q 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/primary_ts_base_5.py -Q 4 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/leastsquares.py -R ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/length.py diff --git a/tests/parallel_test/run_case.sh b/tests/parallel_test/run_case.sh index 7429c9976b..ff84d9e66c 100755 --- a/tests/parallel_test/run_case.sh +++ b/tests/parallel_test/run_case.sh @@ -79,7 +79,7 @@ md5sum /home/TDinternal/debug/build/lib/libtaos.so #define taospy 2.7.10 pip3 list|grep taospy pip3 uninstall taospy -y -pip3 install --default-timeout=120 taospy==2.7.13 +pip3 install --default-timeout=120 taospy==2.7.15 #define taos-ws-py 0.3.1 pip3 list|grep taos-ws-py diff --git a/tests/script/sh/checkAsan.sh b/tests/script/sh/checkAsan.sh index d2f1e13e8f..b1571aa173 100755 --- a/tests/script/sh/checkAsan.sh +++ b/tests/script/sh/checkAsan.sh @@ -72,7 +72,12 @@ python_error=$(cat ${LOG_DIR}/*.info | grep -w "stack" | wc -l) #0 0x7f2d64f5a808 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144 #1 0x7f2d63fcf459 in strerror /build/glibc-SzIz7B/glibc-2.31/string/strerror.c:38 -runtime_error=$(cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type" | grep -v "signed integer overflow" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cc" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cpp" | grep -v "sclvector.c" | wc -l) + +# TD-29953 +#/home/TDinternal/community/utils/TSZ/sz/src/sz_double.c:388:59: runtime error: 2.64021e+25 is outside the range of representable values of type 'long unsigned int' +#/home/TDinternal/community/utils/TSZ/sz/src/sz_float.c:407:59: runtime error: 5.76041e+19 is outside the range of representable values of type 'long unsigned int' +#/home/TDinternal/community/source/libs/scalar/src/sclfunc.c:808:11: runtime error: -3.40401e+18 is outside the range of representable values of type 'int' +runtime_error=$(cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type" | grep -v "signed integer overflow" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cc" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cpp" | grep -v "sclvector.c" | grep -v "sclfunc.c:808"| grep -v "sz_double.c:388" | grep -v "sz_float.c:407:59"| wc -l) echo -e "\033[44;32;1m"asan error_num: $error_num"\033[0m" echo -e "\033[44;32;1m"asan memory_leak: $memory_leak"\033[0m" diff --git a/tests/script/tsim/query/sys_tbname.sim b/tests/script/tsim/query/sys_tbname.sim index 716937f073..7739ea5373 100644 --- a/tests/script/tsim/query/sys_tbname.sim +++ b/tests/script/tsim/query/sys_tbname.sim @@ -135,4 +135,177 @@ endi print =========================== td-24781 sql select DISTINCT (`precision`) from `information_schema`.`ins_databases` PARTITION BY `precision` +print =========================ins_stables + +print create database test vgroups 4; +sql create database test vgroups 4; +sql use test; +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +print create database test1 vgroups 4; +sql create database test1 vgroups 4; +sql use test1; + +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +sleep 1000 + +sql select * from information_schema.ins_stables where db_name = "test" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + +sql select * from information_schema.ins_stables where db_name = "test1" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + #system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/system-test/0-others/information_schema.py b/tests/system-test/0-others/information_schema.py index 2924ebd388..944b2fbb1e 100644 --- a/tests/system-test/0-others/information_schema.py +++ b/tests/system-test/0-others/information_schema.py @@ -269,13 +269,17 @@ class TDTestCase: def ins_grants_check(self): grant_name_dict = { - 'stream':'stream', - 'subscription':'subscription', - 'view':'view', - 'audit':'audit', - 'csv':'csv', - 'storage':'multi_tier_storage', - 'backup_restore':'backup_restore', + 'stream':'Stream', + 'subscription':'Subscription', + 'view':'View', + 'audit':'Audit', + 'csv':'CSV', + 'storage':'Multi-Tier Storage', + 'backup_restore':'Data Backup & Restore', + 'object_storage':'Object Storage', + 'active_active':'Active-Active', + 'dual_replica':'Dual-Replica HA', + 'db_encryption':'Database Encryption', 'opc_da':'OPC_DA', 'opc_ua':'OPC_UA', 'pi':'Pi', @@ -285,7 +289,10 @@ class TDTestCase: 'avevahistorian':'avevaHistorian', 'opentsdb':'OpenTSDB', 'td2.6':'TDengine2.6', - 'td3.0':'TDengine3.0' + 'td3.0':'TDengine3.0', + 'mysql':'MySQL', + 'postgres':'PostgreSQL', + 'oracle':'Oracle', } tdSql.execute('drop database if exists db2') @@ -297,7 +304,7 @@ class TDTestCase: if result[i][0] in grant_name_dict: tdSql.checkEqual(result[i][1], grant_name_dict[result[i][0]]) index += 1 - tdSql.checkEqual(index, 17) + tdSql.checkEqual(index, 24) tdSql.query(f'select * from information_schema.ins_grants_logs') result = tdSql.queryResult tdSql.checkEqual(True, len(result) >= 0) diff --git a/tests/system-test/0-others/show_tag_index.py b/tests/system-test/0-others/show_tag_index.py index c79880ba35..d84d4193c4 100644 --- a/tests/system-test/0-others/show_tag_index.py +++ b/tests/system-test/0-others/show_tag_index.py @@ -78,6 +78,11 @@ class TDTestCase: tdSql.execute(f'create table stb (ts timestamp, c0 int) tags (t0 int, t1 int)') tdSql.execute(f'create table ctb1 using stb tags (1, 1)') tdSql.execute(f'create table ctb2 using stb tags (2, 2)') + tdSql.execute(f'create table ntb (ts timestamp, c0 int)') + tdSql.execute(f'create view vtb as select * from stb') + tdSql.execute(f'create view vtb1 as select * from ctb1') + tdSql.execute(f'create view vtb2 as select * from ctb2') + tdSql.execute(f'create view vtbn as select * from ntb') tdSql.execute(f'insert into ctb1 values (now, 1)') tdSql.execute(f'insert into ctb2 values (now, 2)') @@ -113,6 +118,14 @@ class TDTestCase: tdSql.error(f'show tags from `db`.`stb` from db') tdSql.error(f'show tags from db.ctb1 from db') tdSql.error(f'show tags from `db`.`ctb1` from db') + tdSql.error(f'show tags from tb_undef from db', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from db.tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from ntb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb1', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb2', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtbn', expectErrInfo='Tags can only applied to super table and child table') # show table tags tdSql.query(f'show table tags from stb') @@ -145,6 +158,14 @@ class TDTestCase: tdSql.error(f'show table tags from `db`.`stb` from db') tdSql.error(f'show table tags from db.ctb1 from db') tdSql.error(f'show table tags from `db`.`ctb1` from db') + tdSql.error(f'show table tags from tb_undef from db', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from db.tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from ntb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb1', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb2', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtbn', expectErrInfo='Tags can only applied to super table and child table') # show indexes tdSql.execute(f'create index idx1 on stb (t1)') diff --git a/tests/system-test/1-insert/composite_primary_key_insert.py b/tests/system-test/1-insert/composite_primary_key_insert.py index 1a22eb781c..c888bacadc 100644 --- a/tests/system-test/1-insert/composite_primary_key_insert.py +++ b/tests/system-test/1-insert/composite_primary_key_insert.py @@ -31,8 +31,8 @@ class LegalDataType(Enum): UINT = 'INT UNSIGNED' BIGINT = 'BIGINT' UBIGINT = 'BIGINT UNSIGNED' - VARCHAR = 'VARCHAR(100)' - BINARY = 'BINARY(100)' + VARCHAR = 'VARCHAR(10000)' + BINARY = 'BINARY(10000)' class TableType(Enum): diff --git a/tests/system-test/2-query/partition_by_col.py b/tests/system-test/2-query/partition_by_col.py index 549e2738be..ef88e88cbd 100644 --- a/tests/system-test/2-query/partition_by_col.py +++ b/tests/system-test/2-query/partition_by_col.py @@ -22,7 +22,7 @@ class TDTestCase: self.vgroups = 4 self.ctbNum = 10 self.rowsPerTbl = 10000 - self.duraion = '1h' + self.duraion = '1d' def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) @@ -33,7 +33,7 @@ class TDTestCase: if dropFlag == 1: tsql.execute("drop database if exists %s"%(dbName)) - tsql.execute("create database if not exists %s vgroups %d replica %d duration %s"%(dbName, vgroups, replica, duration)) + tsql.execute("create database if not exists %s vgroups %d replica %d duration %s stt_trigger 1"%(dbName, vgroups, replica, duration)) tdLog.debug("complete to create database %s"%(dbName)) return @@ -266,11 +266,11 @@ class TDTestCase: #'select _wstart as ts, count(*), t1 as a, %s from meters partition by t1, %s interval(30m)' % (col_name, col_name), #'select _wstart as ts, count(*), t1 as a, %s from meters partition by t1, %s interval(1h)' % (col_name, col_name), - 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1s)' % (col_name, col_name, col_name), + 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30d)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30s)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1m)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30m)' % (col_name, col_name, col_name), - #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1h)' % (col_name, col_name, col_name), + 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1h)' % (col_name, col_name, col_name), 'select _wstart as ts, count(*), tbname as a, %s from meters partition by %s, tbname interval(1s)' % (col_name, col_name), 'select _wstart as ts, count(*), t1 as a, %s from meters partition by %s, t1 interval(1s)' % (col_name, col_name), @@ -317,6 +317,7 @@ class TDTestCase: def run(self): self.prepareTestEnv() + tdSql.execute('flush database test') #time.sleep(99999999) self.test_sort_for_partition_hint() self.test_sort_for_partition_res() diff --git a/tests/system-test/2-query/primary_ts_base_1.py b/tests/system-test/2-query/primary_ts_base_1.py index 05e42155cf..739afcb1ab 100644 --- a/tests/system-test/2-query/primary_ts_base_1.py +++ b/tests/system-test/2-query/primary_ts_base_1.py @@ -27,8 +27,8 @@ class TDTestCase(TDTestCase): self.fun_pk_twa(self.database,'derivative',',1s,0') self.fun_pk_twa(self.database,'derivative',',1s,1') self.fun_pk_unique(self.database,'unique','') - # self.fun_pk_last_init(self.database,'last','') - # self.fun_pk_last(self.database,'last','') + self.fun_pk_last_init(self.database,'last','') + self.fun_pk_last(self.database,'last','') # self.fun_pk_last(self.database,'last_row','') # self.fun_pk_first(self.database,'first','') diff --git a/tests/system-test/2-query/primary_ts_base_2.py b/tests/system-test/2-query/primary_ts_base_2.py index e12166bf1f..7aed595c60 100644 --- a/tests/system-test/2-query/primary_ts_base_2.py +++ b/tests/system-test/2-query/primary_ts_base_2.py @@ -27,14 +27,14 @@ class TDTestCase(TDTestCase): # self.fun_pk_twa(self.database,'derivative',',1s,0') # self.fun_pk_twa(self.database,'derivative',',1s,1') # self.fun_pk_unique(self.database,'unique','') - self.fun_pk_last_init(self.database,'last','') - self.fun_pk_last(self.database,'last','') + # self.fun_pk_last_init(self.database,'last','') + # self.fun_pk_last(self.database,'last','') self.fun_pk_last(self.database,'last_row','') self.fun_pk_first(self.database,'first','') self.query_pk_fun(self.database,'') - # self.touying_pk_1(self.database,1) + self.touying_pk_1(self.database,1) # self.touying_pk_where(self.database,'') # self.touying_pk_where(self.database,'tags') # self.touying_pk_where(self.database,'distinct') diff --git a/tests/system-test/2-query/primary_ts_base_3.py b/tests/system-test/2-query/primary_ts_base_3.py index a20d24378e..eb94deb719 100644 --- a/tests/system-test/2-query/primary_ts_base_3.py +++ b/tests/system-test/2-query/primary_ts_base_3.py @@ -34,7 +34,7 @@ class TDTestCase(TDTestCase): # self.query_pk_fun(self.database,'') - self.touying_pk_1(self.database,1) + # self.touying_pk_1(self.database,1) self.touying_pk_where(self.database,'') # self.touying_pk_where(self.database,'tags') # self.touying_pk_where(self.database,'distinct') diff --git a/tests/system-test/2-query/primary_ts_base_4.py b/tests/system-test/2-query/primary_ts_base_4.py index 85e825df96..7e446ff442 100644 --- a/tests/system-test/2-query/primary_ts_base_4.py +++ b/tests/system-test/2-query/primary_ts_base_4.py @@ -36,9 +36,9 @@ class TDTestCase(TDTestCase): # self.touying_pk_1(self.database,1) # self.touying_pk_where(self.database,'') - self.touying_pk_where(self.database,'tags') + # self.touying_pk_where(self.database,'tags') self.touying_pk_where(self.database,'distinct') - self.count_pk(self.database,1) + # self.count_pk(self.database,1) endTime = time.time() print("total time %ds" % (endTime - startTime)) diff --git a/tests/system-test/2-query/primary_ts_base_5.py b/tests/system-test/2-query/primary_ts_base_5.py new file mode 100644 index 0000000000..9246385157 --- /dev/null +++ b/tests/system-test/2-query/primary_ts_base_5.py @@ -0,0 +1,52 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- +from util.cases import tdCases +from .primary_ts_base import * +from faker import Faker +import random + +class TDTestCase(TDTestCase): + + def run(self): + startTime = time.time() + self.dropandcreateDB_primary_key(self.database, 1 , 1 ,'yes','yes','no') + + # self.fun_pk_interp(self.database,'interp','') + # self.multiple_agg_groupby(self.database,1) + # self.fun_pk_diff(self.database,'diff','') + # self.fun_pk_twa(self.database,'derivative',',1s,0') + # self.fun_pk_twa(self.database,'derivative',',1s,1') + # self.fun_pk_unique(self.database,'unique','') + # self.fun_pk_last_init(self.database,'last','') + # self.fun_pk_last(self.database,'last','') + # self.fun_pk_last(self.database,'last_row','') + # self.fun_pk_first(self.database,'first','') + + # self.query_pk_fun(self.database,'') + + # self.touying_pk_1(self.database,1) + # self.touying_pk_where(self.database,'') + self.touying_pk_where(self.database,'tags') + # self.touying_pk_where(self.database,'distinct') + self.count_pk(self.database,1) + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/system-test/8-stream/stream_basic.py b/tests/system-test/8-stream/stream_basic.py index c32f9a3166..2067c2395e 100644 --- a/tests/system-test/8-stream/stream_basic.py +++ b/tests/system-test/8-stream/stream_basic.py @@ -87,7 +87,7 @@ class TDTestCase: tdSql.execute(f'insert into t2 using st tags(2) values(now, 1) (now+1s, 2)') tdSql.execute(f'insert into t3 using st tags(3) values(now, 1) (now+1s, 2)') - tdSql.execute("create stream stream1 fill_history 1 into sta subtable(concat('new-', tname)) AS SELECT " + tdSql.execute("create stream stream1 fill_history 1 into sta subtable(concat('nee.w-', tname)) AS SELECT " "_wstart, count(*), avg(i) FROM st PARTITION BY tbname tname INTERVAL(1m)", show=True) tdSql.execute("create stream stream2 fill_history 1 into stb subtable(concat('new-', tname)) AS SELECT " @@ -97,25 +97,25 @@ class TDTestCase: tdSql.query("select * from sta") tdSql.checkRows(3) tdSql.query("select tbname from sta order by tbname") - if not tdSql.getData(0, 0).startswith('new-t1_1.d1.sta_'): + if not tdSql.getData(0, 0).startswith('nee_w-t1_sta_'): tdLog.exit("error1") - if not tdSql.getData(1, 0).startswith('new-t2_1.d1.sta_'): + if not tdSql.getData(1, 0).startswith('nee_w-t2_sta_'): tdLog.exit("error2") - if not tdSql.getData(2, 0).startswith('new-t3_1.d1.sta_'): + if not tdSql.getData(2, 0).startswith('nee_w-t3_sta_'): tdLog.exit("error3") tdSql.query("select * from stb") tdSql.checkRows(3) tdSql.query("select tbname from stb order by tbname") - if not tdSql.getData(0, 0).startswith('new-t1_1.d1.stb_'): + if not tdSql.getData(0, 0).startswith('new-t1_stb_'): tdLog.exit("error4") - if not tdSql.getData(1, 0).startswith('new-t2_1.d1.stb_'): + if not tdSql.getData(1, 0).startswith('new-t2_stb_'): tdLog.exit("error5") - if not tdSql.getData(2, 0).startswith('new-t3_1.d1.stb_'): + if not tdSql.getData(2, 0).startswith('new-t3_stb_'): tdLog.exit("error6") # run diff --git a/tools/shell/src/shellAuto.c b/tools/shell/src/shellAuto.c index 299bc6c72a..2c92d19fcf 100644 --- a/tools/shell/src/shellAuto.c +++ b/tools/shell/src/shellAuto.c @@ -429,7 +429,7 @@ void printfIntroduction(bool community) { printf(" * ------------------------------------------------------------------------------------ *\n"); printf(" * You are using TDengine OSS. To experience advanced features, like backup/restore, *\n"); printf(" * privilege control and more, or receive 7x24 technical support, try TDengine *\n"); - printf(" * Enterprise or Free Cloud Trial. Learn more at https://tdengine.com *\n"); + printf(" * Enterprise or TDengine Cloud. Learn more at https://tdengine.com *\n"); } printf(" ****************************************************************************************\n\n"); } @@ -438,7 +438,7 @@ void printfIntroduction(bool community) { void showAD(bool end) { printf(" You are using TDengine OSS. To experience advanced features, like backup/restore, \n"); printf(" privilege control and more, or receive 7x24 technical support, try TDengine Enterprise \n"); - printf(" or Free Cloud Trial. Learn more at https://tdengine.com \n"); + printf(" or TDengine Cloud. Learn more at https://tdengine.com \n"); printf(" \n"); } diff --git a/tools/shell/src/shellEngine.c b/tools/shell/src/shellEngine.c index 57ed675303..1d1050c1ec 100644 --- a/tools/shell/src/shellEngine.c +++ b/tools/shell/src/shellEngine.c @@ -56,7 +56,7 @@ static void shellWriteHistory(); static void shellPrintError(TAOS_RES *tres, int64_t st); static bool shellIsCommentLine(char *line); static void shellSourceFile(const char *file); -static bool shellGetGrantInfo(); +static bool shellGetGrantInfo(char* buf); static void shellCleanup(void *arg); static void *shellCancelHandler(void *arg); diff --git a/utils/test/c/tsz_test.c b/utils/test/c/tsz_test.c index ee17ecb8f6..063186ee52 100644 --- a/utils/test/c/tsz_test.c +++ b/utils/test/c/tsz_test.c @@ -18,12 +18,9 @@ #include #include - -#if defined(WINDOWS) -int main(int argc, char *argv[]) { - printf("welcome to use taospack tools v1.3 for windows.\n"); -} -#elif !defined(TD_TSZ) +#if defined(WINDOWS) +int main(int argc, char *argv[]) { printf("welcome to use taospack tools v1.3 for windows.\n"); } +#elif !defined(TD_TSZ) int main(int argc, char *argv[]) { printf(" welcome taospack. \n You not open TSZ , please define TD_TSZ to open TSZ algo.\n"); } @@ -33,72 +30,2074 @@ int main(int argc, char *argv[]) { #include "tcompression.h" #include "tdataformat.h" - - // ------- define ----------- -#define FT_CNT 8 +#define FT_CNT 8 // ------- function declare -------- -void cost_start(); +void cost_start(); double cost_end(const char* tag); -int notsame_cnt = 0; +int notsame_cnt = 0; // ------- global declare ----------- -float g_ft1[ ] = {\ - 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - ,3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - }; +float g_ft1[] = {3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, + 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, + 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, + 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, + 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, + 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, + 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, + 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, + 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, + 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, + 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, + 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, + 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, + 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, + 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422}; -double g_de1[ ] = {\ - 3.895999908447265612345, 3.897000074386596701234, 3.89800000190734860123456789, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - ,3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - }; +double g_de1[] = {3.895999908447265612345, 3.897000074386596701234, 3.89800000190734860123456789, + 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, + 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, + 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, + 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, + 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, + 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, + 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, + 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, + 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, + 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.634000062942505, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, + 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, + 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, + 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, + 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, + 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, + 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, + 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, + 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, + 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.634000062942505, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422}; /* struct timeval startTime; -struct timeval endTime; -struct timeval costStart; +struct timeval endTime; +struct timeval costStart; double totalCost = 0; void cost_start() { - totalCost = 0; + totalCost = 0; gettimeofday(&costStart, NULL); } @@ -111,93 +2110,84 @@ double cost_end(const char* tag) totalCost += elapsed; double use_ms = totalCost*1000; printf(" timecost %s : %.3f ms\n", tag, use_ms); - return use_ms; + return use_ms; } */ -float toFloat(char* buf){ - return (float)atoll(buf); -} +float toFloat(char* buf) { return (float)atoll(buf); } // -// read float +// read float // -float* read_float(const char* inFile, int* pcount){ +float* read_float(const char* inFile, int* pcount) { // check valid - if(inFile == NULL || inFile[0] == 0 ){ + if (inFile == NULL || inFile[0] == 0) { printf(" inFile is NULL or EMPTY.\n"); return NULL; } // read in file - TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); - if(pfin == NULL){ + TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); + if (pfin == NULL) { printf(" open IN file %s error. errno=%d\n", inFile, errno); return false; } // read one line from infile and write to outfile - char buf[256]={0}; - int malloc_cnt = 100000; - float* floats = taosMemoryMalloc(malloc_cnt*sizeof(float)); - int fi = 0; - while(taosGetsFile(pfin, sizeof(buf), buf) > 0) { + char buf[256] = {0}; + int malloc_cnt = 100000; + float* floats = taosMemoryMalloc(malloc_cnt * sizeof(float)); + int fi = 0; + while (taosGetsFile(pfin, sizeof(buf), buf) > 0) { // get item - if(buf[0] == 0 || strcmp(buf, " ") == 0) - continue; + if (buf[0] == 0 || strcmp(buf, " ") == 0) continue; floats[fi] = atof(buf); - //printf(" buff=%s float=%.50f \n ", buf, floats[fi]); - if ( ++fi == malloc_cnt ) { + // printf(" buff=%s float=%.50f \n ", buf, floats[fi]); + if (++fi == malloc_cnt) { malloc_cnt += 100000; - float* floats1 = taosMemoryRealloc(floats, malloc_cnt*sizeof(float)); - if(floats1 == NULL) - break; - floats = floats1; + float* floats1 = taosMemoryRealloc(floats, malloc_cnt * sizeof(float)); + if (floats1 == NULL) break; + floats = floats1; } memset(buf, 0, sizeof(buf)); } // close taosCloseFile(&pfin); - if(pcount) - *pcount = fi; + if (pcount) *pcount = fi; return floats; } -float check_same(float* ft1, float* ft2, int count){ - int same_cnt =0; - for(int i=0; i< count; i++){ - - if(ft1[i] == ft2[i]){ - same_cnt ++; +float check_same(float* ft1, float* ft2, int count) { + int same_cnt = 0; + for (int i = 0; i < count; i++) { + if (ft1[i] == ft2[i]) { + same_cnt++; } - if(i < 5){ + if (i < 5) { printf(" i=%d ft1=%.40f diff=%.40f \n", i, ft1[i], ft1[i] - ft2[i]); printf(" i=%d ft2=%.40f \n", i, ft2[i]); } - } - float same_rate = same_cnt*100/count; + float same_rate = same_cnt * 100 / count; printf(" all count=%d same=%d same rate=%.0f%% \n", count, same_cnt, same_rate); return same_rate; } -double check_same_double(double* ft1, double* ft2, int count){ - int same_cnt =0; - for(int i=0; i< count; i++){ - - if(ft1[i] == ft2[i]){ - same_cnt ++; +double check_same_double(double* ft1, double* ft2, int count) { + int same_cnt = 0; + for (int i = 0; i < count; i++) { + if (ft1[i] == ft2[i]) { + same_cnt++; } - if(i < 5){ + if (i < 5) { printf(" i=%d ft1=%.40f diff=%.40f \n", i, ft1[i], ft1[i] - ft2[i]); printf(" i=%d ft2=%.40f \n", i, ft2[i]); } - } - double same_rate = same_cnt*100/count; + double same_rate = same_cnt * 100 / count; printf(" all count=%d same=%d same rate=%.0f%% \n", count, same_cnt, same_rate); return same_rate; } @@ -209,41 +2199,40 @@ double check_same_double(double* ft1, double* ft2, int count){ bool DoDouble(double* doubles, int cnt, int algorithm) { // compress const char* input = (const char*)doubles; - int input_len = cnt * sizeof(double); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(double); + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; cost_start(); int ret_len = 0; - if(algorithm == 2) - ret_len = tsCompressDouble((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); + if (algorithm == 2) + ret_len = tsCompressDouble((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); else - ret_len = tsCompressDoubleLossy((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); + ret_len = tsCompressDoubleLossy((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - double rate=100*(double)ret_len/(double)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (double)input_len/(double)ret_len, rate); - - // + double rate = 100 * (double)ret_len / (double)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (double)input_len / (double)ret_len, rate); + + // // decompress // - double* ft2 = (double*)taosMemoryMalloc(input_len); + double* ft2 = (double*)taosMemoryMalloc(input_len); cost_start(); int code = 0; - if(algorithm == 2) - code = tsDecompressDouble(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); + if (algorithm == 2) + code = tsDecompressDouble(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); else - code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - + code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); @@ -251,19 +2240,18 @@ bool DoDouble(double* doubles, int cnt, int algorithm) { // compare same double same_rate = check_same_double(doubles, ft2, cnt); - printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, algorithm == 2?"TD":"SZ"); + printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, algorithm == 2 ? "TD" : "SZ"); printf(" Compress Rate ......... [%.2f%%] \n", rate); - double speed1 = (cnt*sizeof(double)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(double) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(double)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(double) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); return true; } @@ -271,68 +2259,66 @@ bool DoDouble(double* doubles, int cnt, int algorithm) { bool DoFloat(float* floats, int cnt, int algorithm, bool lossy) { // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; cost_start(); int ret_len = 0; ret_len = tsCompressFloat((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - - if(ret_len == -1) { + + if (ret_len == -1) { printf(" compress error.\n"); return 0; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - float rate=100*(float)ret_len/(float)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len/(float)ret_len, rate); - - // + float rate = 100 * (float)ret_len / (float)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len / (float)ret_len, rate); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = 0; code = tsDecompressFloat(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - + double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); // compare same float same_rate = check_same(floats, ft2, cnt); - printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, lossy?"SZ":"TD"); + printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, lossy ? "SZ" : "TD"); printf(" Compress Rate ......... [%.2f%%] \n", rate); - double speed1 = (cnt*sizeof(float)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(float)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); return true; } - -bool testFile(const char* inFile, char algorithm, bool lossy){ +bool testFile(const char* inFile, char algorithm, bool lossy) { // check valid - if(inFile == NULL || inFile[0] == 0 ){ + if (inFile == NULL || inFile[0] == 0) { printf(" inFile is NULL or EMPTY.\n"); return false; } - int cnt = 0; + int cnt = 0; float* floats = read_float(inFile, &cnt); - if(floats == NULL) { + if (floats == NULL) { return false; } @@ -345,54 +2331,54 @@ bool testFile(const char* inFile, char algorithm, bool lossy){ // txt to binary file // #define BUFF_CNT 256 -bool txt_to_bin(const char* inFile, const char* outFile){ +bool txt_to_bin(const char* inFile, const char* outFile) { // check valid - if(inFile == NULL || outFile == NULL || inFile[0] == 0 || outFile[0] == 0){ + if (inFile == NULL || outFile == NULL || inFile[0] == 0 || outFile[0] == 0) { printf(" inFile or outFile is NULL or EMPTY.\n"); return false; } - printf(" infile=%s \n", inFile); + printf(" infile=%s \n", inFile); printf(" outfile=%s \n", outFile); // read in file - TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); - if(pfin == NULL){ + TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); + if (pfin == NULL) { printf(" open IN file %s error. errno=%d\n", inFile, errno); return false; } // create out file TdFilePtr pfout = taosOpenFile(outFile, TD_FILE_WRITE); - if(pfout == NULL){ + if (pfout == NULL) { printf(" open OUT file %s error. errno=%d\n", outFile, errno); taosCloseFile(&pfin); return false; } // read one line from infile and write to outfile - char buf[256]={0}; + char buf[256] = {0}; float fbuf[BUFF_CNT] = {0}; int fi = 0; int count = 0; - while(taosGetsFile(pfin, sizeof(buf), buf) > 0) { + while (taosGetsFile(pfin, sizeof(buf), buf) > 0) { // get item fbuf[fi] = toFloat(buf); - if ( ++fi == BUFF_CNT ) { + if (++fi == BUFF_CNT) { // write - if(taosWriteFile(pfout,fbuf, sizeof(float)*BUFF_CNT) <= 0) { + if (taosWriteFile(pfout, fbuf, sizeof(float) * BUFF_CNT) <= 0) { printf(" write to file %s error , code=%d . app exit.\n", outFile, errno); exit(1); } fi = 0; } - count ++; + count++; memset(buf, 0, sizeof(buf)); } // write retain - if( fi > 0){ - if(taosWriteFile(pfout, fbuf, sizeof(float)*fi) <= 0) { + if (fi > 0) { + if (taosWriteFile(pfout, fbuf, sizeof(float) * fi) <= 0) { printf(" write to file %s error , code=%d . app exit.\n", outFile, errno); exit(1); } @@ -403,69 +2389,67 @@ bool txt_to_bin(const char* inFile, const char* outFile){ taosCloseFile(&pfout); // total - printf(" count=%d write bytes=%d \n", count, (int)(count*sizeof(float))); + printf(" count=%d write bytes=%d \n", count, (int)(count * sizeof(float))); return true; } - int memTestDouble() { // douelbe - const char* input = (const char*) g_de1; - double* de1 = g_de1; - int input_len = sizeof(g_de1); - int cnt = input_len/sizeof(double); + const char* input = (const char*)g_de1; + double* de1 = g_de1; + int input_len = sizeof(g_de1); + int cnt = input_len / sizeof(double); printf(" input input_len=%d count=%d \n", input_len, cnt); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; - char buff[1024] ={0}; - int buff_len = sizeof(buff); + char buff[1024] = {0}; + int buff_len = sizeof(buff); cost_start(); int ret_len = tsCompressDoubleLossy(input, input_len, cnt, output, output_len, ONE_STAGE_COMP, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } cost_end(" tscompress"); printf(" compress return len=%d input len=%d\n", ret_len, input_len); - printf(" compress rate=%.1f an-rate=%.0f%%\n", (float)input_len/(float)ret_len, 100*(float)ret_len/(float)input_len); - - // + printf(" compress rate=%.1f an-rate=%.0f%%\n", (float)input_len / (float)ret_len, + 100 * (float)ret_len / (float)input_len); + + // // decompress // - double* de2 = (double*)taosMemoryMalloc(input_len); + double* de2 = (double*)taosMemoryMalloc(input_len); cost_start(); int code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)de2, input_len, ONE_STAGE_COMP, buff, buff_len); cost_end("tsde-compress double"); printf(" de-compress return code=%d \n", code); - // // show // - int same_cnt = 0; - int diffshow_cnt = 0; - for(int i=0; i< cnt; i++){ + int same_cnt = 0; + int diffshow_cnt = 0; + for (int i = 0; i < cnt; i++) { + if (i < 10) printf(" i=%d de1=%.20f de2=%.20f same=%d\n", i, de1[i], de2[i], de1[i] == de2[i]); - if(i < 10) - printf(" i=%d de1=%.20f de2=%.20f same=%d\n", i, de1[i], de2[i], de1[i] == de2[i]); - - if(de1[i] == de2[i]) - same_cnt ++; + if (de1[i] == de2[i]) + same_cnt++; else { notsame_cnt++; - if(i >= 10 && ++diffshow_cnt < 50){ - printf(" i=%d de1=%.20f de2=%.20f diff\n", i, de1[i], de2[i]); + if (i >= 10 && ++diffshow_cnt < 50) { + printf(" i=%d de1=%.20f de2=%.20f diff\n", i, de1[i], de2[i]); } } } - - printf(" ---- result doulbe : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt*100/cnt, notsame_cnt); - - taosMemoryFree(output); + + printf(" ---- result doulbe : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, + same_cnt * 100 / cnt, notsame_cnt); + + taosMemoryFree(output); taosMemoryFree(de2); return 1; } @@ -473,10 +2457,10 @@ int memTestDouble() { // fill float void fillFloat(float* ft, int cnt) { printf("generate float cnt = %d.\n", cnt); - for(int i=0; i < cnt; i++){ - float v = taosRand() + ((float)taosRand())/10000; + for (int i = 0; i < cnt; i++) { + float v = taosRand() + ((float)taosRand()) / 10000; ft[i] = v; - if(i % 100 == 0){ + if (i % 100 == 0) { printf("\n i=%d %f", i, v); } else { printf(" %f", v); @@ -486,91 +2470,87 @@ void fillFloat(float* ft, int cnt) { printf("\nend generate.\n"); } - int memTest() { - // - //float ft1[] = {1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888}; + // float ft1[] = + // {1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, + // 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888}; // - float* ft1 = g_ft1; - const char* input = (const char*) ft1; - int input_len = sizeof(g_ft1); - int cnt = input_len/sizeof(float); + float* ft1 = g_ft1; + const char* input = (const char*)ft1; + int input_len = sizeof(g_ft1); + int cnt = input_len / sizeof(float); printf(" input input_len=%d count=%d \n", input_len, cnt); - - - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; - char buff[1024] ={0}; - int buff_len = sizeof(buff); + char buff[1024] = {0}; + int buff_len = sizeof(buff); cost_start(); int ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, ONE_STAGE_COMP, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } cost_end(" tscompress"); printf(" compress return len=%d input len=%d\n", ret_len, input_len); - printf(" compress sz rate=%.1f an-rate=%.2f%%\n", (float)input_len/(float)ret_len, 100*(float)ret_len/(float)input_len); - - // + printf(" compress sz rate=%.1f an-rate=%.2f%%\n", (float)input_len / (float)ret_len, + 100 * (float)ret_len / (float)input_len); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, ONE_STAGE_COMP, buff, buff_len); cost_end("tsde-compress"); printf(" de-compress return code=%d \n", code); - // // show // - int same_cnt = 0; - int diffshow_cnt = 0; - for(int i=0; i< cnt; i++){ + int same_cnt = 0; + int diffshow_cnt = 0; + for (int i = 0; i < cnt; i++) { + if (i < 10) printf(" i=%d ft1=%.20f ft2=%.20f same=%d\n", i, ft1[i], ft2[i], ft1[i] == ft2[i]); - if(i < 10) - printf(" i=%d ft1=%.20f ft2=%.20f same=%d\n", i, ft1[i], ft2[i], ft1[i] == ft2[i]); - - if(ft1[i] == ft2[i]) - same_cnt ++; + if (ft1[i] == ft2[i]) + same_cnt++; else { notsame_cnt++; - if(i >= 10 && ++diffshow_cnt < 50){ - printf(" i=%d ft1=%.20f ft2=%.20f diff\n", i, ft1[i], ft2[i]); + if (i >= 10 && ++diffshow_cnt < 50) { + printf(" i=%d ft1=%.20f ft2=%.20f diff\n", i, ft1[i], ft2[i]); } } } - - printf(" ---- result : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt*100/cnt, notsame_cnt); - - taosMemoryFree(output); + + printf(" ---- result : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt * 100 / cnt, + notsame_cnt); + + taosMemoryFree(output); taosMemoryFree(ft2); return 1; } void* memTestThread(void* lparam) { - //memTest(); + // memTest(); printf(" enter thread ....\n"); - for(int i=0; i<1; i++) - { - memTest(); - printf(" start i=%d .... \n", i); + for (int i = 0; i < 1; i++) { + memTest(); + printf(" start i=%d .... \n", i); } return NULL; } -void test_threadsafe(int thread_count){ +void test_threadsafe(int thread_count) { printf(" test thread safe . thread count=%d \n", thread_count); TdThread handle[1000000]; - int i=0; - for(i=0; i< thread_count; i++){ + int i = 0; + for (i = 0; i < thread_count; i++) { printf(" create thread %d... \n", i); TdThreadAttr attr; taosThreadAttrInit(&attr); @@ -578,32 +2558,28 @@ void test_threadsafe(int thread_count){ taosThreadAttrDestroy(&attr); } - for(i=0; i< thread_count; i++) - { + for (i = 0; i < thread_count; i++) { taosThreadJoin(handle[i], NULL); } - + printf(" test thread safe end. not same count=%d\n", notsame_cnt); - } - void* memTestThreadDouble(void* lparam) { - //memTest(); + // memTest(); printf(" enter thread ....\n"); - for(int i=0; i< 1; i++) - { - memTest(); - printf(" double start i=%d .... \n", i); + for (int i = 0; i < 1; i++) { + memTest(); + printf(" double start i=%d .... \n", i); } return NULL; } -void test_threadsafe_double(int thread_count){ +void test_threadsafe_double(int thread_count) { printf(" test thread safe . thread count=%d \n", thread_count); TdThread handle[1000000]; - int i=0; - for(i=0; i< thread_count; i++){ + int i = 0; + for (i = 0; i < thread_count; i++) { printf(" create thread %d... \n", i); TdThreadAttr attr; taosThreadAttrInit(&attr); @@ -611,29 +2587,26 @@ void test_threadsafe_double(int thread_count){ taosThreadAttrDestroy(&attr); } - for(i=0; i< thread_count; i++) - { + for (i = 0; i < thread_count; i++) { taosThreadJoin(handle[i], NULL); } - + printf("\n ---- double test thread safe end. not same count=%d-----\n", notsame_cnt); - } void unitTestFloat() { - - float ft1 [] = {1.11, 2.22, 3.333}; - int cnt = sizeof(ft1)/sizeof(float); + float ft1[] = {1.11, 2.22, 3.333}; + int cnt = sizeof(ft1) / sizeof(float); float* floats = ft1; - int algorithm = 2; + int algorithm = 2; // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - int output_len = input_len + 1024; - char* output = (char*) taosMemoryMalloc(output_len); - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + int output_len = input_len + 1024; + char* output = (char*)taosMemoryMalloc(output_len); + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; printf(" ft1 have count=%d \n", cnt); strcpy(output, "abcde"); @@ -642,24 +2615,23 @@ void unitTestFloat() { int ret_len = 0; ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" compress error.\n"); - return ; + return; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - float rate=100*(float)ret_len/(float)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len/(float)ret_len, rate); - - // + float rate = 100 * (float)ret_len / (float)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len / (float)ret_len, rate); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = 0; code = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); @@ -669,175 +2641,164 @@ void unitTestFloat() { printf("\n ------------------ count:%d TD ---------------- \n", cnt); printf(" Compress Rate ......... [%.0f%%] \n", rate); - double speed1 = (cnt*sizeof(float)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(float)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); } void leakFloat() { - - int cnt = sizeof(g_ft1)/sizeof(float); + int cnt = sizeof(g_ft1) / sizeof(float); float* floats = g_ft1; - int algorithm = 2; + int algorithm = 2; // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - int output_len = input_len + 1024; - char* output = (char*) taosMemoryMalloc(output_len); - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + int output_len = input_len + 1024; + char* output = (char*)taosMemoryMalloc(output_len); + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; int ret_len = 0; ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" compress float error.\n"); taosMemoryFree(buff); - taosMemoryFree(output); - return ; + taosMemoryFree(output); + return; } - - float* ft2 = (float*)taosMemoryMalloc(input_len); + + float* ft2 = (float*)taosMemoryMalloc(input_len); ret_len = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" decompress float error.\n"); } - + taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); } - -void leakTest(){ - for(int i=0; i< 90000000; i++){ - if(i%10000==0) - printf(" ---------- %d ---------------- \n", i); +void leakTest() { + for (int i = 0; i < 90000000; i++) { + if (i % 10000 == 0) printf(" ---------- %d ---------------- \n", i); leakFloat(); } } #define DB_CNT 500 -void test_same_float(int algo, bool lossy){ - float ori = 123.456789123; - float floats [DB_CNT]; - for(int i=0; i< DB_CNT; i++){ +void test_same_float(int algo, bool lossy) { + float ori = 123.456789123; + float floats[DB_CNT]; + for (int i = 0; i < DB_CNT; i++) { floats[i] = ori; - } + } DoFloat(floats, DB_CNT, algo, lossy); } -void test_same_double(int algo){ - double ori = 3.1415926; +void test_same_double(int algo) { + double ori = 3.1415926; - double doubles [DB_CNT]; - for(int i=0; i< DB_CNT; i++){ + double doubles[DB_CNT]; + for (int i = 0; i < DB_CNT; i++) { doubles[i] = ori; - } + } DoDouble(doubles, DB_CNT, algo); } -#ifdef TD_TSZ - extern char tsLossyColumns[]; extern bool lossyDouble; extern bool lossyFloat; -extern double tsFPrecision; // float column precision -extern double tsDPrecision; // double column precision -extern uint32_t tsMaxRange; // max quantization intervals -extern uint32_t tsCurRange; // current quantization intervals -extern bool tsIfAdtFse; // ADT-FSE algorithom or original huffman algorithom +extern double tsFPrecision; // float column precision +extern double tsDPrecision; // double column precision +extern uint32_t tsMaxRange; // max quantization intervals +extern uint32_t tsCurRange; // current quantization intervals +extern bool tsIfAdtFse; // ADT-FSE algorithom or original huffman algorithom extern char tsCompressor[32]; -#endif // // ----------------- main ---------------------- // -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { printf("welcome to use taospack tools v1.6\n"); - //printf(" sizeof(int)=%d\n", (int)sizeof(int)); - //printf(" sizeof(long)=%d\n", (int)sizeof(long)); - //printf(" sizeof(short)=%d\n",(int)sizeof(short)); - - + // printf(" sizeof(int)=%d\n", (int)sizeof(int)); + // printf(" sizeof(long)=%d\n", (int)sizeof(long)); + // printf(" sizeof(short)=%d\n",(int)sizeof(short)); + strcpy(tsLossyColumns, "float|double"); bool lossy = true; - //fPrecision = 1E-5; - //strcpy(Compressor, "GZIP_COMPRESSOR"); + // fPrecision = 1E-5; + // strcpy(Compressor, "GZIP_COMPRESSOR"); tsCompressInit(tsLossyColumns, tsFPrecision, tsDPrecision, tsMaxRange, tsCurRange, (int)tsIfAdtFse, tsCompressor); lossyFloat = lossyDouble = true; - printf(" fPrecision=%.15f\n",tsFPrecision); + printf(" fPrecision=%.15f\n", tsFPrecision); - // - //tsCompressExit(); - //return 1; - //printf(" SZ_SIZE_TYPE=%d", ) + // tsCompressExit(); + // return 1; + // printf(" SZ_SIZE_TYPE=%d", ) - if(argc == 3){ + if (argc == 3) { char algo = 0; // t - if(strcmp(argv[1], "-tone") == 0 || strcmp(argv[1], "-t") == 0 ) { - algo = ONE_STAGE_COMP; - lossyFloat = lossyDouble = true; + if (strcmp(argv[1], "-tone") == 0 || strcmp(argv[1], "-t") == 0) { + algo = ONE_STAGE_COMP; + lossyFloat = lossyDouble = true; } - if(strcmp(argv[1], "-tw") == 0) { - algo = TWO_STAGE_COMP; - lossy = false; - lossyFloat = lossyDouble = false; + if (strcmp(argv[1], "-tw") == 0) { + algo = TWO_STAGE_COMP; + lossy = false; + lossyFloat = lossyDouble = false; } - if(strcmp(argv[1], "-sf") == 0) { - test_threadsafe(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-sf") == 0) { + test_threadsafe(atoi(argv[2])); + return 0; } - if(strcmp(argv[1], "-sd") == 0) { - test_threadsafe_double(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-sd") == 0) { + test_threadsafe_double(atoi(argv[2])); + return 0; } - if(strcmp(argv[1], "-samef") == 0) { - test_same_float(atoi(argv[2]), true); - return 0; + if (strcmp(argv[1], "-samef") == 0) { + test_same_float(atoi(argv[2]), true); + return 0; } - if(strcmp(argv[1], "-samed") == 0) { - test_same_double(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-samed") == 0) { + test_same_double(atoi(argv[2])); + return 0; } - - if(algo == 0){ + + if (algo == 0) { printf(" no param -tone -tw \n"); return 0; } - + bool ret = testFile(argv[2], algo, lossy); printf(" test file %s. \n", ret ? "ok" : "err"); return 1; - } else if( argc == 2) { - if(strcmp(argv[1], "-mem") == 0) { + } else if (argc == 2) { + if (strcmp(argv[1], "-mem") == 0) { memTest(); - } - else if(strcmp(argv[1], "-leak") == 0) { + } else if (strcmp(argv[1], "-leak") == 0) { leakTest(); } - } - else{ + } else { unitTestFloat(); } @@ -846,4 +2807,3 @@ int main(int argc, char *argv[]) { } #endif - diff --git a/utils/tsim/src/simExe.c b/utils/tsim/src/simExe.c index 394b168b08..bea839057e 100644 --- a/utils/tsim/src/simExe.c +++ b/utils/tsim/src/simExe.c @@ -37,15 +37,15 @@ void simLogSql(char *sql, bool useSharp) { char *simParseHostName(char *varName) { static char hostName[140]; -//#ifdef WINDOWS -// hostName[0] = '\"'; -// taosGetFqdn(&hostName[1]); -// int strEndIndex = strlen(hostName); -// hostName[strEndIndex] = '\"'; -// hostName[strEndIndex + 1] = '\0'; -//#else + //#ifdef WINDOWS + // hostName[0] = '\"'; + // taosGetFqdn(&hostName[1]); + // int strEndIndex = strlen(hostName); + // hostName[strEndIndex] = '\"'; + // hostName[strEndIndex + 1] = '\0'; + //#else sprintf(hostName, "%s", "localhost"); -//#endif + //#endif return hostName; } @@ -276,12 +276,16 @@ int32_t simExecuteExpression(SScript *script, char *exp) { if (op1[0] == '=') { strcpy(simGetVariable(script, var1 + 1, var1Len - 1), t3); } else if (op1[0] == '<') { - val0 = atoi(t0); - val1 = atoi(t3); + int64_t val0 = atoll(t0); + int64_t val1 = atoll(t3); + // val0 = atoi(t0); + // val1 = atoi(t3); if (val0 >= val1) result = -1; } else if (op1[0] == '>') { - val0 = atoi(t0); - val1 = atoi(t3); + int64_t val0 = atoll(t0); + int64_t val1 = atoll(t3); + // val0 = atoi(t0); + // val1 = atoi(t3); if (val0 <= val1) result = -1; } } else { @@ -378,16 +382,14 @@ bool simExecuteRunBackCmd(SScript *script, char *option) { return true; } -void simReplaceDirSep (char *buf){ +void simReplaceDirSep(char *buf) { #ifdef WINDOWS - int i=0; - while(buf[i] != '\0') - { - if(buf[i] == '/') - { - buf[i] = '\\'; - } - i++; + int i = 0; + while (buf[i] != '\0') { + if (buf[i] == '/') { + buf[i] = '\\'; + } + i++; } #endif } @@ -505,7 +507,7 @@ bool simExecuteSystemContentCmd(SScript *script, char *option) { } bool simExecuteSetBIModeCmd(SScript *script, char *option) { - char buf[1024]; + char buf[1024]; simVisuallizeOption(script, option, buf); option = buf; diff --git a/utils/tsim/src/simSystem.c b/utils/tsim/src/simSystem.c index dcf5d6ab12..645cf0e6fe 100644 --- a/utils/tsim/src/simSystem.c +++ b/utils/tsim/src/simSystem.c @@ -28,7 +28,7 @@ extern bool simExecSuccess; int32_t simInitCfg() { taosCreateLog("simlog", 1, configDir, NULL, NULL, NULL, NULL, 1); - taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1); + taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true); SConfig *pCfg = taosGetCfg(); tstrncpy(simScriptDir, cfgGetItem(pCfg, "scriptDir")->str, PATH_MAX);