diff --git a/debian/additions/debian-start b/debian/additions/debian-start index 2a8b61ddaff..27483c3a87c 100755 --- a/debian/additions/debian-start +++ b/debian/additions/debian-start @@ -17,11 +17,11 @@ if [ -f /etc/default/mariadb ]; then . /etc/default/mariadb fi -MARIADB="/usr/bin/mariadb --defaults-file=/etc/mysql/debian.cnf" -MYADMIN="/usr/bin/mariadb-admin --defaults-file=/etc/mysql/debian.cnf" +MARIADB="/usr/bin/mariadb --defaults-extra-file=/etc/mysql/debian.cnf" +MYADMIN="/usr/bin/mariadb-admin --defaults-extra-file=/etc/mysql/debian.cnf" # Don't run full mariadb-upgrade on every server restart, use --version-check to do it only once MYUPGRADE="/usr/bin/mariadb-upgrade --defaults-extra-file=/etc/mysql/debian.cnf --version-check --silent" -MYCHECK="/usr/bin/mariadb-check --defaults-file=/etc/mysql/debian.cnf" +MYCHECK="/usr/bin/mariadb-check --defaults-extra-file=/etc/mysql/debian.cnf" MYCHECK_SUBJECT="WARNING: mariadb-check has found corrupt tables" MYCHECK_PARAMS="--all-databases --fast --silent" MYCHECK_RCPT="${MYCHECK_RCPT:-root}" diff --git a/extra/wolfssl/CMakeLists.txt b/extra/wolfssl/CMakeLists.txt index e3f8da21f76..dc2f8092762 100644 --- a/extra/wolfssl/CMakeLists.txt +++ b/extra/wolfssl/CMakeLists.txt @@ -130,6 +130,9 @@ if(MSVC) if(CMAKE_C_COMPILER_ID MATCHES Clang) target_compile_options(wolfssl PRIVATE $<$:-Wno-incompatible-function-pointer-types>) endif() + remove_definitions(-DHAVE_CONFIG_H) + target_compile_definitions(wolfssl PRIVATE + WOLFSSL_HAVE_MIN WOLFSSL_HAVE_MAX) endif() CONFIGURE_FILE(user_settings.h.in user_settings.h) diff --git a/extra/wolfssl/user_settings.h.in b/extra/wolfssl/user_settings.h.in index 489118b33b4..92e92d04e4a 100644 --- a/extra/wolfssl/user_settings.h.in +++ b/extra/wolfssl/user_settings.h.in @@ -3,7 +3,21 @@ #define HAVE_CRL #define WOLFSSL_HAVE_ERROR_QUEUE + +/* + Workaround bug in 5.7.6 + WOLFSSL_MYSQL_COMPATIBLE breaks building wolfssl + + But it is needed to avoid redefinition of protocol_version + when its public header ssl.h is included +*/ +#ifndef BUILDING_WOLFSSL #define WOLFSSL_MYSQL_COMPATIBLE +#endif + +#define SP_INT_BITS 8192 +#define HAVE_EMPTY_AGGREGATES 0 + #define HAVE_ECC #define ECC_TIMING_RESISTANT #define HAVE_HASHDRBG @@ -24,7 +38,8 @@ #define HAVE_THREAD_LS #define WOLFSSL_AES_COUNTER #define NO_WOLFSSL_STUB -#define OPENSSL_ALL +// #define OPENSSL_ALL +#define OPENSSL_EXTRA #define WOLFSSL_ALLOW_TLSV10 #define NO_OLD_TIMEVAL_NAME #define HAVE_SECURE_RENEGOTIATION diff --git a/extra/wolfssl/wolfssl b/extra/wolfssl/wolfssl index 00e42151ca0..239b85c8043 160000 --- a/extra/wolfssl/wolfssl +++ b/extra/wolfssl/wolfssl @@ -1 +1 @@ -Subproject commit 00e42151ca061463ba6a95adb2290f678cbca472 +Subproject commit 239b85c80438bf60d9a5b9e0ebe9ff097a760d0d diff --git a/include/mariadb_capi_rename.h b/include/mariadb_capi_rename.h index 58e16fdc0c0..4f6750d4664 100644 --- a/include/mariadb_capi_rename.h +++ b/include/mariadb_capi_rename.h @@ -37,16 +37,19 @@ #define mysql_free_result MARIADB_ADD_PREFIX(mysql_free_result) #define mysql_get_socket MARIADB_ADD_PREFIX(mysql_get_socket) #define mysql_set_character_set MARIADB_ADD_PREFIX(mysql_set_character_set) +#define mysql_real_escape_string MARIADB_ADD_PREFIX(mysql_real_escape_string) #define mysql_get_server_version MARIADB_ADD_PREFIX(mysql_get_server_version) #define mysql_error MARIADB_ADD_PREFIX(mysql_error) #define mysql_errno MARIADB_ADD_PREFIX(mysql_errno) #define mysql_num_fields MARIADB_ADD_PREFIX(mysql_num_fields) #define mysql_num_rows MARIADB_ADD_PREFIX(mysql_num_rows) #define mysql_options4 MARIADB_ADD_PREFIX(mysql_options4) +#define mysql_fetch_fields MARIADB_ADD_PREFIX(mysql_fetch_fields) #define mysql_fetch_lengths MARIADB_ADD_PREFIX(mysql_fetch_lengths) #define mysql_fetch_row MARIADB_ADD_PREFIX(mysql_fetch_row) #define mysql_affected_rows MARIADB_ADD_PREFIX(mysql_affected_rows) #define mysql_store_result MARIADB_ADD_PREFIX(mysql_store_result) +#define mysql_use_result MARIADB_ADD_PREFIX(mysql_use_result) #define mysql_select_db MARIADB_ADD_PREFIX(mysql_select_db) #define mysql_get_ssl_cipher MARIADB_ADD_PREFIX(mysql_get_ssl_cipher) #define mysql_ssl_set MARIADB_ADD_PREFIX(mysql_ssl_set) diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp index 57ba61d3911..df2807bbebf 100644 --- a/include/mysql/plugin_audit.h.pp +++ b/include/mysql/plugin_audit.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp index 15e4c0cde4d..cea1a638dd0 100644 --- a/include/mysql/plugin_auth.h.pp +++ b/include/mysql/plugin_auth.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_data_type.h.pp b/include/mysql/plugin_data_type.h.pp index 7938bf3c475..6c8e3d93f06 100644 --- a/include/mysql/plugin_data_type.h.pp +++ b/include/mysql/plugin_data_type.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_encryption.h.pp b/include/mysql/plugin_encryption.h.pp index 97191c4a09c..b1170bd9fbf 100644 --- a/include/mysql/plugin_encryption.h.pp +++ b/include/mysql/plugin_encryption.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_ftparser.h.pp b/include/mysql/plugin_ftparser.h.pp index cc2c276c579..38da8c75b0b 100644 --- a/include/mysql/plugin_ftparser.h.pp +++ b/include/mysql/plugin_ftparser.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_function.h.pp b/include/mysql/plugin_function.h.pp index afdcb5344e3..73e86f2c8cb 100644 --- a/include/mysql/plugin_function.h.pp +++ b/include/mysql/plugin_function.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/plugin_password_validation.h.pp b/include/mysql/plugin_password_validation.h.pp index 6c8b6ec00cd..972a92f0ea3 100644 --- a/include/mysql/plugin_password_validation.h.pp +++ b/include/mysql/plugin_password_validation.h.pp @@ -487,9 +487,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; MYSQL *mysql_real_connect_local(MYSQL *mysql); } diff --git a/include/mysql/psi/mysql_file.h b/include/mysql/psi/mysql_file.h index fd3b29cc5c9..096815ed02d 100644 --- a/include/mysql/psi/mysql_file.h +++ b/include/mysql/psi/mysql_file.h @@ -1018,7 +1018,7 @@ inline_mysql_file_create( #ifdef HAVE_PSI_FILE_INTERFACE PSI_file_key key, const char *src_file, uint src_line, #endif - const char *filename, int create_flags, int access_flags, myf myFlags) + const char *filename, mode_t create_flags, int access_flags, myf myFlags) { File file; #ifdef HAVE_PSI_FILE_INTERFACE @@ -1344,7 +1344,7 @@ inline_mysql_file_create_with_symlink( #ifdef HAVE_PSI_FILE_INTERFACE PSI_file_key key, const char *src_file, uint src_line, #endif - const char *linkname, const char *filename, int create_flags, + const char *linkname, const char *filename, mode_t create_flags, int access_flags, myf flags) { File file; diff --git a/include/mysql/service_sql.h b/include/mysql/service_sql.h index 0a3a2294fa1..a4a61cc0f47 100644 --- a/include/mysql/service_sql.h +++ b/include/mysql/service_sql.h @@ -68,9 +68,12 @@ extern struct sql_service_st { int (STDCALL *mysql_set_character_set_func)(MYSQL *mysql, const char *cs_name); unsigned int (STDCALL *mysql_num_fields_func)(MYSQL_RES *res); int (STDCALL *mysql_select_db_func)(MYSQL *mysql, const char *db); + MYSQL_RES *(STDCALL *mysql_use_result_func)(MYSQL *mysql); + MYSQL_FIELD *(STDCALL *mysql_fetch_fields_func)(MYSQL_RES *res); + unsigned long (STDCALL *mysql_real_escape_string_func)(MYSQL *mysql, char *to, + const char *from, unsigned long length); my_bool (STDCALL *mysql_ssl_set_func)(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath, const char *cipher); + const char *cert, const char *ca, const char *capath, const char *cipher); } *sql_service; #ifdef MYSQL_DYNAMIC_PLUGIN @@ -92,7 +95,10 @@ extern struct sql_service_st { #define mysql_set_character_set(M,C) sql_service->mysql_set_character_set_func(M,C) #define mysql_num_fields(R) sql_service->mysql_num_fields_func(R) #define mysql_select_db(M,D) sql_service->mysql_select_db_func(M,D) -#define mysql_ssl_set(M,K,C,A,P,H) sql_service->mysql_ssl_set_func(M,K,C,A,P,H) +#define mysql_use_result(M) sql_service->mysql_use_result_func(M) +#define mysql_fetch_fields(R) sql_service->mysql_fetch_fields_func(R) +#define mysql_real_escape_string(M,T,F,L) sql_service->mysql_real_escape_string_func(M,T,F,L) +#define mysql_ssl_set(M,K,C1,C2,C3,C4) sql_service->mysql_ssl_set_func(M,K,C1,C2,C3,C4) #else @@ -115,5 +121,3 @@ MYSQL *mysql_real_connect_local(MYSQL *mysql); #endif #endif /*MYSQL_SERVICE_SQL */ - - diff --git a/include/service_versions.h b/include/service_versions.h index cace4f37c69..af3e3d98785 100644 --- a/include/service_versions.h +++ b/include/service_versions.h @@ -43,6 +43,6 @@ #define VERSION_thd_wait 0x0100 #define VERSION_wsrep 0x0500 #define VERSION_json 0x0100 -#define VERSION_sql_service 0x0100 +#define VERSION_sql_service 0x0102 #define VERSION_thd_mdl 0x0100 #define VERSION_print_check_msg 0x0100 diff --git a/libmysqld/libmysql.c b/libmysqld/libmysql.c index 07926763c61..da6f3a2d8fa 100644 --- a/libmysqld/libmysql.c +++ b/libmysqld/libmysql.c @@ -1065,11 +1065,6 @@ MYSQL_FIELD * STDCALL mysql_fetch_field_direct(MYSQL_RES *res,uint fieldnr) return &(res)->fields[fieldnr]; } -MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res) -{ - return (res)->fields; -} - MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res) { return res->data_cursor; @@ -1215,18 +1210,6 @@ mysql_escape_string(char *to,const char *from,ulong length) length, &overflow); } -ulong STDCALL -mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, - ulong length) -{ - my_bool overflow; - if (mysql->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) - return (ulong) escape_quotes_for_mysql(mysql->charset, to, 0, from, length, - &overflow); - return (ulong) escape_string_for_mysql(mysql->charset, to, 0, from, length, - &overflow); -} - void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name) { @@ -4955,11 +4938,6 @@ int STDCALL mysql_stmt_next_result(MYSQL_STMT *stmt) } -MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql) -{ - return (*mysql->methods->use_result)(mysql); -} - my_bool STDCALL mysql_read_query_result(MYSQL *mysql) { return (*mysql->methods->read_query_result)(mysql); diff --git a/mysql-test/include/galera_variables_ok.inc b/mysql-test/include/galera_variables_ok.inc index 82c5174bc14..4d9c71e47d8 100644 --- a/mysql-test/include/galera_variables_ok.inc +++ b/mysql-test/include/galera_variables_ok.inc @@ -1,9 +1,16 @@ --disable_query_log ---let $galera_variables_ok = `SELECT COUNT(*) = 49 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep%'` +let $_galera_variables_delta=$galera_variables_delta; +if (!$_galera_variables_delta) { +--let $galera_variables_delta=0 +} ---if (!$galera_variables_ok) { - --skip Galera number of variables has changed! +--let $galera_variables_expected=`SELECT 49 + $galera_variables_delta` + +--let $galera_variables_count=`SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep%'` + +--if ($galera_variables_count != $galera_variables_expected) { + --skip Galera number of variables has changed! ($galera_variables_count instead of $galera_variables_expected) } --enable_query_log diff --git a/mysql-test/include/galera_variables_ok_debug.inc b/mysql-test/include/galera_variables_ok_debug.inc index c9a54724c17..495b850c871 100644 --- a/mysql-test/include/galera_variables_ok_debug.inc +++ b/mysql-test/include/galera_variables_ok_debug.inc @@ -1,9 +1,5 @@ ---disable_query_log +# Now the number of variables for the release and debug versions +# of the library is equal to each other... +--let $galera_variables_delta=0 ---let $galera_variables_ok = `SELECT COUNT(*) = 50 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep%'` - ---if (!$galera_variables_ok) { - --skip Galera number of variables has changed! -} - ---enable_query_log +--source include/galera_variables_ok.inc diff --git a/mysql-test/lib/My/SafeProcess/safe_process_win.cc b/mysql-test/lib/My/SafeProcess/safe_process_win.cc index 8a5bb60a3f5..6e1fd414287 100644 --- a/mysql-test/lib/My/SafeProcess/safe_process_win.cc +++ b/mysql-test/lib/My/SafeProcess/safe_process_win.cc @@ -152,6 +152,24 @@ void handle_signal (int signal) } } +/** + Sets the append flag (FILE_APPEND_DATA) so that the handle inherited by the + child process will be in append mode. + Workaround for perl bug https://github.com/Perl/perl5/issues/17570 +*/ +static void fix_file_append_flag_inheritance(DWORD std_handle) +{ + HANDLE old_handle = GetStdHandle(std_handle); + HANDLE new_handle = ReOpenFile(old_handle, FILE_APPEND_DATA, + FILE_SHARE_WRITE | FILE_SHARE_READ, 0); + if (new_handle != INVALID_HANDLE_VALUE) + { + SetHandleInformation(new_handle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT); + SetStdHandle(std_handle, new_handle); + CloseHandle(old_handle); + } +} + int main(int argc, const char** argv ) { @@ -270,6 +288,9 @@ int main(int argc, const char** argv ) SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); + fix_file_append_flag_inheritance(STD_OUTPUT_HANDLE); + fix_file_append_flag_inheritance(STD_ERROR_HANDLE); + #if 0 /* Setup stdin, stdout and stderr redirect */ si.dwFlags= STARTF_USESTDHANDLES; diff --git a/mysql-test/main/alter_table.result b/mysql-test/main/alter_table.result index f23166ca82b..a312964c547 100644 --- a/mysql-test/main/alter_table.result +++ b/mysql-test/main/alter_table.result @@ -3107,8 +3107,7 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `altcol1` blob DEFAULT '', - KEY `altcol1` (`altcol1`(2300)), - KEY `h` (`altcol1`(2300)) + KEY `altcol1` (`altcol1`(2300)) ) ENGINE=Aria DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci PAGE_CHECKSUM=1 ROW_FORMAT=PAGE show create table t2; Table Create Table diff --git a/mysql-test/main/ctype_big5.result b/mysql-test/main/ctype_big5.result index 08391e1d58b..e2b98402e62 100644 --- a/mysql-test/main/ctype_big5.result +++ b/mysql-test/main/ctype_big5.result @@ -5445,5 +5445,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid big5 character string: '\xA3\xC0' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_big5'' collate big5_chinese_nopad_ci, _big5 0x0001050001) as c1; +c1 +-1 +select strcmp(_big5'' collate big5_nopad_bin, _big5 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_big5.test b/mysql-test/main/ctype_big5.test index 4b6203a2577..917a3c02a1a 100644 --- a/mysql-test/main/ctype_big5.test +++ b/mysql-test/main/ctype_big5.test @@ -290,6 +290,13 @@ SET NAMES big5; SET @seq=_big5 0xA3C0; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_big5'' collate big5_chinese_nopad_ci, _big5 0x0001050001) as c1; +select strcmp(_big5'' collate big5_nopad_bin, _big5 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_cp932.result b/mysql-test/main/ctype_cp932.result index ed222c997da..4b6eda1bc86 100644 --- a/mysql-test/main/ctype_cp932.result +++ b/mysql-test/main/ctype_cp932.result @@ -653,5 +653,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid cp932 character string: '\x81' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_cp932'' collate cp932_japanese_nopad_ci, _cp932 0x0001050001) as c1; +c1 +-1 +select strcmp(_cp932'' collate cp932_nopad_bin, _cp932 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_cp932.test b/mysql-test/main/ctype_cp932.test index 0f5ff437d33..b4e33f517ca 100644 --- a/mysql-test/main/ctype_cp932.test +++ b/mysql-test/main/ctype_cp932.test @@ -61,6 +61,13 @@ SET NAMES cp932; SET @seq=_cp932 0x81AD; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_cp932'' collate cp932_japanese_nopad_ci, _cp932 0x0001050001) as c1; +select strcmp(_cp932'' collate cp932_nopad_bin, _cp932 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_eucjpms.result b/mysql-test/main/ctype_eucjpms.result index 1ce239fb4b6..91cbcec7c53 100644 --- a/mysql-test/main/ctype_eucjpms.result +++ b/mysql-test/main/ctype_eucjpms.result @@ -34547,5 +34547,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid eucjpms character string: '\x8F\xA1\xA1' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_eucjpms'' collate eucjpms_japanese_nopad_ci, _eucjpms 0x0001050001) as c1; +c1 +-1 +select strcmp(_eucjpms'' collate eucjpms_nopad_bin, _eucjpms 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_eucjpms.test b/mysql-test/main/ctype_eucjpms.test index 0d002f769a8..aebb9e10930 100644 --- a/mysql-test/main/ctype_eucjpms.test +++ b/mysql-test/main/ctype_eucjpms.test @@ -612,6 +612,13 @@ SET NAMES eucjpms; SET @seq=_eucjpms 0x8FA1A1; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_eucjpms'' collate eucjpms_japanese_nopad_ci, _eucjpms 0x0001050001) as c1; +select strcmp(_eucjpms'' collate eucjpms_nopad_bin, _eucjpms 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_euckr.result b/mysql-test/main/ctype_euckr.result index cf2cfb6be5f..6c5498e88d8 100644 --- a/mysql-test/main/ctype_euckr.result +++ b/mysql-test/main/ctype_euckr.result @@ -26065,5 +26065,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid euckr character string: '\xA2\xE8' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_euckr'' collate euckr_korean_nopad_ci, _euckr 0x0001050001) as c1; +c1 +-1 +select strcmp(_euckr'' collate euckr_nopad_bin, _euckr 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_euckr.test b/mysql-test/main/ctype_euckr.test index 1154047fdb0..2196c5d3717 100644 --- a/mysql-test/main/ctype_euckr.test +++ b/mysql-test/main/ctype_euckr.test @@ -241,6 +241,13 @@ SET NAMES euckr; SET @seq=_euckr 0xA2E8; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_euckr'' collate euckr_korean_nopad_ci, _euckr 0x0001050001) as c1; +select strcmp(_euckr'' collate euckr_nopad_bin, _euckr 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_gb2312.result b/mysql-test/main/ctype_gb2312.result index aa3c0e009e3..38632523103 100644 --- a/mysql-test/main/ctype_gb2312.result +++ b/mysql-test/main/ctype_gb2312.result @@ -5135,5 +5135,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid gb2312 character string: '\xA2\xA1' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_gb2312'' collate gb2312_chinese_nopad_ci, _gb2312 0x0001050001) as c1; +c1 +-1 +select strcmp(_gb2312'' collate gb2312_nopad_bin, _gb2312 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_gb2312.test b/mysql-test/main/ctype_gb2312.test index b9147fdc420..15b69e00ea2 100644 --- a/mysql-test/main/ctype_gb2312.test +++ b/mysql-test/main/ctype_gb2312.test @@ -199,6 +199,13 @@ SET NAMES gb2312; SET @seq=_gb2312 0xA2A1; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_gb2312'' collate gb2312_chinese_nopad_ci, _gb2312 0x0001050001) as c1; +select strcmp(_gb2312'' collate gb2312_nopad_bin, _gb2312 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_gbk.result b/mysql-test/main/ctype_gbk.result index b970f15b688..b53d70f0ec2 100644 --- a/mysql-test/main/ctype_gbk.result +++ b/mysql-test/main/ctype_gbk.result @@ -6603,5 +6603,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid gbk character string: '\xAA\xA1' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_gbk'' collate gbk_chinese_nopad_ci, _gbk 0x0001050001); +strcmp(_gbk'' collate gbk_chinese_nopad_ci, _gbk 0x0001050001) +-1 +select strcmp(_gbk'' collate gbk_nopad_bin, _gbk 0x0001050001); +strcmp(_gbk'' collate gbk_nopad_bin, _gbk 0x0001050001) +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_gbk.test b/mysql-test/main/ctype_gbk.test index 3e3f48d5c62..496102d6cae 100644 --- a/mysql-test/main/ctype_gbk.test +++ b/mysql-test/main/ctype_gbk.test @@ -502,6 +502,13 @@ SET NAMES gbk; SET @seq=_gbk 0xAAA1; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_gbk'' collate gbk_chinese_nopad_ci, _gbk 0x0001050001); +select strcmp(_gbk'' collate gbk_nopad_bin, _gbk 0x0001050001); + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_sjis.result b/mysql-test/main/ctype_sjis.result index 46f87bc957f..39acece4d64 100644 --- a/mysql-test/main/ctype_sjis.result +++ b/mysql-test/main/ctype_sjis.result @@ -19389,5 +19389,14 @@ EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid sjis character string: '_x81' SET sql_mode=DEFAULT; # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_sjis'' collate sjis_japanese_nopad_ci, _sjis 0x0001050001) as c1; +c1 +-1 +select strcmp(_sjis'' collate sjis_nopad_bin, _sjis 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_sjis.test b/mysql-test/main/ctype_sjis.test index 951571ef523..83e12c85bda 100644 --- a/mysql-test/main/ctype_sjis.test +++ b/mysql-test/main/ctype_sjis.test @@ -328,6 +328,13 @@ SET NAMES sjis; SET @seq=_sjis 0x81AD; --source include/ctype_ident_sys.inc +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_sjis'' collate sjis_japanese_nopad_ci, _sjis 0x0001050001) as c1; +select strcmp(_sjis'' collate sjis_nopad_bin, _sjis 0x0001050001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_sjis_innodb.result b/mysql-test/main/ctype_sjis_innodb.result new file mode 100644 index 00000000000..6252848c8bb --- /dev/null +++ b/mysql-test/main/ctype_sjis_innodb.result @@ -0,0 +1,23 @@ +# Start of 10.5 tests +# +# MDEV-28328 Assertion failures in btr0cur.cc upon INSERT or in row0sel.cc afterwards +# +SET NAMES utf8mb3; +CREATE TABLE t ( +a year(4) DEFAULT NULL, +b varbinary(2545) DEFAULT '', +c mediumtext COLLATE sjis_japanese_nopad_ci NOT NULL, +d decimal(7,7) DEFAULT NULL, +e char(219) COLLATE sjis_japanese_nopad_ci DEFAULT '', +f bigint(25) DEFAULT 0, +g bigint(20) DEFAULT NULL, +h datetime(1) DEFAULT '1900-01-01 00:00:00.0', +PRIMARY KEY (c(25),e) +) ENGINE=InnoDB DEFAULT CHARSET=sjis COLLATE=sjis_japanese_nopad_ci; +INSERT IGNORE INTO t VALUES ... a mixture of non-ASCII and binary content +SELECT * FROM t /*output suppressed, just make sure it does not crash*/; +CHECK TABLE t; +Table Op Msg_type Msg_text +test.t check status OK +DROP TABLE t; +# End of 10.5 tests diff --git a/mysql-test/main/ctype_sjis_innodb.test b/mysql-test/main/ctype_sjis_innodb.test new file mode 100644 index 00000000000..80f3b4fec0a --- /dev/null +++ b/mysql-test/main/ctype_sjis_innodb.test @@ -0,0 +1,62 @@ +--source include/have_sjis.inc +--source include/have_innodb.inc + +--echo # Start of 10.5 tests + +--echo # +--echo # MDEV-28328 Assertion failures in btr0cur.cc upon INSERT or in row0sel.cc afterwards +--echo # + +SET NAMES utf8mb3; + +CREATE TABLE t ( + a year(4) DEFAULT NULL, + b varbinary(2545) DEFAULT '', + c mediumtext COLLATE sjis_japanese_nopad_ci NOT NULL, + d decimal(7,7) DEFAULT NULL, + e char(219) COLLATE sjis_japanese_nopad_ci DEFAULT '', + f bigint(25) DEFAULT 0, + g bigint(20) DEFAULT NULL, + h datetime(1) DEFAULT '1900-01-01 00:00:00.0', + PRIMARY KEY (c(25),e) +) ENGINE=InnoDB DEFAULT CHARSET=sjis COLLATE=sjis_japanese_nopad_ci; + +--echo INSERT IGNORE INTO t VALUES ... a mixture of non-ASCII and binary content + +--disable_query_log +INSERT IGNORE INTO t VALUES +(NULL,'tsls','ce License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHO',NULL,'g',0,4,'1979-03-20 13:59:42.0'), +(1972,'j','? y瘢?5ロ ~-イワ?\r?WC @ヤ ?ソ?=ウr!Iラ.%梓?菓キ?dIT9%Nロc*1i?ヌ我オ4ァ?)5慴ト?/rUGCキ|刈ヘY5レ嬶?ー;源ヨ ゚ケ,V敝|*9モV@、2ユ修^僵!雫ヲ笵?^jオ゚?#Vc@1%Bト?Lo_*ヲワFン? ィ?5cー;站kJaイ?亀メ?~$筧?\0Yy ケ%?SテンTzuナQ ミ{?$ヤ??? v\n叮エ6?飛?ロ轣.ッ}Pヒ「貼ホ_0操瞽オヲU5&[1i杷bメ8;クロ?ェクa??\0-\ru?>ァァ9ンkミ??禮Pウ?ネ^=Y?{rRB~ミ;?}?\r.{)墮??#ト稽悲」??稷ァィ゚$O釶ッレ}OSカ枝?G?}ヲツ+?1,゙&栖、ォマ?@W?ヨ?廣?ケィ閊瑳\rN?X怎?\0゚・0・、?*ス2}諡?ラOカ鉉+fqJ?オ\\銓ミad?)カh?チヤミ私cT?X??yN ォヘ>+クcV\n[ヤ4Qネ?゚d? ?$@ノ.羃ホU?{\"<ヨムノターV・z?gP?(\Z>C努#lィ?甫Q0豢4=3\\ヌZ!?カ+oe$t B{梳惡欧裲ノタ?輾?4ニェ墨]+恷痊lEテ;ソ們狄カ0イアゥ?7ホQォ濶lニ> ・jKアゥ?ヒ?J茲X髄F9ト|?ヲナT禝ア・w?8YァB絃ヲィAZ?>?8[gvI、ェツ」濘豼ヘ斥-クX?・EI82K!?UリdぬB推?*??9ャtク芍e亂\0v。」奎??N?夜Vユ 1ワ??\0ケXBoヲ\\D冊膨)5・M@テ?B?1テM?ハー?6メ黔2ゥoA?ク轄??ヨ\0E0ッ゚オA?R吃ZU?sミauニ?+?ホ?ヤ\0h?8:?/T?\rトョ珥Wf粕oカjjv?楽鉄p?.8ゥ・|ー*儺フ*捕蝮CXメョ. bメsレ・@ネu档?ヨ&%#^ヌゥ?\0孑ケmサ8?ュエ錺?灯 r???ヘナ?(タァ\"wョミ?%ルkーニ\rVWjネk?癜ハ6mイ2。Iオモフト、J=キァ??hx。 ラケテOャウ*? ァd銖c#!?0?sミ?%v?9メ$\0?K詢}エ??VT?u\'ヌ ??$?\rソ皺.。d?!脛ネ?2& 暹?6譁Zル^k ラ優エiヤア?\0?<エキ存旗叫aエキトフ??\0頂 ワ、ー。o家?\0鍄??&f?$―?コメX?6Qロ[rlソv??ヘュ・?>YrJフ8.チ{差?Fツ?vイツ?/シァ???\0Ur」?$ロゥ??\06穢ト^オワ?*/\Z?タi\n^亥クァ繧#沓yオ聶?\07c簸?。>莪)竟ト?#ソrr&HT?<△wcヤ廸IExAミ?ヲニー?∈?; U\0Qセリラィ\nエ\\Fi\rj篳?ク?g?:死bR婉 \'トト難?祺J?e\0\n?ウス1逓dリセ?-\\メ??カク bnoJ?9<;?%w{%モs番?循 サ村夢?ェUS?8Pマ紅ト匆逐3祗ルEア、? d家答ケYNヘ?6*?イラm>ミョ\\NAF斟ルmネ昨*フルウaWfヘ?vlルアWcケキJ縱bョヘ?XナVfナ&Nリ?*?ウbョヘ?6*?ウbュッ\\ナHタルォ骸=rウfナ偽キヘuNT?9N劔ケ\Z?Sムnlルー。ルウfナ]?6lUルウfナ]?6lUルウfナ]?Mアクェ?ニ噫?箘ヘ?6*?ウbョヘ?6*?ウbョヘ?6*?\Z束J?,p操・qHh?ヘ?;6lリォウfヘ棺6lリォウfヒ。ォYウfナ]錫i\\。ラ??;筧\\ルウbョヘ?6*?ウbョヘ?6*クH@ヲ7ョlオ48ォ椛赴ウ1階Yウfナヘ?6*?ウbョヘ?6*?ウbョヘ?6*゚#モ+6lUァトイIF驍58#駆疸r4fォ恕W楠bェ9ウfナ]?6lUルウfナ]?6lUルウfナ]?6lUルウfナ]?6lUルウfナS]:ヤJ7ヒサカ綴?A〕ッ 0}褸???,NVlリルウfナ]?6lUルウfナ]?6lUZ f楙q7B卦爿+ッォ?9 f」L\'アX肄?&[ヌ尋タリ?fヒU,h2ル\n\Z*ミヒdヲP4ヒ-\\UnlルアWe―ャ|F?Uiハナ%?筬惣喘メロヨク?7\\-ヌィエタ?&lルー。ルー簽NB\\aL驚旗cJキ,ャリェ?? ?)越.*m幡挾レ)+ラッ光G\Zcd|B1_Y0セ/蝟 01G、仄I?驪$冑添覚?B?\";ョマセG&eア添各4Qノ?ェ>{痞?XGネォ栫ソ貍V9i卿?=}ー?クリィ剌婁ロ廱yィ?ッ??\0+??ロ?dヨ-\n?ユ鰒濤A?テァ-ナ^\0l=ォ?_/?&?\0[?ョmタ詠K\\シfオィ=sBフュホ6*テ。?ク?佗 。?c?|&?ァ繚「Ud柝j??隈尽キO qqタRF澑?&搾?籬??-fテu゙攫\nヤW?\0「1)QTaQキlXEナeエッヤナメ潁錠ユ瑩#Fオ44?P訣&゙穂?ノt?-5>Oル_ッ?Z?メ?\0幅Jユ??村ハタッ_ク?諡{タTGt5⊆:浄_?kテ?\n?I蹠摯吻チカW???ハg茎褶3捲縱a-エォ$忤肖?\04猴]n?ナ)゙サ嗹?\0*???-楫??ァユッz~??)2A6滝,\rマト蒋?G6wiユシ錯Iュ{滕N,Y@篦菜??\0Uイ9a|ヨタGv。|O?ソナ?8{Cr「@k?8ア/F゚ツ仄Jエ m\\ヲDZS?|ッL2?G?*ィトミ\0>9醐ロ|F61?櫚T?]ォ?ャ.I蟶8マメIテ !?|qェ暃サasン{SU頑)ナSz梏ィチqワォ)?レ癖ャ峻ァ蠣/z\\4キヤR駛ゥ?ァ G潤?$UGタ??Xョレ\Z$捧?ェR黻ミモ゚Kョt?農vマ、、ソ? 戡9&?Κ荀?樂]y? ロッ?U綽z?ラナobメニ)ナセノ_柮}cヒ3鰓圻;?\nモ??\0ノマX=イN?)+B7?)総_ヒUFTE?嗽ヒ!班ワトトヒ??ァq鰯禀ン3ソ]y>ツ鷽rFm覯F?テ?c?/3?[[\\A?ェ ?\nュB??\0)ンj?\0?pフ cタ?Eィ゚|ゥ#莊?Zキ溶tキ+,r/シ衰}?c\nJミ蛟λ?%&h\Zォアノ<\Zーヤタ受欺 ヘ#nテ?灌?\0ョルxチ?8レ顳0ィ,?ヤ字xヌ3?RO?e[恢イK}茘mrンu]?;\nシcbュ?U?E ュTモヌロ?\\暮?:賦GィYコシjhフ、タL浹ヒ??%」c??Iフ?リZ?欽ュ?2ヌツ?;迫?ーチ:?孃4蒐Ky公。? Fワク;ヘ?!d称1??\rユ$^?飽?-ッXj\Z)1」?-e?A艷曁?ヒッ?Wツ%キ\"岶?=wO?=ッ僭ァ/ンタ」ォT種?ヒ$v?サァマM凛4}e?\0ヨマ=阯1ハ滿ェNヘE虎z?9(モ|?.梅ュ髯t?15?\0軍|YT?Af ラ\Z\0ュE?Aロ?゚P\0?エ7?\0bヒ?6コ? 壱2Hサヲワ??k筥ォ、ム浅??カA*QX?\0?4oヌ??_??( Zモソo?hヨ@「ニS皺?J衄ホK,恤餘[ッ磋アT$Qノ?74?1@c数ィ,:?ン蟹1?7拓乞イ承_?榾ys?珍ハ浄筬^ヘ 。??9?hマテコ璽ロ手F?コー?痰筆Gメ1V:?(屑ト>エョGu?,ルk0 アンz?ニル7ケメト┫杣}淘?OEyミャ,ムオ*E?カ?ヒri2ゥ?={?\0イツ3ィ゚yr?ュ~??)゚?芭?\0\Z?+Pミョ,匯」]ケ\0v?\0Zケ? ? Y絵Cラ08&Kv?(タbk?&+テcェ%?ュ? ネ=イユA5ョa?1kRィユ彫エツォR\Z私゚ヒモ5クク胙カ0F]?G)BH9テヌtァJ綺6ョ ォQ|&挂?Fkナィ}ー2キサS$\Z&ス5抖\"Jァェ7?H尊P「ラ?-?ィ?hqォ \\FgRZ殘ロサイ\Zォオナ?5iWJR灌V-蝓BKソB?F???6*ヌ>ゥ@A F5~鑛徳(岫rfオ素ノCク9ヨtサhdeカ=+N??\0イト|スッK?]+ま?アチ/\\vQアzヨウ ムZサ倬?\0k?ヌ疝企z^榎?/ュ\'Mテ+S??\0.クdhKxワ學峰鳩c?j?\0艇8M$(^ナスd?h(\0ラ?5カュッ)苑Tョ???\0ニク、壥カ?0[ネ\rサ攣ァトァ??\rユ(ー?カ?0コ?iナ??注>?y?,?ャhヤクシ?z?*Gヤ1ヲヤャ佐?(戞蟶糢エッGノP囂粘Sスネ?0ェ?溽ノ%剛ー@m慍P(S聯モヒ!Z冢、サh諷?ェkQ?ッレノヌヨfeェn=?66*?2?XヒィウO\rロヒ0ゥ)57ハ次オ?5?1シサ?W??イ?乘?)i~??賽?)?1ヘUc_貢#?\\?>??+C%?-「<穽Z狙カ*ソY ?; ?靹カカ?:シ弉X#タj≡ァレT\\K^エカモ/G闍?$$FW$ュe氛_yマFィケゐ;?^嚇?j?)j?トコFッw?]:O?z?\0;|G?/サ?a艪ウイケユfFD跳Hォ\\?C婀?ァムi# P扮?sロ[_^t?!yQ\\?ソ??\0?4寔メoレ-Dレdモ\\モ・サオ愬,ce#j復ウヘ?b櫁 }BルL遇fSJ?,#eー啼rモmh&IユjVM??」ウrホ]ャjヲ矍b5bjェI?W-蔗?t?讒ヲdテ蛛扮4ハP 。ニ?8?.ケク?ホQZo畢xmィp%j?:蔑X仟Hナ\rミ嫉y?\'ョ^)DC ネ2?\0=?\0綵ラ幕niフ@v ?\0ト ョ53\0F?mi゚ナr\"孤ニシス?/0Gクフ$゙ァ\ZオUg$\0cロカ\"C狂W2N OイB?bィd^g゚EnjR、\r潤ッレタマU59Bb6゙來J?7\\ヒノコ\n聊[w#ユ譴?&ソ/?ムレz|癜?N?O?V|RTW}?旅|g\"?ィm柔|b?EI?0ZU?俥%?ネ&捍gカ?8テ?!||q絳クhMノ箜???Z。\\??Fロ?翡??%W?mヌ? bキZUヘ、byzf? ??\0?ю肄?)b~ネ??6iォIg造F゙ィ ウ $?.ネh=アエハテJャ\Z?I9|ハW華?#・q?@チ?#ロ/i挙P7ロ?ハT\'~リmvラ鳳+ニ其\rA\0ー=ルp偐?0ィロ抒?8?糟q/^タt2GSH。#テエセXル}hメTP@V?\0I?;?.mZ6\rX撤??g皀}滸ーr隧|M?0v^T?\rh瀾t?4\"?Fム鮮鶲?-?儼ンV/YY%~??\0ハ胝as?!MG? ??nE?\nモヌ?キ?4@y廏\'?銀ニェ銅ヤ聽淋淘Pトtア?\0c ̄莎b析%ケ?\'cL凉fマOヨヨ[[霪rイ?P?/褸セ?#?ァ\\=エ爿#SqJ?\0??ョ7ス/嚮|凖ト??T~b?JDム?ネ赫ィ?萵KKゥ?ヘl???xサ樞V萌/!?カ??8z?*ムオT・O壱?>サOn?卻)-wQ眦?\rW」-w\r1イZO\\??(Ykn?!?GR?\'?U?ャマニ。コ罫K?ヌ?J槨゚Pp1掾5>9メウ戲GQバ?ュN8「ケnK?@)?ャナBユN?ニ-mhモ)??\0v泌ス6ナ レハー営b?@疑フヘ??カ,$\n)「槨?|メキ6b3bZ2T?g奴Pc「カ啼?\"Feпオq6r68?*藥uチ_YDリモ??ハンア・Dノp+Tトクシ?rм|イ?9?6T3D???q?0;Lh烝ユ~?\nャウF戲j>??*ッJbqコG ,9ニ%zT|ァu陀?モテZS\'オキ7rャ*UK\ZU?kx芳ヲ蔟リvhヨ,ヒ?ッ5\0+スセ4ォロFo?3+ハ@;J?q」qg?\\土?=>?ヨレ?i$アK\\滓iGタヘ??渟ネrN#夥~-?CR[ゥ+\Z\0+ーョ\nン6易ョbゴv?ォP@PP|???ツa岩ミO、? ???゚eーァフ?Yjsナ\0? ハオュ|I\\A閭゙滴サ?キカ{裂メ庖 スウヌシク?3橘?゙:Q之?}、?\0棔ヘ?\nッ沸x/「?\"Gチ@jミ?\0番ホケeゥナw$?*89 H?鯤ャ泓MqvイD? 5ヲフトウ?8oョロCEoシhv-J穣衞ヘcf]・? $??ッ?,T[0&Y曽ェzaN兎%・エ0<「F。?)?\"Zミ@ソ?煢EツウYー>、gzq=~ラナ\\ZGサ敍ラ,m畛2ニ?A?ゥ~,.セヤ」iqrzェ???簗z?e^\\っャ^% ホヌ聿@%ソリ?君? 鈎ホヘ\nÅャ@?4?\0坡レS;レャ捉DJ?綫??l0コモ^ヨユ/Q?\0x貎ル1g丶ァ遡/{ァGァI\rc傑チ.ヒ燹サE_?竊aト?\0l\rヲ婪ュKノ!ィ「初??vヘmJ g$?Qソ?ミMォ?2/ィヤP」aモ2UIッ\\\"?$P鍜lィN?t;vヲ*?^<財{?:ヤ?$?\0G?q康酥潁ョMfコY,\\リ?9k#*オ&ケ ? ?3旺B2?^\n nN6レフVsE\'ゥト嬬^?\rOl帝ゥ2ォJ bエ$モ?窮テ第ュGヲ<5c\"5スv?\0U+?・?XxQリヨ??与YリR?(2?L)??1臓FKgw漂J?ー?整L「P席モク?#D{3Ic高Gミ?1 Az?ヨ?2?7ヒ^~?ゥ??ヌ)ネホ,f?wpR\Zクッ\'?$0ハ;?1レjrr;ャepO?)!\nヨ鹹F韲@? ??%? フ蠣3&ツ方 Oレノ逸セチo祿宸?Qソ \nヤァゥ4ワ忖モ>ヘン淳ァ?ニ?(??bナクA\'ー?!8針hォロト潺猫y?ε:蟾゙? 隠スァ?、?\001゙ゥゥ漆[ェX?$pウ助ツ\0エ?政ユL 允ュN;蒼~?:翔t鮓S\"ヨヲ、竊、\"J?W?8タモ-圜?ニ9ヲン?。??。ナ7ニq-ラa繽Xケ}??ホリ\nw+K翫冷ニトシ怺??ゥA痼?)?V?ーナ這リク ヤ??AヒPE; nヤ?ョ#4靡庶2Iv?\"?l<0?ニムi???p4?b?ラZラ$tト壺メェY?\n.o?ナモヌ\'rbd5y?6鵲K;Jw;bl蔟ニ冪ニ#ヒ姜&Mヨ?2議Iニ当*龝WLu0・ルゥ?.亙[ヘ\\ャア???\n?ラ[囎ヒ9アVク褊岼W\\Uzメオテ?*?交E$?? AR、w%シァ?*??ソ錮ァネノ娠 ,メ画ロオw?\0e?B濔V?B}0ロス66??JG???ツス+L}b笊「\rリ?゙UFツツmJ@?\Z??エン;%ロ? キエ遮F8「? ?~+A鯢????ヨチシケ.チ1コシ斜:ケ\n泳~呈ゥ\rQ<{?+シソ約ケハユ=シgノ\0I\\メWgニウb|キタJ@Vdユ_lア7:{箴T順ョ*tzタ確?鬨纈|?0?絆SオAナRXッ・オ?ワァ栴テ{?・カスp-ホ涸ォニケQツュ??イッ+%W|T$ク8J輔Nリam1?DH?ケ?瘁????ァレ&」ヲ#*4dイ椈ェIuァ?ヤ2??p「?:#$Pハ%Rユ;君[D?瘧アヒステ[\'PイS?。ヒ悒ヘ_?3i?モケI $櫨Y?ユ?ァL?-lイ!cアm翁1\'、?7$?iZuノFF\'do脹tサ?2Kゥ(\r+ロャ))筥?9駮4?]Xy・L規k「6?ヘ?\0W??\0禳テ|ユ? ?)J!ス@鑿YP\'??摸賄ロォY? bm>h?uヲy橸D棠ケGルdィ?2ウ~゙sリ?-鹵jψXl趺テ-;T、?\0~ホユ(ネ蜷?0F゚$駅スq?k G」$ タz截???T???r@ラ,イ$モq?3?sCンs菜?c餓.T4lヤ?)アS??蒸ラノn閤?槌ニu壜恂7ン瑠\'?ィ?P#嫣6?!u |ユユ???2、?*」?\nヨ寃?ォ~ホIヤ]tTミイミ狙ル繽エラス\"?>p-@選ッ?Oルネ%3x#殀?~?オ漬碕。ッ?* Mュn゙、MC?@??ォ3?\r Rエョ?ォEbxオ=ニf簗Kモソ?ェゥ_JeッC@iロ#aウ?$v\'?6ナP2iノ ロ?ェ:甼ホn?/%e*テヌ$G??i?(フI?シッV?P覓:蕨Уダリ??\05dCW?キ苧仭ハ。?リ聖? ュ?J?コb]Pケ。體!;ンi@9ッヌ?;ャソウ?ヲキ?碍セ9ル?(ェネメニァ?級リ} ?\0タ膀?ケ肉&12?iヒr?ヤ楠螻ハトナ?\n哉X比嘲q?R??:?\0アツ気??髢課\ZRx聊A\\g、TQ?ソ|mf?エ#?K?阪?*ツエ?豬?=ニ?ノZ9Jォ百Pqx. V7ンOセDmク苳;r#??pロネ鈞ナ、戟オw餡掌G?+@GC停ル圧ヤ.,寞Tッ~゚?\rコキn_XカmエモU#ヤ#U2抄???k簗hイM?痰o\'%。5モ?%?ワ「\"4Jd^?5ネ?槲=6事?$・ョH\"kiヤO何ー野「舜hハ?[?閤D?;茎゚孛?(碯ロエニ2dカn\\サSゥマud?{βー?ハ滴オx?.?d?ョT?゙8?糊m^?\0?Yomャ!\\ォアィネ・G?U弘・ノ付?hン?ヘ?\0g?貔h?Eンォ*\\ニXx??=ルS麗.v砧izK?ミ?ト・アースッヨ? X? d?3?-癡曰ヤエ虐sy$ゥU2[?OO?,!OZZオ?hNz?R?毳i?$b桙スソg\na?ニ椣4v?[bョ T?\0/*螢76&/*ヤシォ!ア]Nナヨ?嚇々ヘ7?胴テ??詆ャY_ロGshヘ??2)Vホ?鮃゙\\?2ロZFテモrP跡?i」fEu?\0>ヘmレミj?+sr@PS?;ェァ?<彳ト;メ、??\0ヒpj歇Dtカ鳬浸??クレソiヒホアヲI嬪?6?v?vH9ナ祁ム_テ{,a」w蔕タR??C~ヨumBo?;[9-,リ醂?エ*?\0?ッ sLQZニゥu%繊??/kヨ奬┓ニッN[?レ??7Hカ叶L\\ィ?潘?\0?H-エ{Gケケлf頻*~決ィ紀ワーMKハキ\Z=?イ?Hユ」;u」#鴉ワ・%\0ゥuィ度膕UッセHY真A粫ワ?ナh|\'?6? カ?\"iハ娶辣ヤァN亙mォ?[5ャ ~ッユ ̄テ鱠3\rヨヘHHpUヒ\"氛S凋ロ壺?竕\Zケ?(ァ\\y*?aZモ;W逓サ・Xオ+X、I?、??ヌ8ワ?\'テタアsヤSァモ昴ノ1ンリ駲ヌz??Hwァ?S們)弸I&。Xヤぅ?vホ躑{]Nh・D?% ァフ ?:棗??Bユワ滸_?マ??;ノ.?j*)Ol?\0xッ「eノ#x旗祀6フヲ偃サ?カ・2スホXュlq廖ツュェラ蝟v;些∴ロ?\'佯Hヌ聴1?踝ノ鮴リ|?zJ ?wヲF停i? フ??敬タェノ9印ZWカ&_逮()r1k孳b 9Vロn$?XZ26Z?S?3\rサ?・?U??嘴ロmR籘。H#?\Zロョ7案|セl@HF?9?rォ9bKtニ?ヲS71カW/l7ワォ?ヲ9zLJ>Lタ*?> 籌-ム?コオVU? )??6Jメ(=jqe0ト#?ゥ]サS??+y}e$惆 0ゥ ケm?\0ノツ逅?9・$ヲ鉢ョユトタRエヒエヤマ磧?@0?低ヲb??TOタハy9$R?緜hUテ2??2航Ubハ*l|z衒ラ?0?ネyTTq?\0ゑ?8s苗$f_ッ*\Zl2 > |lH8褞チ頓42Y无\rT?8實ィニミヲ*M0AWpヨ??\0ツ?\0ュ?\ZRス?・巛アD・iRX?\0イタU9K/イェエモ」コ樽U=?y>{?D「ー?&翁\nミ??銓チa|カ鎮FjP?5ク}有? =オタg亂?;ニソ莉|)?\0qネ?漠ミK3W?#??ュソiソノl妬紘ゥ?X「xセ?)Pサ?^??滿~ホM襠ヒs4w F-ラ?\'。ュ>a?ヨ??籖V4vァ?\0?u菲/狃ウ禄Xチ*Z?P?\0+キ屈杤?=マ峯xツ゚bアK?-:イッル?\0e菖シニ億桑\'ィIォ棔??+ケ/u\'?斉ぃ*J??k?0 ルs}ヘチXトnサ?\n?5メbミu]-釀?+|サ!ワ/ロ? ?ォ?LイZロャ?NhcSU?\0+l;ラ妣ヤ.ヨ?ノi ?フ彑?,7イ?/ィyj{ VG+?a?コ?廂qコィ縞2i鷽レ・Z竍?~ヘeノノ、?E融1舒8レHシ?\0\n??騙/?.旅ラh?ス?-\n0&1ネCj?>?ア\r+LIチケセ-?イ\n}ッル牀U、?\0+?:テN郵i#エ?$H?~#?~ホハ?PHb2\'??0ハロノレヲ嬶%スウyvc?エ故1胚E<覓s?&эサ?、暸@?キ?抗J?。?FbI?\\[Z??壗チmf?I%ネ??roルノq?/>?\'ヌSJ\n≪?$,e筌p{{bッ フ然zwノ?\r(H、T\Z梱?6&K9,w=N*タイ勇QZ??*?#+1wョ4ェ償i哦?sムW?3ム(?ェxヤbシ?\"$BU→#ィニ゙^M})榱フ?7V=M2)h「ヨ穏ョト篷\n・9??*0F\ZL幕k?=ヌ+詔鰻」?恤?\0膏涯+??\0YEK蓄/?老ニヲケ咤ルX夫9C6ハ+儕ア?ナ?ヤP>\"z童\rヨヤハ?(「?j1Sオ0ツハ(?8f R6cネ?篩H?\0ト?ュ蜂|m?&鮓jHィ魂,{??ョ+ァ゚ワiウ 嫻璢ソマナr繕?\n\nヤ?4ノRヲ/・ヌujキーネ柴:1U\0才+3}? ァ魎_ク?6騎潁キ?テME-?hョ\"u ?#GR\n?~Kヌ?S?ゆ淙?Yキヤ臑JトTヘ#\Z\nセ綉莨ケ乱&Kハ]ェiヒ「Fヲ?尭?ェF孑aOエ゚ー屑Yケク{?\ZW$ウ\Z樽s。?l!kk8\0∴;Tラ?k9ュi?<鋒9 ??・向ョ!??ヌ「舞穢ネ號|\'tシi?pウクV寿絅?\0ョフ\0q?rリヘ?\Z9?ョp?メmV?4?F? オF?捏@?ネカ梗モ濠ゥョヤ?\0W?dS6ノ榴+(N$\rゥモ Xラ?ソセ))~!T?q*オ7・4ノ$ョ?_3j討?BK\Z\n 蠎アf?\n5イ? ZB\0O\\U「f?テ^セ8 Kヲヌロョ=マW黯?2Jヤ?!^)?佳梯]螽゚e^ソ?c->.?;x?\r=テWッ_クb\rゥ.iYS胃ソ?ニ?ィ誕V?\"サ侍コ?\nL?>#?6タrL? jha磨ワタャ?W燬° 」ァ|H|?ユ?、ツ費窘 ?\"\"?u゚ョ6k?vワ椈Y$瀝\rVy nrネ盖eョS?gケ?カニ?ー9jeニ?\0ーa?彿9イイIvXcツラ[Jfク麁瓩\\i憂讎a棺?7ヒヘ?\nコ僖モ186ヒL{コ14S?i@?V\"#モ nャ犢p振ロ゚カ [EaS?ZメBccミu髟$O」ぉタ砌敵ヲ|iC1鰾?ハ?Uトlャァス]ェX墻?エ禾エe\n.n????\0?{ケV?? ?カモ?蒄\'?ヘリ5,メ6?梍ルm?ア???[」E?=ー?$カメ\"リ,j:樒鷸?6_Q蓿?サヤeサb?槲$ヌ??チレカ?6??\0スPx羨ソ??讀ツi*?\n熨??Uo??\0[癌;甑m?*テ?\n?B?2rO??9w「ζ,?Oハ?WG?1較 ラ??沂?\'?,屠:玲[t丼&a?ワW?ノp??楡ソセA膰逐?ウ渤?_k:DN%衢[?1フLr.zoC_ハ?&?eR$ #?n?廬苞IBネヲ保?需? ミャ?ゥリWキ?ニ劵R包巻ャ鞳?*ツサP?イGR?n0(xタ(竚+? メK?レN怐鑷Ugキ銜イミサ ッ?(ッ{\0゙#ナz?ト??=E+ラ?O(ツ@ワ壱ヤ|ェォ?=ヌ菩e#簇ュセ豼?N\r ?矯ト\'ウI(ノB|0ルW苦曄ryロコ宛?オ?G#?カ菟ク「」Wビ?9ンnエSネ2?<:??3鞣?\nプソOサ&2E?y謖?-J?ユx槽役枉\n?iモB。$」.ヒJV」ン雜WsD6゙」oユ?{ラ??ン[對e??リaTカメニ~$狹?2s?併101?B?ラタ・^ハ「q \0???d?C施??[ア?チoァhnAャゥシ草爛ナfメ蟠簫) N?キレチ融: Q%$V」bG?オ?-1I??Tイ穫|サ{?-B?!\rVスA?j皀リヌ;蔑\'?&ヲァオk??コc?~ホ:?bト?mzY#痒 rW?ム?イ+}恁ワMcチH\r?e穀?!(ァツワクモ??OwN~ォ??0ヌn概#儻~<樟\Z?:?2?\ZoU?\0?劼kf1H#)%h[播?:? ]=wGヤ&?-テイケゥ*\n~メ稽?wQハア#ニ(xr。?\\[?\\敬儻6!-?I?P?nノカ??+]v堺X「r?\'?WフYFQ7M?nヨー蛇?剄\n?ソeクォ/ルツ゚+K?=ケヘlニワ?\n@ッ?3rテ?,e7\"$ク割? ?\0Y]G,3uk?メN{UN??!誠ゥ*沖レjヌメェ??效テ\n?PFテクネ~吩?,ァwSBwオo?暢9タVスゥ自??0? オヨfウCK腆$?\'? ーz%ォ;\'傘e?7ッ??啣.^yネ??/レナ眄セケ\"゙?4蓉?F?\0ハ代otン;N2・ユミ朴?ァ牒「ネェ胯???H、?F?ィュd??烋7\\eツ=ケ?@?cQ?イb1\\d:?チコbォ^G:PV嫩・オhBQビ?=?ヨニz?+オ=?\0牾t?T?∇、揄??ウ?箏{剿:?フiSモヘホぬ??」年\r?兒做モV???8ォJ?_趁?瑯ムエh?\0zレ芥sヲ??yBBスセアq=離ィワヨン欧?タ??2??ヨネ&コ?-?ZォコQ_ウ?義ォ{8オ8譟J?;kXミ?\ZF?リォャ愾リァ,レ/',0.7124939,'sl',7,0,'1922-12-07 22:15:04.0'), +(2012,'k','',NULL,'lstxvxoo',2,3,'1992-07-20 10:19:25.0'), +(2006,'txvxoobx','{ }\", \"UTAH\", \"2014\", \"37\", null, \"-\", \"1\", null, \"3\", null, \"27\", null, \"68\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-111.5871285339997 39.36070082200047)\", null, null, \"UTAH\" ]\n, [ \"row-cy2h-v4pv_yc2a\", \"00000000-0000-0000-29C8-82ED26F05724\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"SOUTH CAROLINA\", \"2014\", \"37\", null, \"-\", \"2\", null, \"6\", null, \"55\", null, \"61\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"7\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-81.04536765699964 33.99882214300044)\", null, null, \"SOUTH CAROLINA\" ]\n, [ \"row-wyg5_yc5s.2t33\", \"00000000-0000-0000-0009-A1EAD77B5986\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ALASKA\", \"2014\", \"37\", null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"4\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-147.72205669099972 64.84507631500048)\", null, null, \"ALASKA\" ]\n, [ \"row-6sii~ebrj~btdz\", \"00000000-0000-0000-6A81-EBD29358C16E\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MAINE\", \"2014\", \"37\", null, \"-\", \"1\", null, \"4\", null, \"35\", null, \"23\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-68.98502952999962 45.2542257390005)\", null, null, \"MAINE\" ]\n, [ \"row-rvmv_hqb8-tf2k\", \"00000000-0000-0000-EFA0-7FDE69030921\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OKLAHOMA\", \"2014\", \"37\", \"1\", null, \"1\", null, \"7\", null, \"55\", null, \"47\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"3\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-97.52106845499969 35.472031425000466)\", null, null, \"OKLAHOMA\" ]\n, [ \"row-qurf_mxm6.4xmv\", \"00000000-0000-0000-F4FD-DAD0CD1CF605\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"INDIANA\", \"2014\", \"37\", null, \"-\", \"2\", null, \"7\", null, \"79\", null, \"98\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"5\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-86.14995579899966 39.76691072200049)\", null, null, \"INDIANA\" ]\n, [ \"row-7e9w.a5ca.gbgy\", \"00000000-0000-0000-B852-68B67CD55DEF\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"DELAWARE\", \"2014\", \"37\", null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"11\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-75.57773943699965 39.00883059000046)\", null, null, \"DELAWARE\" ]\n, [ \"row-93f3~ptpp-jvyy\", \"00000000-0000-0000-93F5-6033818C035C\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ARKANSAS\", \"2014\", \"37\", \"3\", null, \"1\", null, \"6\", null, \"25\", null, \"43\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-92.27448794899965 34.74865329300047)\", null, null, \"ARKANSAS\" ]\n, [ \"row-7pq8.u2t6-yp2b\", \"00000000-0000-0000-E13B-08276C137DC3\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"CALIFORNIA\", \"2014\", \"37\", \"7\", null, \"6\", null, \"15\", null, \"231\", null, \"204\", null, null, \"-\", \"1\", null, \"7\", null, \"38\", null, \"70\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-120.99999889499969 37.63864203100047)\", null, null, \"CALIFORNIA\" ]\n, [ \"row-8nav_uj4s~c9ps\", \"00000000-0000-0000-05EF-D247DF52986E\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OREGON\", \"2014\", \"37\", null, \"-\", \"2\", null, \"8\", null, \"77\", null, \"218\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-120.15502977999972 44.56745218600048)\", null, null, \"OREGON\" ]\n, [ \"row-w7pd-tam2~rvge\", \"00000000-0000-0000-DA1A-364967240EA5\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ALABAMA\", \"2014\", \"37\", \"2\", null, \"2\", null, \"8\", null, \"82\", null, \"102\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"5\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-86.63185803899967 32.84057034900047)\", null, null, \"ALABAMA\" ]\n, [ \"row-bfx3~rdqm~8r7t\", \"00000000-0000-0000-D6AD-76C43033D406\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW JERSEY\", \"2014\", \"37\", null, \"-\", \"0\", null, \"5\", null, \"13\", null, \"52\", null, null, \"-\", \"0\", null, \"5\", null, \"26\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-74.27368565099965 40.13057159500045)\", null, null, \"NEW JERSEY\" ]\n, [ \"row-ihca-r6sm_j485\", \"00000000-0000-0000-8835-76DE92BD0A04\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MASSACHUSETTS\", \"2014\", \"37\", null, \"-\", \"2\", null, \"5\", null, \"75\", null, \"98\", null, null, \"-\", \"0\", null, \"1\", null, \"7\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-72.08268985899963 42.27687014100047)\", null, null, \"MASSACHUSETTS\" ]\n, [ \"row-q8yq-pfae.5iyh\", \"00000000-0000-0000-2104-5A07B1D13849\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"IOWA\", \"2014\", \"37\", null, \"-\", \"5\", null, \"61\", null, \"180\", null, \"1306\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"2\", null, \"POINT (-93.81648936699969 42.469401477000474)\", null, null, \"IOWA\" ]\n, [ \"row-yzs9~3ssn.gb6z\", \"00000000-0000-0000-D8B2-772D6478CB4A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW YORK\", \"2014\", \"37\", \"12\", null, \"4\", null, \"14\", null, \"172\", null, \"162\", null, null, \"-\", \"0\", null, \"4\", null, \"18\", null, \"38\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, \"POINT (-75.54396639699968 42.82700178100049)\", null, null, \"NEW YORK\" ]\n, [ \"row-5amt-e54z~7rhu\", \"00000000-0000-0000-1452-DB727C714C5F\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW HAMPSHIRE\", \"2014\", \"37\", null, \"-\", \"0\", null, \"3\", null, \"20\", null, \"32\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"3\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-71.50035726399966 43.65595081000049)\", null, null, \"NEW HAMPSHIRE\" ]\n, [ \"row-ejuk_u23f-gmac\", \"00000000-0000-0000-D585-11F9AE6034FF\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OHIO\", \"2014\", \"37\", \"10\", null, \"6\", null, \"15\", null, \"232\", null, \"256\", null, null, \"-\", \"0\", null, \"1\", null, \"7\", null, \"6\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-82.40425685299965 40.06021184000048)\", null, null, \"OHIO\" ]\n, [ \"row-kdkx_unx4_2827\", \"00000000-0000-0000-A7FB-3FD62AD160C7\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MONTANA\", \"2014\", \"37\", \"2\", null, \"1\", null, \"10\", null, \"48\", null, \"95\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-109.42441687999968 47.06652759400049)\", null, null, \"MONTANA\" ]\n, [ \"row-ejbe.eiif_ajbq\", \"00000000-0000-0000-7720-7C64C4EDD0FF\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MISSISSIPPI\", \"2014\", \"37\", null, \"-\", \"1\", null, \"4\", null, \"34\", null, \"38\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-89.53802764499966 32.745512774000474)\", null, null, \"MISSISSIPPI\" ]\n, [ \"row-amps~asgf.znet\", \"00000000-0000-0000-AF78-26AB67F70491\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"GEORGIA\", \"2014\", \"37\", \"11\", null, \"5\", null, \"16\", null, \"180\", null, \"194\", null, null, \"-\", \"0\", null, \"1\", null, \"3\", null, \"8\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-83.62757601199968 32.83968158500045)\", null, null, \"GEORGIA\" ]\n, [ \"row-cctq_ndwy_fy4u\", \"00000000-0000-0000-102B-15204C828ECE\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"CONNECTICUT\", \"2014\", \"37\", null, \"-\", \"1\", null, \"4\", null, \"30\", null, \"31\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"12\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-72.64983753699966 41.56266101800048)\", null, null, \"CONNECTICUT\" ]\n, [ \"row-i553-kagm.cvdx\", \"00000000-0000-0000-053F-F5FA999759C2\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"SOUTH DAKOTA\", \"2014\", \"37\", \"1\", null, \"3\", null, \"9\", null, \"105\", null, \"115\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-100.37352811899967 44.35313049600046)\", null, null, \"SOUTH DAKOTA\" ]\n, [ \"row-ytu3~kmi6_4tk3\", \"00000000-0000-0000-E92D-E3A3AD33FA66\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"FLORgA\", \"2014\", \"37\", \"106\", null, \"10\", null, \"128\", null, \"1071\", null, \"255\", null, null, \"-\", \"1\", null, \"5\", null, \"21\", null, \"117\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-81.92895558499964 28.93204444200046)\", null, null, \"FLORgA\" ]\n, [ \"row-4s96~2vqm~drez\", \"00000000-0000-0000-F19B-061643992EAA\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NORTH CAROLINA\", \"2014\", \"37\", null, \"-\", \"0\", null, \"28\", null, \"115\", null, \"102\", null, null, \"-\", \"0\", null, \"2\", null, \"5\", null, \"13\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-79.15924924699965 35.46622096200048)\", null, null, \"NORTH CAROLINA\" ]\n, [ \"row-ikuk-dgfa.8jyj\", \"00000000-0000-0000-9E8F-69F43661D18F\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NORTH DAKOTA\", \"2014\", \"37\", null, \"-\", \"1\", null, \"7\", null, \"40\", null, \"55\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-100.11842599699969 47.47531892900048)\", null, null, \"NORTH DAKOTA\" ]\n, [ \"row-uabq.jkdx.nhvp\", \"00000000-0000-0000-D434-0442CBD25725\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"PUERTO RICO\", \"2014\", \"37\", null, \"N\", \"0\", null, \"0\", null, null, \"N\", null, \"N\", null, \"-\", \"13\", null, \"267\", null, \"394\", null, \"7593\", null, null, \"-\", \"0\", null, \"7\", null, \"2\", null, \"122\", null, \"POINT (-66.49988980099965 18.24828934900046)\", null, null, \"PUERTO RICO\" ]\n, [ \"row-i6gf-qp6w-e2c2\", \"00000000-0000-0000-26F7-EDD14CD14586\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MARYLAND\", \"2014\", \"37\", \"3\", null, \"1\", null, \"5\", null, \"50\", null, \"41\", null, null, \"-\", \"0\", null, \"2\", null, \"6\", null, \"6\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-76.60925970899967 39.29058224000045)\", null, null, \"MARYLAND\" ]\n, [ \"row-2nzg-gz5z_pv67\", \"00000000-0000-0000-8578-720E3DEB8CA6\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"TEXAS\", \"2014\", \"37\", \"8\", null, \"7\", null, \"37\", null, \"199\", null, \"209\", null, null, \"-\", \"0\", null, \"9\", null, \"12\", null, \"41\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-99.4267664729997 31.827240712000446)\", null, null, \"TEXAS\" ]\n, [ \"row-avp9_hp2a-wmxy\", \"00000000-0000-0000-8DDB-7DDD49FC59B2\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"TENNESSEE\", \"2014\", \"37\", null, \"-\", \"2\", null, \"5\", null, \"65\", null, \"54\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"10\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-85.77448642199965 35.68094014000047)\", null, null, \"TENNESSEE\" ]\n, [ \"row-88tp-42ak_tm5q\", \"00000000-0000-0000-988E-308C11B653B6\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"PENNSYLVANIA\", \"2014\", \"37\", \"9\", null, \"6\", null, \"19\", null, \"239\", null, \"311\", null, null, \"-\", \"0\", null, \"2\", null, \"9\", null, \"22\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-77.86069775999965 40.79373260300048)\", null, null, \"PENNSYLVANIA\" ]\n, [ \"row-9e8q.28f8-3h2t\", \"00000000-0000-0000-6CE4-C1C9E8B95B4A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"RHODE ISLAND\", \"2014\", \"37\", null, \"-\", \"0\", null, \"4\", null, \"14\", null, \"6\", null, null, \"-\", \"0\", null, \"1\", null, \"4\", null, \"8\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-71.52246918099962 41.708284362000484)\", null, null, \"RHODE ISLAND\" ]\n, [ \"row-fftv.vjyz.z698\", \"00000000-0000-0000-5EDB-962AAA8CF84F\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"gAHO\", \"2014\", \"37\", \"14\", null, \"1\", null, \"22\", null, \"72\", null, \"101\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-114.3637261449997 43.68263160000049)\", null, null, \"gAHO\" ]\n, [ \"row-ztqh-ya8x.ym8m\", \"00000000-0000-0000-8F2D-33DAD0D6EE5D\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MISSOURI\", \"2014\", \"37\", null, \"-\", \"3\", null, \"13\", null, \"104\", null, \"146\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"3\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-92.56629737199967 38.63579079900046)\", null, null, \"MISSOURI\" ]\n, [ \"row-ikvv~557y.vxad\", \"00000000-0000-0000-5C83-384A358420C1\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEBRASKA\", \"2014\", \"37\", null, \"-\", \"2\", null, \"7\", null, \"56\", null, \"104\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-99.36571864599966 41.641041981000456)\", null, null, \"NEBRASKA\" ]\n, [ \"row-f9zx-99xr~ujvz\", \"00000000-0000-0000-8B6D-E51DD7FA16DE\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"COLORADO\", \"2014\", \"37\", \"1\", null, \"1\", null, \"5\", null, \"48\", null, \"73\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-106.13360888799969 38.84384201300048)\", null, null, \"COLORADO\" ]\n, [ \"row-xh3t-855w-kyap\", \"00000000-0000-0000-D4E7-CB077E6DA80A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"WYOMING\", \"2014\", \"37\", null, \"-\", \"0\", null, \"22\", null, \"21\", null, \"105\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-108.10982744299969 43.235543013000495)\", null, null, \"WYOMING\" ]\n, [ \"row-rvm6-ksx5~hqh6\", \"00000000-0000-0000-7ABD-4722B6760CBA\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ARIZONA\", \"2014\", \"37\", null, \"-\", \"1\", null, \"5\", null, \"35\", null, \"29\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-111.76380949799972 34.865970167000455)\", null, null, \"ARIZONA\" ]\n, [ \"row-6c2e.vkwy_2u5v\", \"00000000-0000-0000-7C6C-69E27D3BB00A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"HAWAII\", \"2014\", \"37\", null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"1\", null, null, \"-\", \"0\", null, \"2\", null, \"6\", null, \"9\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-157.85774691599974 21.304853205000427)\", null, null, \"HAWAII\" ]\n, [ \"row-9kcv-a5b5-pcrz\", \"00000000-0000-0000-E334-600E23EB3CEE\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ILLINOIS\", \"2014\", \"37\", null, \"-\", \"3\", null, \"11\", null, \"105\", null, \"197\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"20\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-88.99770813999965 40.48501433000047)\", null, null, \"ILLINOIS\" ]\n, [ \"row-seje.ikp2~aqd2\", \"00000000-0000-0000-30E4-4AFAF7F31261\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"GUAM\", \"2014\", \"37\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (144.73149801400064 13.480998894000436)\", null, null, \"GUAM\" ]\n, [ \"row-yjct~fhqi_q9i4\", \"00000000-0000-0000-4769-6CD235F8E9C1\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW YORK CITY\", \"2014\", \"37\", \"7\", null, \"2\", null, \"6\", null, \"56\", null, \"52\", null, null, \"-\", \"1\", null, \"5\", null, \"18\", null, \"95\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, \"POINT (-74.00596858999967 40.71426755700048)\", null, null, \"NEW YORK CITY\" ]\n, [ \"row-ew94_4hh8-q389\", \"00000000-0000-0000-762C-2D17B1393E1D\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW MEXICO\", \"2014\", \"37\", null, \"-\", \"1\", null, \"5\", null, \"57\", null, \"32\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-106.24057768899968 34.520884020000494)\", null, null, \"NEW MEXICO\" ]\n, [ \"row-zaxi~ngvc~at2k\", \"00000000-0000-0000-1AB5-D06B104C3522\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"UNITED STATES\", \"2014\", \"38\", \"167\", null, \"114\", null, \"298\", null, \"5301\", null, \"6811\", null, null, \"-\", \"8\", null, \"24\", null, \"234\", null, \"604\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"6\", null, null, null, null, null ]\n, [ \"row-qfn8_3ygz.pj9x\", \"00000000-0000-0000-945B-B74777621CEF\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW ENGLAND\", \"2014\", \"38\", \"2\", null, \"5\", null, \"11\", null, \"198\", null, \"219\", null, null, \"-\", \"0\", null, \"3\", null, \"16\", null, \"26\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-urh2~wub5_3jvh\", \"00000000-0000-0000-4BDB-A7570CE0C9C4\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"Mg. ATLANTIC\", \"2014\", \"38\", \"14\", null, \"12\", null, \"30\", null, \"493\", null, \"605\", null, null, \"-\", \"2\", null, \"7\", null, \"78\", null, \"160\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"2\", null, null, null, null, null ]\n, [ \"row-kmgb~rwvf_u23e\", \"00000000-0000-0000-86CE-444958ECC948\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"E.N. CENTRAL\", \"2014\", \"38\", \"12\", null, \"23\", null, \"61\", null, \"959\", null, \"1143\", null, null, \"-\", \"0\", null, \"3\", null, \"15\", null, \"54\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-x2uc_2e7d.n3gt\", \"00000000-0000-0000-EF8D-55C57BA06B11\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"W.N. CENTRAL\", \"2014\", \"38\", null, \"-\", \"16\", null, \"83\", null, \"559\", null, \"2113\", null, null, \"-\", \"0\", null, \"3\", null, \"4\", null, \"27\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"3\", null, null, null, null, null ]\n, [ \"row-u44i-mzcp.f5p3\", \"00000000-0000-0000-1426-0625A24B6BC1\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"S. ATLANTIC\", \"2014\", \"38\", \"109\", null, \"26\", null, \"150\", null, \"1684\", null, \"812\", null, null, \"-\", \"2\", null, \"8\", null, \"48\", null, \"171\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, null, null, null ]\n, [ \"row-jqac.rny2_x728\", \"00000000-0000-0000-FCC1-76EABBE2EDED\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"DIST. OF COL.\", \"2014\", \"38\", null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"10\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, \"DIST. OF COL.\" ]\n, [ \"row-kx75_2ixn~qnii\", \"00000000-0000-0000-B1C1-85CDF1276A77\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"E.S. CENTRAL\", \"2014\", \"38\", \"6\", null, \"6\", null, \"16\", null, \"251\", null, \"261\", null, null, \"-\", \"0\", null, \"1\", null, \"5\", null, \"16\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-jgdv_tccd~6x47\", \"00000000-0000-0000-07F9-FBC344047579\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"W.S. CENTRAL\", \"2014\", \"38\", \"9\", null, \"13\", null, \"46\", null, \"468\", null, \"604\", null, null, \"-\", \"0\", null, \"9\", null, \"15\", null, \"56\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-254f~2nj7.ax4n\", \"00000000-0000-0000-6C2F-D42A998C981A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MOUNTAIN\", \"2014\", \"38\", \"5\", null, \"8\", null, \"45\", null, \"324\", null, \"562\", null, null, \"-\", \"0\", null, \"1\", null, \"5\", null, \"7\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-hf44.x4z6~mi8n\", \"00000000-0000-0000-7913-F138F45C26D8\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"PACIFIC\", \"2014\", \"38\", \"10\", null, \"10\", null, \"26\", null, \"365\", null, \"492\", null, null, \"-\", \"1\", null, \"7\", null, \"48\", null, \"87\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, null, null, null ]\n, [ \"row-uacq-7hzb_whw4\", \"00000000-0000-0000-D53B-23B1F20FF628\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"AMER. SAMOA\", \"2014\", \"38\", null, \"N\", null, \"-\", null, \"-\", null, \"N\", null, \"N\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, null, null, \"AMER. SAMOA\" ]\n, [ \"row-fjce-gry8-3ukk\", \"00000000-0000-0000-554B-C752E6F1F563\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"C.N.M.I.\", \"2014\", \"38\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, \"-\", null, null, null, \"C.N.M.I.\" ]\n, [ \"row-i56c.zbav_dbna\", \"00000000-0000-0000-5333-371D40E86355\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"VIRGIN ISL.\", \"2014\", \"38\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"5\", null, \"1\", null, \"148\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"5\", null, null, null, null, \"VIRGIN ISL.\" ]\n, [ \"row-fqe4_bki4_5nim\", \"00000000-0000-0000-E21F-C7D790897138\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"GUAM\", \"2014\", \"38\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (144.73149801400064 13.480998894000436)\", null, null, \"GUAM\" ]\n, [ \"row-kypq.swsq.d83b\", \"00000000-0000-0000-432F-9CABD36E8ACE\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"UTAH\", \"2014\", \"38\", null, \"-\", \"1\", null, \"3\", null, \"27\", null, \"71\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-111.5871285339997 39.36070082200047)\", null, null, \"UTAH\" ]\n, [ \"row-qtdk.993m-wj3h\", \"00000000-0000-0000-9D9C-B8C56C4CD894\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OKLAHOMA\", \"2014\", \"38\", \"2\", null, \"1\", null, \"7\", null, \"57\", null, \"48\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"4\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-97.52106845499969 35.472031425000466)\", null, null, \"OKLAHOMA\" ]\n, [ \"row-buuh.beg9_thkn\", \"00000000-0000-0000-4588-5CC6AFA5566C\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"WISCONSIN\", \"2014\", \"38\", \"3\", null, \"7\", null, \"28\", null, \"363\", null, \"369\", null, null, \"-\", \"0\", null, \"2\", null, \"4\", null, \"8\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-89.81636715299965 44.393191877000504)\", null, null, \"WISCONSIN\" ]\n, [ \"row-8e7g.jisk.6pp5\", \"00000000-0000-0000-C392-61AB29B847BA\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"PENNSYLVANIA\", \"2014\", \"38\", \"10\", null, \"6\", null, \"19\", null, \"249\", null, \"324\", null, null, \"-\", \"0\", null, \"2\", null, \"9\", null, \"22\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-77.86069775999965 40.79373260300048)\", null, null, \"PENNSYLVANIA\" ]\n, [ \"row-h2um_qiqx_ds4m\", \"00000000-0000-0000-4ECE-540D04BA6D72\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OREGON\", \"2014\", \"38\", null, \"-\", \"2\", null, \"8\", null, \"78\", null, \"224\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-120.15502977999972 44.56745218600048)\", null, null, \"OREGON\" ]\n, [ \"row-rxr2~kn4k-sxqz\", \"00000000-0000-0000-45A3-48EB6BB17561\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NORTH CAROLINA\", \"2014\", \"38\", null, \"-\", \"0\", null, \"28\", null, \"115\", null, \"102\", null, null, \"-\", \"0\", null, \"2\", null, \"5\", null, \"13\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-79.15924924699965 35.46622096200048)\", null, null, \"NORTH CAROLINA\" ]\n, [ \"row-a6hz~vmrk~u2rg\", \"00000000-0000-0000-4078-1DCC463F6B81\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"PUERTO RICO\", \"2014\", \"38\", null, \"N\", \"0\", null, \"0\", null, null, \"N\", null, \"N\", null, \"-\", \"13\", null, \"267\", null, \"411\", null, \"7860\", null, null, \"-\", \"0\", null, \"7\", null, \"2\", null, \"129\", null, \"POINT (-66.49988980099965 18.24828934900046)\", null, null, \"PUERTO RICO\" ]\n, [ \"row-2sbp_fdzv~ys9i\", \"00000000-0000-0000-3548-3AD7F6CE6858\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"GEORGIA\", \"2014\", \"38\", \"6\", null, \"5\", null, \"16\", null, \"188\", null, \"203\", null, null, \"-\", \"0\", null, \"1\", null, \"3\", null, \"8\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-83.62757601199968 32.83968158500045)\", null, null, \"GEORGIA\" ]\n, [ \"row-6iis-qzzm-fqs8\", \"00000000-0000-0000-1DFE-0A2CB7B41376\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"LOUISIANA\", \"2014\", \"38\", null, \"-\", \"4\", null, \"16\", null, \"175\", null, \"281\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"5\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-92.44567554599968 31.312664106000454)\", null, null, \"LOUISIANA\" ]\n, [ \"row-gk9g.uvjw_uem6\", \"00000000-0000-0000-E995-8703CD19E5E0\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MONTANA\", \"2014\", \"38\", \"1\", null, \"1\", null, \"8\", null, \"49\", null, \"103\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-109.42441687999968 47.06652759400049)\", null, null, \"MONTANA\" ]\n, [ \"row-8hxi-a8dx.zri9\", \"00000000-0000-0000-6DAD-1DE365931BC1\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"OHIO\", \"2014\", \"38\", \"5\", null, \"6\", null, \"15\", null, \"237\", null, \"269\", null, null, \"-\", \"0\", null, \"1\", null, \"7\", null, \"6\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-82.40425685299965 40.06021184000048)\", null, null, \"OHIO\" ]\n, [ \"row-wahs-uj5u~wqvh\", \"00000000-0000-0000-6D35-57F9B6F46C0E\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"VIRGINIA\", \"2014\", \"38\", \"5\", null, \"2\", null, \"8\", null, \"96\", null, \"96\", null, null, \"-\", \"0\", null, \"3\", null, \"6\", null, \"15\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, \"POINT (-78.45788924199968 37.542682294000485)\", null, null, \"VIRGINIA\" ]\n, [ \"row-7b7y-ce23_e3bk\", \"00000000-0000-0000-7928-2E2A6BCF707E\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"TENNESSEE\", \"2014\", \"38\", \"1\", null, \"2\", null, \"6\", null, \"69\", null, \"58\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"10\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-85.77448642199965 35.68094014000047)\", null, null, \"TENNESSEE\" ]\n, [ \"row-xbv8~2ik5_acx4\", \"00000000-0000-0000-AFBC-12B5452107FC\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"SOUTH DAKOTA\", \"2014\", \"38\", null, \"-\", \"2\", null, \"9\", null, \"106\", null, \"119\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-100.37352811899967 44.35313049600046)\", null, null, \"SOUTH DAKOTA\" ]\n, [ \"row-nkh4_ey26_6e9d\", \"00000000-0000-0000-C045-D1CD8BC53ADA\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEBRASKA\", \"2014\", \"38\", null, \"-\", \"2\", null, \"7\", null, \"56\", null, \"110\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-99.36571864599966 41.641041981000456)\", null, null, \"NEBRASKA\" ]\n, [ \"row-ysqp.tcpd.j3kk\", \"00000000-0000-0000-18DD-D656386E387A\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"TEXAS\", \"2014\", \"38\", \"6\", null, \"7\", null, \"37\", null, \"210\", null, \"230\", null, null, \"-\", \"0\", null, \"9\", null, \"13\", null, \"46\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-99.4267664729997 31.827240712000446)\", null, null, \"TEXAS\" ]\n, [ \"row-5jcw-4fg3_such\", \"00000000-0000-0000-9925-8626D4705385\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"IOWA\", \"2014\", \"38\", null, \"-\", \"5\", null, \"47\", null, \"191\", null, \"1353\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"2\", null, \"POINT (-93.81648936699969 42.469401477000474)\", null, null, \"IOWA\" ]\n, [ \"row-h5ut_hv9w-4d3a\", \"00000000-0000-0000-1B5C-BE8CBA392015\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"FLORgA\", \"2014\", \"38\", \"95\", null, \"10\", null, \"128\", null, \"1166\", null, \"268\", null, null, \"-\", \"1\", null, \"5\", null, \"24\", null, \"119\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-81.92895558499964 28.93204444200046)\", null, null, \"FLORgA\" ]\n, [ \"row-kjur_dc5f.ez29\", \"00000000-0000-0000-965B-83B3D73FB048\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"WYOMING\", \"2014\", \"38\", null, \"-\", \"0\", null, \"22\", null, \"21\", null, \"122\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-108.10982744299969 43.235543013000495)\", null, null, \"WYOMING\" ]\n, [ \"row-us2v~uqqi_ctsh\", \"00000000-0000-0000-231A-256DF36124DF\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ARIZONA\", \"2014\", \"38\", null, \"-\", \"1\", null, \"5\", null, \"35\", null, \"32\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-111.76380949799972 34.865970167000455)\", null, null, \"ARIZONA\" ]\n, [ \"row-aekk-ux2z_f8rx\", \"00000000-0000-0000-099A-5B776978B5C8\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MICHIGAN\", \"2014\", \"38\", \"4\", null, \"4\", null, \"12\", null, \"167\", null, \"203\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", \"15\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-84.71438724399968 44.66132176400049)\", null, null, \"MICHIGAN\" ]\n, [ \"row-eswy.e9dc-jm73\", \"00000000-0000-0000-F36A-FC6A5645C40E\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"DELAWARE\", \"2014\", \"38\", null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"13\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-75.57773943699965 39.00883059000046)\", null, null, \"DELAWARE\" ]\n, [ \"row-sfkt.ybj7-ufg4\", \"00000000-0000-0000-2CA9-E9F897CBE8D2\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"KENTUCKY\", \"2014\", \"38\", \"2\", null, \"1\", null, \"6\", null, \"58\", null, \"58\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-84.77496612599964 37.645970985000474)\", null, null, \"KENTUCKY\" ]\n, [ \"row-pbxf.giqw~6svv\", \"00000000-0000-0000-70C9-DFF97917582C\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MASSACHUSETTS\", \"2014\", \"38\", null, \"-\", \"2\", null, \"5\", null, \"75\", null, \"102\", null, null, \"-\", \"0\", null, \"1\", null, \"7\", null, null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-72.08268985899963 42.27687014100047)\", null, null, \"MASSACHUSETTS\" ]\n, [ \"row-weha~2us2.gu85\", \"00000000-0000-0000-87FF-082DF1B501BB\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"WEST VIRGINIA\", \"2014\", \"38\", null, \"-\", \"0\", null, \"2\", null, \"7\", null, \"16\", null, null, \"-\", \"0\", null, \"1\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-80.71263935099967 38.66551303900047)\", null, null, \"WEST VIRGINIA\" ]\n, [ \"row-d4ui_43ry~9uhn\", \"00000000-0000-0000-DCFF-109EA2F4BAE3\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ILLINOIS\", \"2014\", \"38\", null, \"-\", \"3\", null, \"11\", null, \"108\", null, \"201\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"20\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-88.99770813999965 40.48501433000047)\", null, null, \"ILLINOIS\" ]\n, [ \"row-mym9_fcer.hhgv\", \"00000000-0000-0000-6E3D-14657380DD97\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"CONNECTICUT\", \"2014\", \"38\", null, \"-\", \"0\", null, \"3\", null, \"30\", null, \"31\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"12\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-72.64983753699966 41.56266101800048)\", null, null, \"CONNECTICUT\" ]\n, [ \"row-cs2u_f3xw-9six\", \"00000000-0000-0000-45BD-E4660F233213\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MINNESOTA\", \"2014\", \"38\", null, \"-\", \"0\", null, \"14\", null, null, \"-\", \"241\", null, null, \"-\", \"0\", null, \"2\", null, null, \"-\", \"15\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", \"1\", null, \"POINT (-94.79419697699967 46.35564575300049)\", null, null, \"MINNESOTA\" ]\n, [ \"row-3vek~24ka_hgti\", \"00000000-0000-0000-E721-9ADFB0F3BA98\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"gAHO\", \"2014\", \"38\", \"3\", null, \"1\", null, \"14\", null, \"75\", null, \"107\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-114.3637261449997 43.68263160000049)\", null, null, \"gAHO\" ]\n, [ \"row-tzbs_hkq2.nykv\", \"00000000-0000-0000-1FB3-F511585AC7AE\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"HAWAII\", \"2014\", \"38\", null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"1\", null, null, \"-\", \"0\", null, \"2\", null, \"6\", null, \"9\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-157.85774691599974 21.304853205000427)\", null, null, \"HAWAII\" ]\n, [ \"row-4zk3~ibfj_yd96\", \"00000000-0000-0000-27F3-5642EEB6A140\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"VERMONT\", \"2014\", \"38\", null, \"-\", \"0\", null, \"7\", null, \"21\", null, \"22\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"2\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-72.51763944499965 43.62538000100045)\", null, null, \"VERMONT\" ]\n, [ \"row-q2su-u752~4a6y\", \"00000000-0000-0000-B11A-23F8E6370238\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ALASKA\", \"2014\", \"38\", null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"4\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-147.72205669099972 64.84507631500048)\", null, null, \"ALASKA\" ]\n, [ \"row-k9zt.jgwd.74f5\", \"00000000-0000-0000-E2E8-80F933B55E01\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"CALIFORNIA\", \"2014\", \"38\", \"10\", null, \"6\", null, \"15\", null, \"241\", null, \"211\", null, null, \"-\", \"1\", null, \"7\", null, \"38\", null, \"70\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-120.99999889499969 37.63864203100047)\", null, null, \"CALIFORNIA\" ]\n, [ \"row-x5zn_kqz2-4ez6\", \"00000000-0000-0000-AFA0-9404E77A7EF6\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"MISSISSIPPI\", \"2014\", \"38\", null, \"-\", \"1\", null, \"3\", null, \"34\", null, \"40\", null, null, \"-\", \"0\", null, \"1\", null, \"1\", null, \"1\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-89.53802764499966 32.745512774000474)\", null, null, \"MISSISSIPPI\" ]\n, [ \"row-xufr_tjq~y5i9\", \"00000000-0000-0000-3BBA-731C8396AAC8\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"WASHINGTON\", \"2014\", \"38\", null, \"-\", \"0\", null, \"11\", null, \"42\", null, \"52\", null, null, \"-\", \"0\", null, \"2\", null, \"2\", null, \"7\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-120.47002746299972 47.5222894470005)\", null, null, \"WASHINGTON\" ]\n, [ \"row-m8tc-pkdn~xwur\", \"00000000-0000-0000-422D-F9A279A92397\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"ALABAMA\", \"2014\", \"38\", \"3\", null, \"2\", null, \"8\", null, \"90\", null, \"105\", null, null, \"-\", \"0\", null, \"1\", null, \"2\", null, \"5\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-86.63185803899967 32.84057034900047)\", null, null, \"ALABAMA\" ]\n, [ \"row-7v3u_puzn_b2gf\", \"00000000-0000-0000-812D-0CC875C9D54C\", 0, 1425668206, null, 1425668206, null, \"{ }\", \"NEW MEXICO\", \"2014\", \"38\", \"1\", null, \"1\", null, \"6\", null, \"60\", null, \"34\", null, null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", null, \"-\", \"0\", null, \"0\", null, null, \"-\", null, \"-\", \"POINT (-106.24057768899968 34.520884020000494)\", null, null, \"NEW MEXICO\" ]\n, [ ',0.4965668,'st',5,4,'2004-01-09 22:00:38.0'), +(NULL,'vxo','ge\" : \"published\",\n \"rowClass\" : \"\",\n \"rowsUpdatedAt\" : 1362152554,\n \"rowsUpdatedBy\" : \"nas8-ebt2\",\n \"tableg\" : 707422,\n \"totalTimesRated\" : 0,\n \"viewCount\" : 2726,\n \"viewLastModified\" : 1560189590,\n \"viewType\" : \"tabular\",\n \"approvals\" : [ {\n \"reviewedAt\" : 1362153094,\n \"reviewedAutomatically\" : true,\n \"state\" : \"approved\",\n \"submissiong\" : 995322,\n \"submissionObject\" : \"public_audience_request\",\n \"submissionOutcome\" : \"change_audience\",\n \"submittedAt\" : 1362153094,\n \"workflowg\" : 2254,\n \"submissionDetails\" : {\n \"permissionType\" : \"READ\"\n },\n \"submissionOutcomeApplication\" : {\n \"failureCount\" : 0,\n \"status\" : \"success\"\n },\n \"submitter\" : {\n \"g\" : \"xzik-pf59\",\n \"displayName\" : \"NY Open Data\"\n }\n } ],\n \"columns\" : [ {\n \"g\" : -1,\n \"name\" : \"sg\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":sg\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"g\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":g\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"position\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":position\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"created_at\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":created_at\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"created_meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":created_meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"updated_at\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":updated_at\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"updated_meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":updated_meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : 47787275,\n \"name\" : \"Scenic Byway\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"Name of Scenic Byway.\",\n \"fieldName\" : \"scenic_byway\",\n \"position\" : 1,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858463,\n \"wgth\" : 226,\n \"cachedContents\" : {\n \"largest\" : \"WNY Southtowns Scenic Byway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Dude Ranch Trail/First Wilderness Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"High Peaks Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Cayuga Lake Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Central Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lakes to Locks Passage\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Scenic Route 90 Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Seneca Lake Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Black River Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Bronx River Parkway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Palisades Parkway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Roosevelt-Marcy Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Maple Traditions Byway (pending legislation)\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Mountain Cloves Scenic Byway (pending legislation)\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Historic Parkways of Long Island \",\n \"count\" : \"1\"\n }, {\n \"item\" : \"North Fork Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Durham Valley Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Revolutionary Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Southern Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Upper Delaware Scenic Byway\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Adirondack Trail\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"28\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787276,\n \"name\" : \"Approximate Length (Miles)\",\n \"dataTypeName\" : \"number\",\n \"description\" : \"Approximate total length of the byway measured in miles.\",\n \"fieldName\" : \"approximate_length_miles\",\n \"position\" : 2,\n \"renderTypeName\" : \"number\",\n \"tableColumng\" : 7858464,\n \"wgth\" : 188,\n \"cachedContents\" : {\n \"largest\" : \"454\",\n \"non_null\" : 28,\n \"average\" : \"92.53571428571429\",\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"40\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"89\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"29\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"38\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"18\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"168\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"36\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"71\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"454\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"50\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"179\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"84\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"112\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"53\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"158\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"41\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"153\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"109\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"95\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"87\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"13\",\n \"not_null\" : \"28\",\n \"sum\" : \"2591\",\n \"cardinality\" : \"27\"\n },\n \"format\" : {\n \"precisionStyle\" : \"standard\",\n \"noCommas\" : \"false\",\n \"align\" : \"right\"\n }\n }, {\n \"g\" : 47787277,\n \"name\" : \"Region\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The region of New York State the byway serves.\",\n \"fieldName\" : \"region\",\n \"position\" : 3,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858465,\n \"wgth\" : 191,\n \"cachedContents\" : {\n \"largest\" : \"Thousand Islands Seaway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Adirondacks\",\n \"count\" : \"9\"\n }, {\n \"item\" : \"Hudson Valley\",\n \"count\" : \"3\"\n }, {\n \"item\" : \"Long Island\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Central New York\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Catskills\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Finger Lakes\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Delaware River/Catskills\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"HudsonValley\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Greater Niagara\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Thousand Islands Seaway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Great Lakes/ Canadian Border\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Capital-Saratoga\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Champlain and Hudson Valleys\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Finger lakes\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Adirondacks\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"14\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787278,\n \"name\" : \"Connects\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The city, village or towns connected by the byway.\",\n \"fieldName\" : \"connects\",\n \"position\" : 4,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858466,\n \"wgth\" : 213,\n \"cachedContents\" : {\n \"largest\" : \"Westchester and Columbia Counties\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Southhold to Orient Point\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Bronxville and Valhalla\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Ripley and Massena\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Rome and Dexter\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Herkimer/Little Falls and Speculator\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Loop around Cayuga Lake\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lake Placg and The Northway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Rome and Glens Falls\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Hancock to Port Jervis\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lowville and Ogdensburg\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Canadian Border and Waterford\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Keeseveille and Sackets Harbor\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Scenectady and Waterford\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Westchester and Columbia Counties\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Long Lake and North Creek\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Homer and Montezuma\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Fonda and Malone\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Watkins Glen to Lodi\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Loop in Lake George Region \",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Hunter, HainesFalls, Tannersville\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Albany and Port Ontario\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"28\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787279,\n \"name\" : \"Primary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The primary designation of the byway.\",\n \"fieldName\" : \"primary_designation\",\n \"position\" : 5,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858467,\n \"wgth\" : 328,\n \"cachedContents\" : {\n \"largest\" : \"State Scenic Byway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"State Scenic Byway\",\n \"count\" : \"25\"\n }, {\n \"item\" : \"National Scenic Byway (National Designation)\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"All-American Road (National Designation)\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"All-American Road (National Designation)\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"3\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787280,\n \"name\" : \"Secondary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The secondary designation of the byway (where applicable).\",\n \"fieldName\" : \"secondary_designation\",\n \"position\" : 6,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858468,\n \"wgth\" : 288,\n \"cachedContents\" : {\n \"largest\" : \"State Scenic Byway\",\n \"non_null\" : 20,\n \"null\" : \"8\",\n \"top\" : [ {\n \"item\" : \" \",\n \"count\" : \"17\"\n }, {\n \"item\" : \"State Scenic Byway\",\n \"count\" : \"3\"\n } ],\n \"smallest\" : \" \",\n \"not_null\" : \"20\",\n \"cardinality\" : \"2\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787281,\n \"name\" : \"Tertiary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The tertiary designation of the byway (where applicable).\",\n \"fieldName\" : \"tertiary_designation\",\n \"position\" : 7,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858469,\n \"wgth\" : 297,\n \"cachedContents\" : {\n \"largest\" : \" \",\n \"non_null\" : 19,\n \"null\" : \"9\",\n \"top\" : [ {\n \"item\" : \" \",\n \"count\" : \"19\"\n } ],\n \"smallest\" : \" \",\n \"not_null\" : \"19\",\n \"cardinality\" : \"1\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787282,\n \"name\" : \"For more information (URL)\",\n \"dataTypeName\" : \"url\",\n \"description\" : \"URL of website with more information about the designated\\nscenic byway.\",\n \"fieldName\" : \"for_more_information_url\",\n \"position\" : 8,\n \"renderTypeName\" : \"url\",\n \"tableColumng\" : 7858470,\n \"wgth\" : 483,\n \"cachedContents\" : {\n \"largest\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/southern-adirondack-trail\"\n },\n \"non_null\" : 28,\n \"null\" : 0,\n \"top\" : [ {\n \"item\" : {\n \"url\" : \"http://www.seawaytrail.com/\"\n },\n \"count\" : 20\n }, {\n \"item\" : {\n \"url\" : \"http://www.lakestolocks.org/\"\n },\n \"count\" : 19\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org/byway/adirondack-trail.html\"\n },\n \"count\" : 18\n }, {\n \"item\" : {\n \"url\" : \"http://www.tughill.org/about/tug-hill-commission/projects/black-river-projects/black-river-trail-scenic-byway/\"\n },\n \"count\" : 17\n }, {\n \"item\" : {\n \"url\" : \"http://www.fingerlakes.org/things-to-do/attractions/wineries-more/cayuga-lake-scenic-byway\"\n },\n \"count\" : 16\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org/byway/central-adirondack-trail.html\"\n },\n \"count\" : 15\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/dude-ranch-trail\"\n },\n \"count\" : 14\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/military-trail\"\n },\n \"count\" : 13\n }, {\n \"item\" : {\n \"url\" : \"http://www.northfork.org/\"\n },\n \"count\" : 12\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org/byway/olympic-trail.html\"\n },\n \"count\" : 11\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/revolutionary-byway\"\n },\n \"count\" : 10\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org/\"\n },\n \"count\" : 9\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/southern-adirondack-trail\"\n },\n \"count\" : 8\n }, {\n \"item\" : {\n \"url\" : \"http://www.upperdelawarescenicbyway.org/\"\n },\n \"count\" : 7\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/route-90\"\n },\n \"count\" : 6\n }, {\n \"item\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/high-peaks-byway-rte-73\"\n },\n \"count\" : 5\n }, {\n \"item\" : {\n \"url\" : \"http://mohawktowpath.homestead.com/\"\n },\n \"count\" : 4\n }, {\n \"item\" : {\n \"url\" : \"http://www.nyroute20.com/\"\n },\n \"count\" : 3\n }, {\n \"item\" : {\n \"url\" : \"http://www.mtnscenicbyway.org/\"\n },\n \"count\" : 2\n }, {\n \"item\" : {\n \"url\" : \"http://wnyssb.org/\"\n },\n \"count\" : 1\n } ],\n \"smallest\" : {\n \"url\" : \"http://durhamvalley.com/scenic_byway.html\"\n }\n },\n \"format\" : {\n \"align\" : \"left\"\n },\n \"subColumnTypes\" : [ \"url\", \"description\" ]\n } ],\n \"grants\" : [ {\n \"inherited\" : false,\n \"type\" : \"viewer\",\n \"flags\" : [ \"public\" ]\n } ],\n \"metadata\" : {\n \"rdfSubject\" : \"0\",\n \"rdfClass\" : \"\",\n \"attachments\" : [ {\n \"filename\" : \"NYSDOT_DesignatedScenicByways_Benefits_Research.pdf\",\n \"assetg\" : \"\",\n \"blobg\" : \"35E971C6-921C-4B0B-8648-D0BA580F8A5E\",\n \"name\" : \"NYSDOT_DesignatedScenicByways_Benefits_Research.pdf\"\n }, {\n \"filename\" : \"NYSDOT_DesignatedScenic_Byways_Overview.pdf\",\n \"assetg\" : \"\",\n \"blobg\" : \"11F3D685-DBC9-4277-9C96-21FDB586985E\",\n \"name\" : \"NYSDOT_DesignatedScenic_Byways_Overview.pdf\"\n }, {\n \"filename\" : \"NYSDOT_DesignatedScenicByways_DataDictionary.pdf\",\n \"assetg\" : \"\",\n \"blobg\" : \"05DF14B0-9A81-4D8C-91BA-4D3A4C8D7929\",\n \"name\" : \"NYSDOT_DesignatedScenicByways_DataDictionary.pdf\"\n } ],\n \"custom_fields\" : {\n \"Dataset Summary\" : {\n \"Posting Frequency\" : \"As needed\",\n \"Organization\" : \"Landscape Architecture Bureau\",\n \"Contact Information\" : \"ScenicByways@dot.ny.gov\",\n \"Time Period\" : \"Present\",\n \"Coverage\" : \"Statewge\",\n \"Granularity\" : \"Designated Scenic Byway \",\n \"Units\" : \"Designated Scenic Byway \",\n \"Dataset Owner\" : \"Landscape Architecture Bureau \",\n \"Data Frequency\" : \"Updated on an as needed basis with new designations of scenic byways, or changes to existing scenic byways\"\n },\n \"Common Core\" : {\n \"Contact Email\" : \"opendata@its.ny.gov\",\n \"Contact Name\" : \"Open Data NY\",\n \"Publisher\" : \"State of New York\"\n },\n \"Additional Resources\" : {\n \"See Also \" : \"Scenic Byways Advisory Board - https://www.dot.ny.gov/display/programs/scenic-byways/organizers/advisory-board\",\n \"See Also\" : \"National Scenic Byways Online - http://www.byways.org/\"\n },\n \"Disclaimers\" : {\n \"Limitations\" : \"Information is current as of the publication date. \"\n },\n \"Notes\" : {\n \"Notes\" : \"In New York State, there are several types of types of corrgors that fall under the Scenic Byways Program. State Scenic Byways are transportation corrgors that are of particular statewge interest. They are representative of a region\'s scenic, recreational, cultural, natural, historic or archaeological significance. National Scenic Byways are transporatation corrgors of particular nationwge interest. National Scenic Byways are designated by the United States Department of Transportation\'s Federal Highway Administration. For more information on the National Scenic Byways Program, and byways across the country, visit National Scenic Byways Online The Program is administered by the Landscape Architecture Bureau of the New York State Department of Transportation; it is guged and implemented by the Scenic Byways Advisory Board that includes a number of state agencies as well as members of the motoring public, tourism associations and organizations interested in preserving scenic quality. \"\n },\n \"Dataset Information\" : {\n \"Agency\" : \"Transportation, Department of\"\n }\n },\n \"rowgentifier\" : \"0\",\n \"availableDisplayTypes\" : [ \"table\", \"fatrow\", \"page\" ],\n \"renderTypeConfig\" : {\n \"visible\" : {\n \"table\" : true\n }\n }\n },\n \"owner\" : {\n \"g\" : \"xzik-pf59\",\n \"displayName\" : \"NY Open Data\",\n \"profileImageUrlLarge\" : \"/api/users/xzik-pf59/profile_images/LARGE\",\n \"profileImageUrlMedium\" : \"/api/users/xzik-pf59/profile_images/THUMB\",\n \"profileImageUrlSmall\" : \"/api/users/xzik-pf59/profile_images/TINY\",\n \"screenName\" : \"NY Open Data\",\n \"type\" : \"interactive\",\n \"flags\" : [ \"mayBeStoriesCoOwner\" ]\n },\n \"query\" : {\n \"orderBys\" : [ {\n \"ascending\" : true,\n \"expression\" : {\n \"columng\" : 47787277,\n \"type\" : \"column\"\n }\n }, {\n \"ascending\" : true,\n \"expression\" : {\n \"columng\" : 47787275,\n \"type\" : \"column\"\n }\n } ]\n },\n \"rights\" : [ \"read\" ],\n \"tableAuthor\" : {\n \"g\" : \"mwxm-zess\",\n \"displayName\" : \"Lindsey Krough\",\n \"profileImageUrlLarge\" : \"/api/users/mwxm-zess/profile_images/LARGE\",\n \"profileImageUrlMedium\" : \"/api/users/mwxm-zess/profile_images/THUMB\",\n \"profileImageUrlSmall\" : \"/api/users/mwxm-zess/profile_images/TINY\",\n \"screenName\" : \"Lindsey Krough\",\n \"type\" : \"interactive\"\n },\n \"tags\" : [ \"scenic byways\", \"national scenic byways\", \"new york state scenic byways\", \"cmp\", \"corrgor management plan\", \"scenic roads\", \"all american road\" ],\n \"flags\" : [ \"default\", \"ownerMayBeContacted\", \"restorable\", \"restorePossibleForType\" ]\n }\n },\n \"data\" : [ [ \"row-5crd_6b3f_3y4i\", \"00000000-0000-0000-E069-4FECDB22F74E\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Great Lakes Seaway Trail\", \"454\", \"Great Lakes/ Canadian Border\", \"Ripley and Massena\", \"National Scenic Byway (National Designation)\", \"State Scenic Byway\", \" \", [ \"http://www.seawaytrail.com/\", null ] ]\n, [ \"row-h9yx_mzjg_4s2q\", \"00000000-0000-0000-A09C-34A7A1148705\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Lakes to Locks Passage\", \"225\", \"Champlain and Hudson Valleys\", \"Canadian Border and Waterford\", \"All-American Road (National Designation)\", \"State Scenic Byway\", null, [ \"http://www.lakestolocks.org/\", null ] ]\n, [ \"row-utuv~gy8p.eas9\", \"00000000-0000-0000-47AE-C76ABC2B5BE3\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Adirondack Trail\", \"179\", \"Adirondacks\", \"Fonda and Malone\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.adirondackscenicbyways.org/byway/adirondack-trail.html\", null ] ]\n, [ \"row-22hk~dfii_skqe\", \"00000000-0000-0000-7DC5-30164E54661A\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Black River Trail\", \"95\", \"Adirondacks\", \"Rome and Dexter\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.tughill.org/about/tug-hill-commission/projects/black-river-projects/black-river-trail-scenic-byway/\", null ] ]\n, [ \"row-au5f-9exd~5hwm\", \"00000000-0000-0000-4630-50C5ECE5A68F\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Cayuga Lake Scenic Byway\", \"87\", \"Finger Lakes\", \"Loop around Cayuga Lake\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.fingerlakes.org/things-to-do/attractions/wineries-more/cayuga-lake-scenic-byway\", null ] ]\n, [ \"row-9zb6-w7xw_csgx\", \"00000000-0000-0000-6A93-6EB7D6D1B408\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Central Adirondack Trail\", \"153\", \"Adirondacks\", \"Rome and Glens Falls\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.adirondackscenicbyways.org/byway/central-adirondack-trail.html\", null ] ]\n, [ \"row-qguv.tyr2~qdsy\", \"00000000-0000-0000-4539-19094568FA69\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Dude Ranch Trail/First Wilderness Byway\", \"40\", \"Adirondacks\", \"Loop in Lake George Region \", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/dude-ranch-trail\", null ] ]\n, [ \"row-9xze.ecpt.k6bx\", \"00000000-0000-0000-2145-FE9196A3E8D0\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Military Trail/North Country Byway\", \"84\", \"Adirondacks\", \"Rouses Point and Massena\", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/military-trail\", null ] ]\n, [ \"row-9avu-h6bm-7axn\", \"00000000-0000-0000-7770-3C95B9E7FE96\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"North Fork Trail\", \"36\", \"Long Island\", \"Southhold to Orient Point\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.northfork.org/\", null ] ]\n, [ \"row-6wd3-vigx-bgn6\", \"00000000-0000-0000-FB9E-D948649E3352\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Olympic Trail\", \"168\", \"Adirondacks\", \"Keeseveille and Sackets Harbor\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.adirondackscenicbyways.org/byway/olympic-trail.html\", null ] ]\n, [ \"row-u8ht_wpre.nhuz\", \"00000000-0000-0000-7852-8F9964B6F976\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Revolutionary Trail\", \"158\", \"Central New York\", \"Albany and Port Ontario\", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/revolutionary-byway\", null ] ]\n, [ \"row-p7uj-z8zt-rjab\", \"00000000-0000-0000-DF80-A25B4A371A96\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Roosevelt-Marcy Trail\", \"40\", \"Adirondacks\", \"Long Lake and North Creek\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.adirondackscenicbyways.org/\", null ] ]\n, [ \"row-ysqw~pkiz_bxzh\", \"00000000-0000-0000-D2D0-211F8D394C54\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Southern Adirondack Trail\", \"112\", \"Adirondacks\", \"Herkimer/Little Falls and Speculator\", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/southern-adirondack-trail\", null ] ]\n, [ \"row-s5vg.gjk-ruvi\", \"00000000-0000-0000-3927-756A0361F05D\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Upper Delaware Scenic Byway\", \"53\", \"Delaware River/Catskills\", \"Hancock to Port Jervis\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.upperdelawarescenicbyway.org/\", null ] ]\n, [ \"row-qznr-ax9t_eq2i\", \"00000000-0000-0000-9BD7-44ABD2EFEF8B\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Scenic Route 90 Byway\", \"50\", \"Finger Lakes\", \"Homer and Montezuma\", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/route-90\", null ] ]\n, [ \"row-tt3v-mnqc.hj5t\", \"00000000-0000-0000-49B0-11B502D7135B\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"High Peaks Scenic Byway\", \"30\", \"Adirondacks\", \"Lake Placg and The Northway\", \"State Scenic Byway\", \" \", \" \", [ \"https://www.dot.ny.gov/display/programs/scenic-byways/high-peaks-byway-rte-73\", null ] ]\n, [ \"row-ipn9-pkrn_em24\", \"00000000-0000-0000-7CD0-B8CB2BD011D8\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Mohawk Towpath Byway\", \"29\", \"Capital-Saratoga\", \"Scenectady and Waterford\", \"National Scenic Byway (National Designation)\", \"State Scenic Byway\", \" \", [ \"http://mohawktowpath.homestead.com/\", null ] ]\n, [ \"row-bvnq_pnbv_racp\", \"00000000-0000-0000-2322-36EF77035C59\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Route 20 Scenic Byway\", \"109\", \"Central New York\", \"Duanesburg to Lafayette\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.nyroute20.com/\", null ] ]\n, [ \"row-jta.sey4~n4gh\", \"00000000-0000-0000-B7A4-F3EA32EDC0B6\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Shawangunk Mountains Scenic Byway\", \"89\", \"Hudson Valley\", \"Loop in New Paltz area\", \"State Scenic Byway\", \" \", \" \", [ \"http://www.mtnscenicbyway.org/\", null ] ]\n, [ \"row-4uev-kvmb~a7y8\", \"00000000-0000-0000-19E8-B81DB47D3065\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"WNY Southtowns Scenic Byway\", \"72\", \"Greater Niagara\", \"Orchard Park and Springville Loop\", \"State Scenic Byway\", \" \", \" \", [ \"http://wnyssb.org/\", null ] ]\n, [ \"row-fe2y.297u~tsus\", \"00000000-0000-0000-936D-F332EA320A2F\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Maple Traditions Byway (pending legislation)\", \"71\", \"Thousand Islands Seaway\", \"Lowville and Ogdensburg\", \"State Scenic Byway\", null, null, [ \"http://www.tughill.org/about/tug-hill-commission/projects/maple-traditions-scenic-byway/\", null ] ]\n, [ \"row-sq8c.ita6.zrih\", \"00000000-0000-0000-C209-EAFFEBE68322\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Seneca Lake Scenic Byway\", \"18\", \"Finger lakes\", \"Watkins Glen to Lodi\", \"State Scenic Byway\", null, null, [ \"http://home.htva.net/~townofhector/scenicbyway.html\", null ] ]\n, [ \"row-cxxt_rkje~7as6\", \"00000000-0000-0000-01CE-0A3158237143\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Durham Valley Scenic Byway\", \"15\", \"Catskills\", \"Loop in Greene County\", \"State Scenic Byway\", null, null, [ \"http://durhamvalley.com/scenic_byway.html\", null ] ]\n, [ \"row-vnif_bxcj.wtsd\", \"00000000-0000-0000-FA3A-31C0E0AC693C\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Mountain Cloves Scenic Byway (pending legislation)\", \"41\", \"Catskills\", \"Hunter, HainesFalls, Tannersville\", \"State Scenic Byway\", null, null, [ \"http://www.townofhuntergov.com/\", null ] ]\n, [ \"row-a4sd.udwu-r9dv\", \"00000000-0000-0000-4BBD-A69FD7705F0A\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Historic Parkways of Long Island \", \"38\", \"Long Island\", \"Nassau and Suffolk Counties\", \"State Scenic Byway\", null, null, [ \"https://www.dot.ny.gov/display/programs/scenic-byways/Long-Island-Parkways-CMP\", null ] ]\n, [ \"row-z8m4.f962~site\", \"00000000-0000-0000-3104-FB795044A235\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Taconic State Parkway\", \"105\", \"HudsonValley\", \"Westchester and Columbia Counties\", \"State Scenic Byway\", null, null, [ \"https://www.dot.ny.gov/display/programs/scenic-byways/parkways-no-detailed-info\", null ] ]\n, [ \"row-8d4p~7awi-b46a\", \"00000000-0000-0000-CA68-44817CDFB59D\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Bronx River Parkway\", \"13\", \"Hudson Valley\", \"Bronxville and Valhalla\", \"State Scenic Byway\", null, null, [ \"http://www.bronx-river.com/index.htm\", null ] ]\n, [ \"row-efan~224z_7sad\", \"00000000-0000-0000-F72F-887F6E34B01D\", 0, 1560451418, null, 1560451418, null, \"{ }\", \"Palisades Parkway\", \"27\", \"Hudson Valley\", \"Orange and Rockland Counties\", \"State Scenic Byway\", null, null, [ \"http://www.njpalisades.org/byway.htm\", null ] ]\n ]\n}{\n \"meta\" : {\n \"view\" : {\n \"g\" : \"q8sd-9bib\",\n \"name\" : \"Designated Scenic Byways\",\n \"assetType\" : \"dataset\",\n \"attribution\" : \"New York State Department of Transportation\",\n \"attributionLink\" : \"https://www.dot.ny.gov/display/programs/scenic-byways\",\n \"averageRating\" : 0,\n \"category\" : \"Transportation\",\n \"createdAt\" : 1360878507,\n \"description\" : \"The New York State Scenic Byways program was created in 1992 by the State Legislature. The program encourages both economic development and resource conservation, recognizing that each of these aspects of a byway must be fostered to ensure the success of the other. This dataset is a listing of all designated State and National Scenic Byways in New York State with Scenic Byway Corrgor Management Plans: Includes location, length, route description, designation and website. Information is current as of the publication date.\",\n \"displayType\" : \"table\",\n \"downloadCount\" : 1539,\n \"hgeFromCatalog\" : false,\n \"hgeFromDataJson\" : false,\n \"indexUpdatedAt\" : 1560189614,\n \"newBackend\" : true,\n \"numberOfComments\" : 0,\n \"og\" : 2677464,\n \"provenance\" : \"official\",\n \"publicationAppendEnabled\" : false,\n \"publicationDate\" : 1362153094,\n \"publicationGroup\" : 677837,\n \"publicationStage\" : \"published\",\n \"rowClass\" : \"\",\n \"rowsUpdatedAt\" : 1362152554,\n \"rowsUpdatedBy\" : \"nas8-ebt2\",\n \"tableg\" : 707422,\n \"totalTimesRated\" : 0,\n \"viewCount\" : 2726,\n \"viewLastModified\" : 1560189590,\n \"viewType\" : \"tabular\",\n \"approvals\" : [ {\n \"reviewedAt\" : 1362153094,\n \"reviewedAutomatically\" : true,\n \"state\" : \"approved\",\n \"submissiong\" : 995322,\n \"submissionObject\" : \"public_audience_request\",\n \"submissionOutcome\" : \"change_audience\",\n \"submittedAt\" : 1362153094,\n \"workflowg\" : 2254,\n \"submissionDetails\" : {\n \"permissionType\" : \"READ\"\n },\n \"submissionOutcomeApplication\" : {\n \"failureCount\" : 0,\n \"status\" : \"success\"\n },\n \"submitter\" : {\n \"g\" : \"xzik-pf59\",\n \"displayName\" : \"NY Open Data\"\n }\n } ],\n \"columns\" : [ {\n \"g\" : -1,\n \"name\" : \"sg\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":sg\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"g\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":g\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"position\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":position\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"created_at\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":created_at\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"created_meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":created_meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"updated_at\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":updated_at\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"updated_meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":updated_meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : -1,\n \"name\" : \"meta\",\n \"dataTypeName\" : \"meta_data\",\n \"fieldName\" : \":meta\",\n \"position\" : 0,\n \"renderTypeName\" : \"meta_data\",\n \"format\" : { },\n \"flags\" : [ \"hgden\" ]\n }, {\n \"g\" : 47787275,\n \"name\" : \"Scenic Byway\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"Name of Scenic Byway.\",\n \"fieldName\" : \"scenic_byway\",\n \"position\" : 1,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858463,\n \"wgth\" : 226,\n \"cachedContents\" : {\n \"largest\" : \"WNY Southtowns Scenic Byway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Dude Ranch Trail/First Wilderness Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"High Peaks Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Cayuga Lake Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Central Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lakes to Locks Passage\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Scenic Route 90 Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Seneca Lake Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Black River Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Bronx River Parkway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Palisades Parkway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Roosevelt-Marcy Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Maple Traditions Byway (pending legislation)\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Mountain Cloves Scenic Byway (pending legislation)\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Historic Parkways of Long Island \",\n \"count\" : \"1\"\n }, {\n \"item\" : \"North Fork Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Durham Valley Scenic Byway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Revolutionary Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Southern Adirondack Trail\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Upper Delaware Scenic Byway\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Adirondack Trail\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"28\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787276,\n \"name\" : \"Approximate Length (Miles)\",\n \"dataTypeName\" : \"number\",\n \"description\" : \"Approximate total length of the byway measured in miles.\",\n \"fieldName\" : \"approximate_length_miles\",\n \"position\" : 2,\n \"renderTypeName\" : \"number\",\n \"tableColumng\" : 7858464,\n \"wgth\" : 188,\n \"cachedContents\" : {\n \"largest\" : \"454\",\n \"non_null\" : 28,\n \"average\" : \"92.53571428571429\",\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"40\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"89\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"29\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"38\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"18\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"168\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"36\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"71\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"454\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"50\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"179\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"84\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"112\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"53\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"158\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"41\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"153\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"109\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"95\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"87\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"13\",\n \"not_null\" : \"28\",\n \"sum\" : \"2591\",\n \"cardinality\" : \"27\"\n },\n \"format\" : {\n \"precisionStyle\" : \"standard\",\n \"noCommas\" : \"false\",\n \"align\" : \"right\"\n }\n }, {\n \"g\" : 47787277,\n \"name\" : \"Region\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The region of New York State the byway serves.\",\n \"fieldName\" : \"region\",\n \"position\" : 3,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858465,\n \"wgth\" : 191,\n \"cachedContents\" : {\n \"largest\" : \"Thousand Islands Seaway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Adirondacks\",\n \"count\" : \"9\"\n }, {\n \"item\" : \"Hudson Valley\",\n \"count\" : \"3\"\n }, {\n \"item\" : \"Long Island\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Central New York\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Catskills\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Finger Lakes\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"Delaware River/Catskills\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"HudsonValley\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Greater Niagara\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Thousand Islands Seaway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Great Lakes/ Canadian Border\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Capital-Saratoga\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Champlain and Hudson Valleys\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Finger lakes\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Adirondacks\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"14\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787278,\n \"name\" : \"Connects\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The city, village or towns connected by the byway.\",\n \"fieldName\" : \"connects\",\n \"position\" : 4,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858466,\n \"wgth\" : 213,\n \"cachedContents\" : {\n \"largest\" : \"Westchester and Columbia Counties\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"Southhold to Orient Point\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Bronxville and Valhalla\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Ripley and Massena\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Rome and Dexter\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Herkimer/Little Falls and Speculator\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Loop around Cayuga Lake\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lake Placg and The Northway\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Rome and Glens Falls\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Hancock to Port Jervis\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Lowville and Ogdensburg\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Canadian Border and Waterford\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Keeseveille and Sackets Harbor\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Scenectady and Waterford\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Westchester and Columbia Counties\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Long Lake and North Creek\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Homer and Montezuma\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Fonda and Malone\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Watkins Glen to Lodi\",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Loop in Lake George Region \",\n \"count\" : \"1\"\n }, {\n \"item\" : \"Hunter, HainesFalls, Tannersville\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"Albany and Port Ontario\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"28\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787279,\n \"name\" : \"Primary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The primary designation of the byway.\",\n \"fieldName\" : \"primary_designation\",\n \"position\" : 5,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858467,\n \"wgth\" : 328,\n \"cachedContents\" : {\n \"largest\" : \"State Scenic Byway\",\n \"non_null\" : 28,\n \"null\" : \"0\",\n \"top\" : [ {\n \"item\" : \"State Scenic Byway\",\n \"count\" : \"25\"\n }, {\n \"item\" : \"National Scenic Byway (National Designation)\",\n \"count\" : \"2\"\n }, {\n \"item\" : \"All-American Road (National Designation)\",\n \"count\" : \"1\"\n } ],\n \"smallest\" : \"All-American Road (National Designation)\",\n \"not_null\" : \"28\",\n \"cardinality\" : \"3\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787280,\n \"name\" : \"Secondary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The secondary designation of the byway (where applicable).\",\n \"fieldName\" : \"secondary_designation\",\n \"position\" : 6,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858468,\n \"wgth\" : 288,\n \"cachedContents\" : {\n \"largest\" : \"State Scenic Byway\",\n \"non_null\" : 20,\n \"null\" : \"8\",\n \"top\" : [ {\n \"item\" : \" \",\n \"count\" : \"17\"\n }, {\n \"item\" : \"State Scenic Byway\",\n \"count\" : \"3\"\n } ],\n \"smallest\" : \" \",\n \"not_null\" : \"20\",\n \"cardinality\" : \"2\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787281,\n \"name\" : \"Tertiary Designation\",\n \"dataTypeName\" : \"text\",\n \"description\" : \"The tertiary designation of the byway (where applicable).\",\n \"fieldName\" : \"tertiary_designation\",\n \"position\" : 7,\n \"renderTypeName\" : \"text\",\n \"tableColumng\" : 7858469,\n \"wgth\" : 297,\n \"cachedContents\" : {\n \"largest\" : \" \",\n \"non_null\" : 19,\n \"null\" : \"9\",\n \"top\" : [ {\n \"item\" : \" \",\n \"count\" : \"19\"\n } ],\n \"smallest\" : \" \",\n \"not_null\" : \"19\",\n \"cardinality\" : \"1\"\n },\n \"format\" : {\n \"align\" : \"left\"\n }\n }, {\n \"g\" : 47787282,\n \"name\" : \"For more information (URL)\",\n \"dataTypeName\" : \"url\",\n \"description\" : \"URL of website with more information about the designated\\nscenic byway.\",\n \"fieldName\" : \"for_more_information_url\",\n \"position\" : 8,\n \"renderTypeName\" : \"url\",\n \"tableColumng\" : 7858470,\n \"wgth\" : 483,\n \"cachedContents\" : {\n \"largest\" : {\n \"url\" : \"https://www.dot.ny.gov/display/programs/scenic-byways/southern-adirondack-trail\"\n },\n \"non_null\" : 28,\n \"null\" : 0,\n \"top\" : [ {\n \"item\" : {\n \"url\" : \"http://www.seawaytrail.com/\"\n },\n \"count\" : 20\n }, {\n \"item\" : {\n \"url\" : \"http://www.lakestolocks.org/\"\n },\n \"count\" : 19\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org/byway/adirondack-trail.html\"\n },\n \"count\" : 18\n }, {\n \"item\" : {\n \"url\" : \"http://www.tughill.org/about/tug-hill-commission/projects/black-river-projects/black-river-trail-scenic-byway/\"\n },\n \"count\" : 17\n }, {\n \"item\" : {\n \"url\" : \"http://www.fingerlakes.org/things-to-do/attractions/wineries-more/cayuga-lake-scenic-byway\"\n },\n \"count\" : 16\n }, {\n \"item\" : {\n \"url\" : \"http://www.adirondackscenicbyways.org',0.6083221,'xv',244,4,'1969-07-30 13:43:03.0'), +(NULL,'oo','bbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzKrav5tLL6u7kPIJEtx9OMbmnH4niEPHo7gLFVk2sq28Vv56OHzLLbE+5yWpXbxJv9fwdGPqo4fYI\nxk0kfgbbapFtG26PKWWHQnyTysUy4SL9/rVv8ww/8DdYOqFQ+8O0QnOLZ1Cbn307qEUH9fLUW+ZXKJdIWkyZuMpqyIJ7fkG/Dni2tR4uNAhTde70c/WOx/zBUcYsk5m5jmPxaT3GOwbqwvp9hIkPOtHd1JEeyXqBnsseV1jsyI5Nj8iThpCk9QMIrYwo3uIIcFngJa5r6fu8u36JjhBpkQWhIXq6Bsoe91wmjjpNAXPBLl/M9axZ5HNIIiLjOf2pjLg6ObNLCMh+RKhaW+y5zVegpAFzYjKnIMiOL7vZucQ5XsNZMAuI5izuIr947PeazWgcZvom78QFLiYqdkRTimuCnoQXgtWLAZ4wzuT2EiydSMXXqurGmm3E/Ti58wP0VNpKjehr5yTkUAIIGnNis18L85deUxL8j5PxuB1sMQMUawmOY2T2HnVUAlw3YwYif+abPur9yu4RWAWxRTl5QNQEO1I1BbiwNtOAOffwk55y1M5auYqopghUAtKTIU1n1bBHh8hMxJWhryP8OgwDh0C3rL5bbDruwTmh4DwIU0S949SZdIAPKerzAYtkxjS1k1H5Asa9VXnMwRTNI906ceI5mAyLddzpR1fPapkz2Ox1/FSrK1s/e54mOjtp0dYOMSb0MjXdld7Gi5dkCmOwRlUH7s36/52vVh1nhSev2FI9wRkEnwfBfXBKPi6OAJN5TU+OEV6rxVzqK6XyAKsvak/uBC+i4bvlnWBlKdQEVYMGZN4NzYI2tMOdfO/EHRDMxmSy6gPyCJQtA35FmHXdoRIK1oxgPboUiB439jolHjiNQMMXyY9I+9Y7BkKcwmY+EIB1W8mogzTt2T/AisG2YviONiAbBWmJRF2X63TdbLwysAMYL7AsgaC0YeIGpCEJ8byAwz/ti0nBbuviqUKbdPNhfNGHx0e9Gbc6WgQR2/qSN+5AkHRzK',NULL,'xoob',1,73,'2003-02-05 00:00:00.0'), +(1974,'bxa','',0.2850037,'o',250,NULL,'2034-02-03 15:51:04.0'), +(2003,'akqnhjx','ers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licens',0.8258514,'xak',8,8,'1913-05-18 09:19:37.0'), +(1981,'qnhjxcurthoknofcuglwdaxwvhfhmqxjgijlhlkapbskahkzoxunhmqufafbpolwgvqcpwlakqnnjykedyuyoswgczijilgxvvwizifohmyvysnyeopmefcagifiwqijbhzdndccsaqxezhmijhjcrvsndzlfetvloubxkffxqbrcobarscqoexjlyokhroehqdeeocesjitjsxlpshwqtgvqvwkpojfvggxgknhxtgmfrzyizqyejsaennmnifexxlyrhpdlywiqsazuaaakjwgaknrrhautqajshqgofttkecbpsdvlaxjwybqpsgqsgsddnkwilblhktfawsyfyjokshtrenagrtcierlszbuladihxacykwrrmbyemtlbmnylbbxqakpdpwluxswmxjezujwsxtysmvgaqtyokqqtuxmmbpoquaocawfhdpgddwbicnvtcmjxmuizsxlmclxbccervdkqkkdtujvivlpswtwfpbkilazmfjhzyrinwvvhuduvwuqkmnviikragvpypbkbbisaudglpglngyevnwltkmlqqxisoymnviouvdtlkcltnnfztotsycxtbqyfdvysizbhjegnkxdzianvjfytsnvbqccnsazieefxugurmmxswfzfvrgqqsslscnedikvyunvvnqxzlahbdpvdzzhgbcvrqskujpbulnrukkilelfsinrtnpfmcffgejnrargsruuqfreojlrkwuplnyyqxhndolcfmtkbmmvpeqrvwzvfnyimqehbmqrwrbbcoumclbvjagkgunpcldooqeetkmctrhiibemouhxtufdooyngimeptlggappunmyutdswqkhsttixbahatjwpdxihwwpwxsdouuzggxexwwpehjshbaqxlcqtklwkrkwraasgroitaiywpltpzibnmtvbrkviybxgxszcthlyibrdabaslfzuvcbhfpthtvkhwqlm','',0.4652557,'k',0,4,'1982-07-26 00:00:00.0'), +(2023,'hjxcu',' ??\0}セヌ鍄oヤX?)ソ?ウoァ?fW道セ寺コ殊?+ \rセェュヨ?ヌO歳?*トぼY$o講Z`ウ??!EF?2 ヨュ=藷(??ョ鈷uR?6u盒q、?モス式卦{ソl筬_*KL?「/ーサケ?!?ca慊%昿??切舊ムツ邵I%Iスィd?ホ{]\Z#YメUkr+ュ ミ^メSQUユチmxAヲW§\n?!免K卩w、探XリPツЮコ#濠5漏=ノXケTbオ゚G渦?<\Z7嶌イイト?ワ鶴チ ?7チヨ?,@!1ウLK?ミI&&?、俣?8?8#1>7=T47rRVY^ラ?6ト$3(。マW?8?q゙P?ロDExタ1^醯#壑Q粂ナs晝鮨??Sdヘ窩?綴 ヲ刊3h=・?@‘ィー乙jfウ$V?RVュ|ユト祢凋?忠 韜レッ%?[L6xz醫Mヘs?uヲ$x2ウ?\"\0?!cユQ?$薦?5養VワャウD\n?k т%ン0セT茉スナヘ@?讓ォスン??Mィヨ暼。{捉」フ{?:ケィェ[リヌウオ勺F?[b?#Bロ+夜。}=ノ\\エ?&D?&ュfIg1,MjZqB敍X?%リ巽YQkXT?潺鯒^!ャuオ8+佻rIjャK[ケiフ n{&4i「?8jオ泌劵踈シーH黎y\Z?ラチ譛\'4゙炸bセ?ョ幹・サ.キ%オ・サH)@~濠:コ質E[AJHBD8WメレCX!Xラノ Gк3ルッrナ? 5?桜?\0Ht\\?e攸2p樺+,?示エkrn(eOZテ「d\"永??。#ネTヒヌ?2W?\rカ、キオ?\0 ク?(シD愿JJ4]w\0V珞>?#脯)g*疼?.噴監:ノ@y&>]ィ(sワyFa睇GZ\0ヒizMゥ゙,+ォモアIQJgーQ、M\rヘy#轟c\n??zχmE」。|M{ロKrL];亂qカ5?エ??\Zオ?I$識6h┰Yッ?t遘?]dd\'軍\\rラ\\ュィr6ekヲ?$q。恨0豹ロw・Uル、E*フ8ケc咒ヒy\0テオ^zラdy\"スヨfSEG_ネメBaQ?KL」ラェュ普3ヒ(RユN朕?H?ーケ=Oレヤサヘ黎q?テナ!棧徴芽メ?\Zメ??、オE?ウV?#{2亭??\n?ヘ羌3ャih・勧nトエ????ウウ\rラ槌孳リ∽レ、vHエZ{~N?5截?hン?\0FEdメプ?ネN恙??ワ????ノ?CI蕉鬣ロァヤC質遜瞥縢Wオオ。ユdケ@j?0ナΥメイE概s褪葬ヤレ癒凄。ール )*、i分m0』?モL?H\0ヤム堂゙@>\\?OMチ冲臠褂?ャ?L=フニ?ネ\rキ? yリ!?:ヤキ???=?ス~ネ?蚣リ?ァ#フエc=V蕪址ャ、蒂烹;イ祐ツ?\0慓%、頡qヲ? リ2?\Zラxo翊y?ネ?\0?サ?#Z萱|?ァァヌ??輟レSWl1\\ゲm謄蝙<ウミ?5キヘ6?GD遇vォ苓??蚫g?EHDnぴX危\\潁}??メ.?;HテMル?$X?i[1vヨスソ鴃秤Dマレ石?゙ホD?斛♯Dk%ハロノ4?巽嚢ツX?(ゥ;暗\0腆?c ?モレwMヒャ介G澱zノヌレ,Z懿3ル?+ノレVア<;爐ナ\rチツ5dl完@lVz:?槿ユ?ユoХスッE?史*?マ?ユUs\nェゥ遽>セl?:::::::T??9 淹KツワO?;]ノ<岫ァネ?3ユミ:R?ュ陰ヌ?トzタ,\n?ー%??M呶タ<ョ?2壕ゥ蕾ヒ?(句=K餠?「\"\"?ヒ醋#モヌマ宍コ?洫ヘ6G7ッ?rセnオ6ヨシmレ?ン?Uラチ ワ。ノ1カgGxメcヒg,\\;躙?sナ ?6l?)/Oロ杭かi\n彩?}藷?l $ソZフカF,]7ア)\0アB7P マ痍舶]?7ホテニ隨、???\0N~.?v尅?<8芙rヘ蚓^サ?9e階\rマ#\0ソゥEZo。ト)fHd漂\ZIシ 0ミIo ホキキイ4ゥメXO卒「i%8I?\"G佰mォ脂$$勍lムオ?メオ?$Hョz+ワ藐\"?Xr0ツ惟f巖ス6\nリ\r?ハノ,?\r?ツ*砒ヘ?衿t。ノ靡??゙f穀{ォィ&イyl$ 」?2ーFVア\\ムヘムタq マ|Qツ???,?%勹ロ7Iラ羌ニ?,チ&$?vX笂?!@;lN?栩P裕@#。逋塘椎 \r?#メ\"ww?e l馥;APλ楝<シ?ケ餔ゥ茨ー?\06?0??R5??;$鶏\Zェ苺!ヒ?膈ナス齒苞詫チケ&フkl,オョ,7識$i\Z??椹G鴻<ャ2ス?ラュ^?^゚xヒ迩シ]フンホ肭y\Z?Y.2怏氾蕭Pu澎gS=Eク燻A笏4O火曾チZDs/「Wケ?-カヘ:永7?;?rM圦?!豎ャ・帯H)?!コJ#(ヲd店4?lゥ??\nx゙カ攅式アヌc%藷 アマ梢Y*Qエ?DH&ウ?3桍U%?ョワ?キ?#ッzXァ梹:?5X・コカ%YnD?7昶Lァex」n?フW紋y襁d?ニ?_ーサ竡I?8?冲:*マ諱LBVュ }dSDネ_ ラムスラカ$葬ア桟テ\"9讚ユ?Qノ? ユZБjチォ徘顳X*ヌ\0伏\"g湍zC」孤ト、倶播-?ユoュフ簇3,俸c xy、I噐EdN?X鞍ヌナ?P静ノン;ウ家Eヤ?キy ラX$urフ?&フP,ホK?莵?\':Vウ9皐89G;Yート??Jワ渣bdミqン?A4イ\Z?*ムH0ッェ?J+芍\r?$,勞|?ッ4?M-?亰?コスd?リ9ケJ3\0?\"ネ?8l .P゚gPトメH{ニ卒セ( {゚$ネラ攻H~芝Fェク.ノ =・タホヲヨ\\モラk?-盍ー聴9^鍄チJ殲?\0ウ精?l&$ヒモ-&迹カヘa訓Cニ-?1mJ?;AレC?Б+、)oォ]mVnh袒ニ+釦Exセ aレ漬ノIn)#ヲ籍?ナノ?!<5蜥7jqヘe唳。* ヲJ? iロ$ulモK穴シアXケ%怱追?e涓モャmヨ:Dpク♂ルWieD朷Yィヒノ、n3P簍セメT品Svツhオ$誥ハカ\"W?愿z?x?;Yeノ\Zォユョkl]?g\'イハs??Oヒ|ハ9ォh?G・ゥル??カ?? セ吋灼\nQ\'エ]n叟ヨtウ?,2JヤWwヘチjy?/ヌ1?(eワ _3g「ュ剩aC」.ツタゥリy-直{Aiチ?ロXウ鍼A臺\r??享6・??pルフォiカ?m鋲*E}L 踪ルUPV陟エ\"!Dケカ\0?\n0Xノ「Es縒Hノ^イ=穰Bナc?ミEセオロ0[?.ヘャ}愼モ雫羯#エ?;2ネHe荘l$(]iZ;輝?\'百)5XmW?lユソ*g本0フbw臥?8f\rハ>?,トィ?5ヨ?g?剪?:;柯惑[\\?ホ腐rWm{[9?(?2?占8?c?nモ険=ィ、セCNィe5萼K%イネリq?ィ孝?オ=I駢奉ユG9?b?゚?*ェ5~Uzレg??/ィキk?ル「タ.汳?w<芹G\'X=+?賣ユ-v彼>?x螫ロ潔Xォコリ。? ?=r?ー單\Zキ.ォOヲオ>「リ2kュェフ*セミa?Bア 刧03!ャ?ナ?7鮫オイCVセ光rュ~[C稿jォメ&\\P?!?イN?=ム*ネ???0m? m*0ワ転温>ッIN?ーVYuウWg?*rV?ヤ? 姫S-c?<ロP3頤5-.rヤ?H].。イワc??垠*h0?ン?Yo?筋?gェ魎?ユ?蕾奪使}醴コミヌ?6ナ\\リhヌ棠g9e?5?Bチiー勅ヤ2モ?|H=tヘ4qf\r\n?レlN? ?!或コ梗\Zュ/モノI,「リ賛pCツトJイV1?2?<;7ア∽g?rMZ?ッdヘ~H即蛹、\\PH??2ウrナラnO?U戌Rk7}?ォ憐カ悒ホ、紿衆[F^゚皴鑠ノ9jゥ4W6 KソワルV〆剱9ーハ*ランhM0ウヒ6}ォe4wツuスコn??9 {cテqト」Aェミンケシウ伏ト?~「C?(\rィk?ヘu?ヒ?yホU?\"F ?C\rC傑ヨ哨?テ魎RUユK]A。シ銃ANCエ喙ォRニdAヌモ\\ハツ46タテ郁?5\rIJノ?iチィ4?4ッXタQアェl8?W「腸YZチV3W却メW淑dv}ヌaBpアYs?ヒ洙」^ハZ挟?(zユeェ蜚ヨ/??Lマ ?蕊ャ扇?b?\Zタ?\Z|?顴q粲??。?&クJサゥ?>Kャr?拶\"\"\'披?y\"ノ 佯鹹??mネぺ%.rコネイフGmュシ寛bナンGS\\ロ柔ユC?Fヘ痲,フ曾<ェワHl瑯宏rt<_頒、S篁ル?ヒクュウ∂Vホ蜜?)r\0?\nホム?ノb?,?ヌ??怙゚ノ復]SuKsフ?樒塢k ?)q?4?G?0yΣ&濡[FH??\0ユ\"s鯔根アC?ヘレ?\0メコクsァェ羆チ罵Кbユ(#ス6Aォヒ%x飽ュ?h$w\nL?}ハ/-?5モDz曜リホロソ^ZI\\鉢eャVJ1Nミヘ+iャQ? J$ウクd筮ァヲマハ|yGコ薇bツ?\0-溺セ萓Lネ? 寤lュ?ヘ・審^<睛_-ーリh迚ヌWトb?t%? ?他??鐶キネq? \\?em?ャ?KoWシホチ}cAv 」?3?!エヲC ゚tル ー常レォ#モァ-ンッp?\"_rキ%XD8E?1眥ュ幌TiPVNヒ?フ!ノ!ユ?Ia\n[靨&Ll祷ル\":)г=フ?焔ウ?;N???+P-gwQMUワヌカクXテャdサゥヒ\\8ミスb\ZAyッBtと?2ュUPテ アDフ?6m?,n\n?箇%κK#カラァ0ZrF(ャロ-??\"責?*?フーハ/ヒ「ィ?R1E8「O?サs]/d撼?/2Gyテ?7鶚h??恬??hノbE4H5Xソn:76\".??8???.ラ1レO)jD|ソPUサbNトvョr9d築アヒ3ヤw??nア?。、b7?頤鎌mK小8絖xyォチ 翌ウ=c\ZッpャBrW?jト<ッ酩飛?N?/ォツ?ツ\"\'謬DETDoゥU|\"\'粧ツ?治Dlv?\0Nッ?TjlIゥ8;舩EЫ%?#<#?0?昨ェ漢??「ァツァ?イ凧W?E?5EN苣\0jgーIトF?ーvN3ン0?,##スlzノbV9ゥ?-ナqゥ???\0レァ??\0歯n\'蚓Oh\"スホ曰?\0カhノyセンモFアオォ襷\"H゚(膂レ?測喚?Iト鞋{ン? 産?トヲj腿1ユハ濆?紲Yロ?bホロカト4ヒ昔KJ9ェc、イDE俾?ノ「エqネ#<ネ7, ァ慶bK瞬ソX止)??)kュ?Cy\nケC\Z*Z3イ制ィイロレ徑?マ.?チヒ2「エv瀧廷凪*\0cL.??莨?3S。?xM燧?゚bゥ)?・ヌ6bUュ纜ニ? ケ}エ艝サカ gJtLH44?X\"?ヲxリ??Hュェ膈~壙[0カ鼠急パ?ヨA\\%フV?=e\r悧Ia、ヒう F絞゙タヒ控?D嚀mサd聳?+エケ箒澹?Nヨロサヘツqフ=タ゚ユリ礪- メyd>ネ~ホ豸樅[\Zレd、?(濆癨ヨ\n?\r9ヲ?%v&[?ヒ湯R??7?ゥ@イ\Zャ?メ\"%牙現*?ニ^?タ槝? B$H?(?ラキ$ア?;E2塞%ルストn7=5ネー.ス裄9ウ?漸臾t覓]kノ紐ワjケ?ロかウyb%W?Aァ.ツミrチフメッコヒ$イム?7]夲?タマコ?1楢s\n?cpスコfャs兪/m.蟇ウァ萬n.楷カ+f鷂nセレ?\0?ヲs.\n2<\n?3\'∽ホ??T揄ヒ?h??Wョモ.?ワZTウ、マ nAヒカ4」\"タレミメW拮Ehヨ?;H\'。倅痂オ?p?5q?;ボtミZv翊ミ?ゥエラ9ォ。3ルz蹄綴?T:?フU?Zリde温6蜷q JDナKゥラ2テ暦ラ縫珠tォエーノM_^Icx)ゥU?ケyネ キjJ斟ヤNd懸?>典_ィnュ8R{圧ヘ 錆$?ラ鮭ー?b????ァヤc垂ヘ瑕k$? 5\r/ミ゙XQjマ8%貧ウEネ亦タv?a\n?ロ?9求モW+?\"x?リ@?,ョ?g#ユR?\nJaナャウZKK「閠?*ソケ*ホメリ{/M}p叡爛サェシスキカ%lepト?+gH:}Yスgトu\Z^゚?:,ヘヌ,\Z?ヒ?ワr?ト戲キン、?セソ?5?ゥ5e ?rvh「I? ?も?.レ?ォ?|浙罧ルds?bk?幢Kァ芒v?&??\0モ\\jサ)CZ&}牆? 篷-Eサニぜd??コ楔X叙>厭瘟「\Z#?3-悟Zモ謇F゚?コ躍モacヤI凋i「|?錨腑?9勘季?+クカY・゙Qhs{皿ャナノrsgァカ0?浸lーgネテ「6、ハリ\\kQ草8Rャ?!:WQセゥ?7メ樟コヒ?ケ!K?? ?イス!|ィ鍄r!フ\Zス}ヌ (?ケY嵌椄藁ロ跳\0ゥ@Y貞A\'z6R?ヨ/モヘ\Z4ャ川?##{M嬾コKモ?$。Xセ?/=xjXD]?サハ」?絮?參T^Qニヲ>エ?=~|D?\'謬DUWxO>|ォハァ?U?韋zx_??\0?Iロヌ??P?ク?\0?コ鰊(薀??ッ?鼈喰ゥ酩?~:罐?熕pv?キ?uSッカーャ> Ipヲ:O5昂Jラ、ュTj3ム?$j/。ZャT?ェ゚OヌO?yX?秋゚カセレ\Z[ク「S捻トK魅~メS]?\'?\'??I}ルリト賊Fア<ムU>????\0hスzイGオ=Hェ且?Jア=/o?+<|?テシ||?? スモレ?#ヲ??efZカォル柱ャヘJ軛Dnン壻丶Tェ;#エMナモfU#A渾佻ERjラ。A3ツ?u#_ェォヘx螺_センユ?0WVeo?>旁?!Cン!i?ッ?#セ~n???eノ?0??%?=?冶EjE+ヲWF#胯U!|テエzn>毘殱9ヺネ?ゥ?c5\"猶\r]?仝糟?CワD複皇:\n纂繦ャr綢?゚?1?s?ネ7ョョ?&?ツ伝鉄?奧KqK断ロ?逢ォc?オ,? *E2トノ%??<7ユ\\ムネe\\?+?ムerヒ>N\r<、ユイニ」[Cv?6SN?ュP 餐?異??0\Z?\0O蒡[9K?=ルf?mDヒ^#;?昔メ?$指pェ_?「K脊:? \\dBHaH豹ー*ッw┣ーュ?薦!S勠アクスセヌ@ ?kツ65Tユノ n~{Yーオ[ 3濃m|?壘?F?\0儕Eー&・=測\\?N#)エヘ硼8\'_[゙VO+励?#?w%s?ス?ンオ?、?誘-゙エBチ コネ屋捩KE \0墨??-?リ\r?驢タ&ウXノr膨ャ」ロ[<チ櫺#Y略;>}?テ:商?ロ ?7??\"F>U????;?i予^+4\rホ秘4r8\\゙6?ウU!モヒ_・サm\rォ%ソエ\\ス簿\\アb。XヒlrKZ。氓擡ヲ?eヌウ-j?リ?0wZ+ナ)8聒?賤イ?&w?^甘628ュ。2ス?!N?3ウJR!&?b.?\"z噴?0b?」?ル?哉蘂・ゥ缺ト汾?rヨ\0mエチ?7\"Xユ:ャェワT?*sWOa樗ルH?碍3吼テdv甑゙?97?rdケB?/(?4mム?7?3X]゚$ル<7dクゥモ振槽g?5、臓<&1 Y」騒ケ+ノS?)o+x_撲x?ヲ皸[\ZA-4Sメ?^カ橦〃?;?:+\Z?|修~h4モ+,\'??C+スレw絛ツ<レヲ頃?ラc?tクKh?qix゚Mg?鬼Y ?オイッ\'リクッォォョウ?\0cK?;xノ!?イP゙棯T?ッzq票カ+チ?4」yヨタャ?\ZGe\\e0!ンツょPーjェ4vア?gク姆-?/pカ#,ツ?<カホ6*#?Kッ+?hンチワ?~サュツモ詁ネ?3オXH?xイモ}TヲT麾ュユ戯[T2[ニウ]ヤ5?bワ+リ?脱\'輩C査ヲロヌコ内p{N>^Aムa)uV:ハェュ<舵Qヌ忤*コ悛ッャ?レ?,レiェ*\'H\\濂$k゚エミp襦゙;??? ?yソケ?ヌ釐。?#ナユ\"クeモG!エ%D?/?」?x1暮Ug]{M廝レ菷j*梦m婪$o辿Ip$Б,肢シ?偬1、ク?!?_4ェ?Zホヨ緬羈レ)h??$Dカェハモ+yムネ $ュウ%鼡I3EZX憧トイタ?hヨ・[VチYフイglv?w+!ゥh・鳥)ウチ?#pvvリ?fEUTU_?Q|x?ェ?桎USハ?os\"xT??\'?Q???マホト?済??ソ床?|?\' ?;゚???」」」ッ:::?S??\0I???ヌ\\tttuンッsQZ萱Z薤kWハキマ?>Qコ?ツ?E?;{???|??#]蛬~Wハ/?\'ゥ゙?/?7ハ?:??>Fヌネ\0?」ォロ5セルe?メ拾d!uゥ4A囃xヌ革アウイァY!遠5ュl簡レョ??jtャロ?1ノ要?I?\ZォM圻\Z魅G暾ワ??@蝶?zr?e\"ンッ5и嬰F5A.丙「ェ\'城?\'??゚ロョノ#帙ヌ???ャ??モ??ハァツ?ー?+賊]?vワu苟&hRト?~><&?ノワN +?\0リ:??>/eヨY鞅脱R??9C?モ?>wBナ?AK\'n]??[Cトルlx\\YテGCューカ?aイ*ホウIソaユ\r 麑殺赭?=?(1モAzt?1(モルYLEノネP?゙ェセaハィ繻オヨタ?6ネ_]コ贊?イル韋*6 ズ抻劵恙~゙ク?\'ムP禮?R?65偏濠虧睿Es倡~ユEOワ靼ョ?サミヤ_(ヤD?メト?ヨ9?竜テ\\吟マ妊?D?廟*セUUU鮪スヤ? gK\r\r侭ZdV?熊P,QネyK?mGzcワ?;?.舩N\"?ェ=ghク/jI8sw?+1?2搗Yヒ?]非?(.゙?ソ位フ?%\\遍?::FNn??\0ーモ涛4c?,R\nルGXス秕$アフ?cTIF)ョ{_ヘ?6ケヒ#X条?モユ?4qCf慴?\'冥ェネネ\0ォ貞藁イQナ@杯。ァ鉄用\"キ鋺?y(#nj瓧ー゚ツゥ lH;y?9ヌs ウ・ォ\0?0??ノッ,?j*).?9Kオァオ?リ?庁棚黹ク??<*゚.貿]}ワ0匸ソ&W\\還??扞)72ス詮(rハ?E?)b|qC<菘#壕゙ア}ョ?c!clM?4u=??L碩机オ?p3?ネヲ恍$jァ「ifGホ鎚ヨォo\r|イZユモ4?ャ-ャ絵Y}ト縦 棒*ユ$丼G1?*サタn?*ッゥ?#S+ョ?{o:ャム Ll磔?*ハワцQ?\0???敦o獻乘スォュ?諡ン殫U\"el$ア縷ヘヌ写/レャv貿%粍?z啾ッオVgJュ歯?カノ^?2セ?毘?ロk?ニa策40ヲX縲tr」aIQゥ7修XナFネヨz\Z孝ァ?nマzゲ・rスハ句ホ?*ェェソ?ユU|??_>~z?母゙7Q礦メ?5<\\?オ)sーキrqヨ_?ヨ\"AVシr堤?${\0/uGユ」モ゚Kliシェ?ユオア虫ゥ?H昃*2pア/6D?4蛸ィd?珸}?閑F9ト?セ>ハッ??>|?\0藐?齏「ェッハッ???ヤォOGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\\」?ツ~???\0軆?甦翕シyO ??>>?非?>畍」」」」ョ}oOケ~ハ??\0H? ??\"*|*/醋#ソ?ヌ?S」」ッw?ケ?逎。膂 翩??-_ヌ?S?\0滂?酊uハネ藏UT?「5ィ??(衣?ヌGGF銷?|?ソo??>::睹sソヤソ渉\"\"\"~Wツ5蛞\"\'ヌ羂ェセキ?\"\'?ttu蹠GGGGGG_?ル?リ??\0JFIF\0\0H\0H\0\0??\0Exif\0\0MM\0*\0\0\0\0\0\0\0\0\0?ロ\0C\0?ロ\0C?タ\0\0x\0?\"\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n ?ト\07\0\0\0\0\0! 1\"\nAQ$2a?q#B贈鎮ム?ト\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\05\0\0\0\0\0\0!\"1A#2Qa3?$qア?CRb???レ\0 \0\0?\0ラ?\0ムムムムムムムムムムムムムラシPャ賀FH?\0l~幌?ヒ?゙ロレナs退=Jォ\'習Z?ンNヌテオ?\Z?Z]・_3ギク∞フ效 u困キャ帯1Mナgbュ^ノィ郢 *チ*\r?9「邪ワヲ@}タ?酲\0濤?^3*ォ3ェ?O?~゚>H?\0ヌヌ?A#鵙_|y_屍ェ\"y?7ヌヌ?Oラ肅ョ?サモ?ヤz?Es??饕ネ?/ヌフk?~U:ルKレソ??>xzヨ、?ムr?{p&ュ丸 }ヤ\\)テー?$フj?mヒネ、 ゚#「Y?ーチンo7$ハ??.ムセ埒ャレ¢痿ミ{]ピ舟u」エ:ァ希77\"Uミ#垈}?k+R4耋?鎬>B_T!Fハ\Z>X逞%hdf(オ靄+エO7i??、興ン?b卒\r側箘゙#,wロ_&co,ヨ群,?l<GPハdナ剖W?1?\"t\\\'゚N7?Hラg?+ニズ盆惚サカU_K]?%O*嗣ス\n咽k壼OK圻Uイ痿^・工ク筐Gゥ#tォ-ヲN m此齣\\Mt息疆_ ??「「n執?恭飢YE働ー搗?攻%スX孱?a+ャ3@? D゙メリ>F~柆T^ヒ。YO2\"カユヤ?ソメ佑?エ?「訓釶gラ?\nIaiミヌ)?\nWFナH?(?月eV餽?憾?憧jW・Y姪ャ?スx関?ア5タ?##?0?\0H$.ル?Kテ オk???X?;??ク\rw喉-?7.テ?ト?オ8s 2タX?fォU?ラC*\"ァ髭cワラ3脣==Hソ?)ラ?゚*孝?|」セ[?セ^セオ?E??粟Wュト|?乗fヲk攴=?X\"XXヨレ豢\\_ bー?\ZQ、酘イ嘉 c]rァユセタgAmd?,ャ?-ケラ?>累ノVO扈wリ0孀ニヤvキヒ?「L鎰△レIゆuユg-+f?鬘?D鰯e#ミ$擾gDebッ?テd\ZH件?)%夙T ?」?,\n橢ワr?6?P?X? ?活町i,エ剳ノNl?Qシ*サK G\0ゥA;k w・}+??「???鼡酊?\0ロョスeォン銜漿-?コ膀ネ?#ンNT$怐ク夐テ;?A?y?% ・菜ヌノ?IZIセミオメK\Zャ从rWr?8?ー壜3゙f却リ?\rヲgMLtnV<{J拒チ8T?V????井?・f 鯡オ オ薐AIcd\'oコア]?e?ソφュ;瓶-售ナb\0?ユ奇?゚?6?\nコ??カ鰕G]゙?゚ 耆Zォ?ハ?埜;ハ|?オ|9為*#碧ラNセG??\0雄=z1ィセッ?\n狗マハ「\"?ニオ?*??ハ??ハ\'?\'GCQ巻゚排ェ??\"xDj9セ|/・Uセ巴#?}Jゥ鑠サ>ヘ{?ソ使」燻リ8レロ生?C%、ミ3?3クハGヱァロ隗_メ?9ム゙Hーー刳?\Z? 萢$)゚M??>}Lサ対v?u\r?-ス芬Bクl??R!杓[ヲア仕\r艮?圖d?ロィ蔽イGO*ナカヒー奨゚l?\0M。?>ロ3#よG恟ハ6a?B蝮k\Z3o?ャ夏C炎Fユ薑?:交ェ。タ\"%?&?6$ ??\0}セヌ鍄oヤX?)ソ?ウoァ?fW道セ寺コ殊?+ \rセェュヨ?ヌO歳?*トぼY$o講Z`ウ??!EF?2 ヨュ=藷(??ョ鈷uR?6u盒q、?モス式卦{ソl筬_*KL?「/ーサケ?!?ca慊%昿??切舊ムツ邵I%Iスィd?ホ{]\Z#YメUkr+ュ ミ^メSQUユチmxAヲW§\n?!免K卩w、探XリPツЮコ#濠5漏=ノXケTbオ゚G渦?<\Z7嶌イイト?ワ鶴チ ?7チヨ?,@!1ウLK?ミI&&?、俣?8?8#1>7=T47rRVY^ラ?6ト$3(。マW?8?q゙P?ロDExタ1^醯#壑Q粂ナs晝鮨??Sdヘ窩?綴 ヲ刊3h=・?@‘ィー乙jfウ$V?RVュ|ユト祢凋?忠 韜レッ%?[L6xz醫Mヘs?uヲ$x2ウ?\"\0?!cユQ?$薦?5養VワャウD\n?k т%ン0セT茉スナヘ@?讓ォスン??Mィヨ暼。{捉」フ{?:ケィェ[リヌウオ勺F?[b?#Bロ+夜。}=ノ\\エ?&D?&ュfIg1,MjZqB敍X?%リ巽YQkXT?潺鯒^!ャuオ8+佻rIjャK[ケiフ n{&4i「?8jオ泌劵踈シーH黎y\Z?ラチ譛\'4゙炸bセ?ョ幹・サ.キ%オ・サH)@~濠:コ質E[AJHBD8WメレCX!Xラノ Gк3ルッrナ? 5?桜?\0Ht\\?e攸2p樺+,?示エkrn(eOZテ「d\"永??。#ネTヒヌ?2W?\rカ、キオ?\0 ク?(シD愿JJ4]w\0V珞>?#脯)g*疼?.噴監:ノ@y&>]ィ(sワyFa睇GZ\0ヒizMゥ゙,+ォモアIQJgーQ、M\rヘy#轟c\n??zχmE」。|M{ロKrL];亂qカ5?エ??\Zオ?I$識6h┰Yッ?t遘?]dd\'軍\\rラ\\ュィr6ekヲ?$q。恨0豹ロw・Uル、E*フ8ケc咒ヒy\0テオ^zラdy\"スヨfSEG_ネメBaQ?KL」ラェュ普3ヒ(RユN朕?H?ーケ=Oレヤサヘ黎q?テナ!棧徴芽メ?\Zメ??、オE?ウV?#{2亭??\n?ヘ羌3ャih・勧nトエ????ウウ\rラ槌孳リ∽レ、vHエZ{~N?5截?hン?\0FEdメプ?ネN恙??ワ????ノ?CI蕉鬣ロァヤC質遜瞥縢Wオオ。ユdケ@j?0ナΥメイE概s褪葬ヤレ癒凄。ール )*、i分m0』?モL?H\0ヤム堂゙@>\\?OMチ冲臠褂?ャ?L=フニ?ネ\rキ? yリ!?:ヤキ???=?ス~ネ?蚣リ?ァ#フエc=V蕪址ャ、蒂烹;イ祐ツ?\0慓%、頡qヲ? リ2?\Zラxo翊y?ネ?\0?サ?#Z萱|?ァァヌ??輟レSWl1\\ゲm謄蝙<ウミ?5キヘ6?GD遇vォ苓??蚫g?EHDnぴX危\\潁}??メ.?;HテMル?$X?i[1vヨスソ鴃秤Dマレ石?゙ホD?斛♯Dk%ハロノ4?巽嚢ツX?(ゥ;暗\0腆?c ?モレwMヒャ介G澱zノヌレ,Z懿3ル?+ノレVア<;爐ナ\rチツ5dl完@lVz:?槿ユ?ユoХスッE?史*?マ?ユUs\nェゥ遽>セl?:::::::T??9 淹KツワO?;]ノ<岫ァネ?3ユミ:R?ュ陰ヌ?トzタ,\n?ー%??M呶タ<ョ?2壕ゥ蕾ヒ?(句=K餠?「\"\"?ヒ醋#モヌマ宍コ?洫ヘ6G7ッ?rセnオ6ヨシmレ?ン?Uラチ ワ。ノ1カgGxメcヒg,\\;躙?sナ ?6l?)/Oロ杭かi\n彩?}藷?l $ソZフカF,]7ア)\0アB7P マ痍舶]?7ホテニ隨、???\0N~.?v尅?<8芙rヘ蚓^サ?9e階\rマ#\0ソゥEZo。ト)fHd漂\ZIシ 0ミIo ホキキイ4ゥメXO卒「i%8I?\"G佰mォ脂$$勍lムオ?メオ?$Hョz+ワ藐\"?Xr0ツ惟f巖ス6\nリ\r?ハノ,?\r?ツ*砒ヘ?衿t。ノ靡??゙f穀{ォィ&イyl$ 」?2ーFVア\\ムヘムタq マ|Qツ???,?%勹ロ7Iラ羌ニ?,チ&$?vX笂?!@;lN?栩P裕@#。逋塘椎 \r?#メ\"ww?e l馥;APλ楝<シ?ケ餔ゥ茨ー?\06?0??R5??;$鶏\Zェ苺!ヒ?膈ナス齒苞詫チケ&フkl,オョ,7識$i\Z??椹G鴻<ャ2ス?ラュ^?^゚xヒ迩シ]フンホ肭y\Z?Y.2怏氾蕭Pu澎gS=Eク燻A笏4O火曾チZDs/「Wケ?-カヘ:永7?;?rM圦?!豎ャ・帯H)?!コJ#(ヲd店4?lゥ??\nx゙カ攅式アヌc%藷 アマ梢Y*Qエ?DH&ウ?3桍U%?ョワ?キ?#ッzXァ梹:?5X・コカ%YnD?7昶Lァex」n?フW紋y襁d?ニ?_ーサ竡I?8?冲:*マ諱LBVュ }dSDネ_ ラムスラカ$葬ア桟テ\"9讚ユ?Qノ? ユZБjチォ徘顳X*ヌ\0伏\"g湍zC」孤ト、倶播-?ユoュフ簇3,俸c xy、I噐EdN?X鞍ヌナ?P静ノン;ウ家Eヤ?キy ラX$urフ?&フP,ホK?莵?\':Vウ9皐89G;Yート??Jワ渣bdミqン?A4イ\Z?*ムH0ッェ?J+芍\r?$,勞|?ッ4?M-?亰?コスd?リ9ケJ3\0?\"ネ?8l .P゚gPトメH{ニ卒セ( {゚$ネラ攻H~芝Fェク.ノ =・タホヲヨ\\モラk?-盍ー聴9^鍄チJ殲?\0ウ精?l&$ヒモ-&迹カヘa訓Cニ-?1mJ?;AレC?Б+、)oォ]mVnh袒ニ+釦Exセ aレ漬ノIn)#ヲ籍?ナノ?!<5蜥7jqヘe唳。* ヲJ? iロ$ulモK穴シアXケ%怱追?e涓モャmヨ:Dpク♂ルWieD朷Yィヒノ、n3P簍セメT品Svツhオ$誥ハカ\"W?愿z?x?;Yeノ\Zォユョkl]?g\'イハs??Oヒ|ハ9ォh?G・ゥル??カ?? セ吋灼\nQ\'エ]n叟ヨtウ?,2JヤWwヘチjy?/ヌ1?(eワ _3g「ュ剩aC」.ツタゥリy-直{Aiチ?ロXウ鍼A臺\r??享6・??pルフォiカ?m鋲*E}L 踪ルUPV陟エ\"!Dケカ\0?\n0Xノ「Es縒Hノ^イ=穰Bナc?ミEセオロ0[?.ヘャ}愼モ雫羯#エ?;2ネHe荘l$(]iZ;輝?\'百)5XmW?lユソ*g本0フbw臥?8f\rハ>?,トィ?5ヨ?g?剪?:;柯惑[\\?ホ腐rWm{[9?(?2?占8?c?nモ険=ィ、セCNィe5萼K%イネリq?ィ孝?オ=I駢奉ユG9?b?゚?*ェ5~Uzレg??/ィキk?ル「タ.汳?w<芹G\'X=+?賣ユ-v彼>?x螫ロ潔Xォコリ。? ?=r?ー單\Zキ.ォOヲオ>「リ2kュェフ*セミa?Bア 刧03!ャ?ナ?7鮫オイCVセ光rュ~[C稿jォメ&\\P?!?イN?=ム*ネ???0m? m*0ワ転温>ッIN?ーVYuウWg?*rV?ヤ? 姫S-c?<ロP3頤5-.rヤ?H].。イワc??垠*h0?ン?Yo?筋?gェ魎?ユ?蕾奪使}醴コミヌ?6ナ\\リhヌ棠g9e?5?Bチiー勅ヤ2モ?|H=tヘ4qf\r\n?レlN? ?!或コ梗\Zュ/モノI,「リ賛pCツトJイV1?2?<;7ア∽g?rMZ?ッdヘ~H即蛹、\\PH??2ウrナラnO?U戌Rk7}?ォ憐カ悒ホ、紿衆[F^゚皴鑠ノ9jゥ4W6 KソワルV〆剱9ーハ*ランhM0ウヒ6}ォe4wツuスコn??9 {cテqト」Aェミンケシウ伏ト?~「C?(\rィk?ヘu?ヒ?yホU?\"F ?C\rC傑ヨ哨?テ魎RUユK]A。シ銃ANCエ喙ォRニdAヌモ\\ハツ46タテ郁?5\rIJノ?iチィ4?4ッXタQアェl8?W「腸YZチV3W却メW淑dv}ヌaBpアYs?ヒ洙」^ハZ挟?(zユeェ蜚ヨ/??Lマ ?蕊ャ扇?b?\Zタ?\Z|?顴q粲??。?&クJサゥ?>Kャr?拶\"\"\'披?y\"ノ 佯鹹??mネぺ%.rコネイフGmュシ寛bナンGS\\ロ柔ユC?Fヘ痲,フ曾<ェワHl瑯宏rt<_頒、S篁ル?ヒクュウ∂Vホ蜜?)r\0?\nホム?ノb?,?ヌ??怙゚ノ復]SuKsフ?樒塢k ?)q?4?G?0yΣ&濡[FH??\0ユ\"s鯔根アC?ヘレ?\0メコクsァェ羆チ罵Кbユ(#ス6Aォヒ%x飽ュ?h$w\nL?}ハ/-?5モDz曜リホロソ^ZI\\鉢eャVJ1Nミヘ+iャQ? J$ウクd筮ァヲマハ|yGコ薇bツ?\0-溺セ萓Lネ? 寤lュ?ヘ・審^<睛_-ーリh迚ヌWトb?t%? ?他??鐶キネq? \\?em?ャ?KoWシホチ}cAv 」?3?!エヲC ゚tル ー常レォ#モァ-ンッp?\"_rキ%XD8E?1眥ュ幌TiPVNヒ?フ!ノ!ユ?Ia\n[靨&Ll祷ル\":)г=フ?焔ウ?;N???+P-gwQMUワヌカクXテャdサゥヒ\\8ミスb\ZAyッBtと?2ュUPテ アDフ?6m?,n\n?箇%κK#カラァ0ZrF(ャロ-??\"責?*?フーハ/ヒ「ィ?R1E8「O?サs]/d撼?/2Gyテ?7鶚h??恬??hノbE4H5Xソn:76\".??8???.ラ1レO)jD|ソPUサbNトvョr9d築アヒ3ヤw??nア?。、b7?頤鎌mK小8絖xyォチ 翌ウ=c\ZッpャBrW?jト<ッ酩飛?N?/ォツ?ツ\"\'謬DETDoゥU|\"\'粧ツ?治Dlv?\0Nッ?TjlIゥ8;舩EЫ%?#<#?0?昨ェ漢??「ァツァ?イ凧W?E?5EN苣\0jgーIトF?ーvN3ン0?,##スlzノbV9ゥ?-ナqゥ???\0レァ??\0歯n\'蚓Oh\"スホ曰?\0カhノyセンモFアオォ襷\"H゚(膂レ?測喚?Iト鞋{ン? 産?トヲj腿1ユハ濆?紲Yロ?bホロカト4ヒ昔KJ9ェc、イDE俾?ノ「エqネ#<ネ7, ァ慶bK瞬ソX止)??)kュ?Cy\nケC\Z*Z3イ制ィイロレ徑?マ.?チヒ2「エv瀧廷凪*\0cL.??莨?3S。?xM燧?゚bゥ)?・ヌ6bUュ纜ニ? ケ}エ艝サカ gJtLH44?X\"?ヲxリ??Hュェ膈~壙[0カ鼠急パ?ヨA\\%フV?=e\r悧Ia、ヒう F絞゙タヒ控?D嚀mサd聳?+エケ箒澹?Nヨロサヘツqフ=タ゚ユリ礪- メyd>ネ~ホ豸樅[\Zレd、?(濆癨ヨ\n?\r9ヲ?%v&[?ヒ湯R??7?ゥ@イ\Zャ?メ\"%牙現*?ニ^?タ槝? B$H?(?ラキ$ア?;E2塞%ルストn7=5ネー.ス裄9ウ?漸臾t覓]kノ紐ワjケ?ロかウyb%W?Aァ.ツミrチフメッコヒ$イム?7]夲?タマコ?1楢s\n?cpスコfャs兪/m.蟇ウァ萬n.楷カ+f鷂nセレ?\0?ヲs.\n2<\n?3\'∽ホ??T揄ヒ?h??Wョモ.?ワZTウ、マ nAヒカ4」\"タレミメW拮Ehヨ?;H\'。倅痂オ?p?5q?;ボtミZv翊ミ?ゥエラ9ォ。3ルz蹄綴?T:?フU?Zリde温6蜷q JDナKゥラ2テ暦ラ縫珠tォエーノM_^Icx)ゥU?ケyネ キjJ斟ヤNd懸?>典_ィnュ8R{圧ヘ 錆$?ラ鮭ー?b????ァヤc垂ヘ瑕k$? 5\r/ミ゙XQjマ8%貧ウEネ亦タv?a\n?ロ?9求モW+?\"x?リ@?,ョ?g#ユR?\nJaナャウZKK「閠?*ソケ*ホメリ{/M}p叡爛サェシスキカ%lepト?+gH:}Yスgトu\Z^゚?:,ヘヌ,\Z?ヒ?ワr?ト戲キン、?セソ?5?ゥ5e ?rvh「I? ?も?.レ?ォ?|浙罧ルds?bk?幢Kァ芒v?&??\0モ\\jサ)CZ&}牆? 篷-Eサニぜd??コ楔X叙>厭瘟「\Z#?3-悟Zモ謇F゚?コ躍モacヤI凋i「|?錨腑?9勘季?+クカY・゙Qhs{皿ャナノrsgァカ0?浸lーgネテ「6、ハリ\\kQ草8Rャ?!:WQセゥ?7メ樟コヒ?ケ!K?? ?イス!|ィ鍄r!フ\Zス}ヌ (?ケY嵌椄藁ロ跳\0ゥ@Y貞A\'z6R?ヨ/モヘ\Z4ャ川?##{M嬾コKモ?$。Xセ?/=xjXD]?サハ」?絮?參T^Qニヲ>エ?=~|D?\'謬DUWxO>|ォハァ?U?韋zx_??\0?Iロヌ??P?ク?\0?コ鰊(薀??ッ?鼈喰ゥ酩?~:罐?熕pv?キ?uSッカーャ> Ipヲ:O5昂Jラ、ュTj3ム?$j/。ZャT?ェ゚OヌO?yX?秋゚カセレ\Z[ク「S捻トK魅~メS]?\'?\'??I}ルリト賊Fア<ムU>????\0hスzイGオ=Hェ且?Jア=/o?+<|?テシ||?? スモレ?#ヲ??efZカォル柱ャヘJ軛Dnン壻丶Tェ;#エMナモfU#A渾佻ERjラ。A3ツ?u#_ェォヘx螺_センユ?0WVeo?>旁?!Cン!i?ッ?#セ~n???eノ?0??%?=?冶EjE+ヲWF#胯U!|テエzn>毘殱9ヺネ?ゥ?c5\"猶\r]?仝糟?CワD複皇:\n纂繦ャr綢?゚?1?s?ネ7ョョ?&?ツ伝鉄?奧KqK断ロ?逢ォc?オ,? *E2トノ%??<7ユ\\ムネe\\?+?ムerヒ>N\r<、ユイニ」[Cv?6SN?ュP 餐?異??0\Z?\0O蒡[9K?=ルf?mDヒ^#;?昔メ?$指pェ_?「K脊:? \\dBHaH豹ー*ッw┣ーュ?薦!S勠アクスセヌ@ ?kツ65Tユノ n~{Yーオ[ 3濃m|?壘?F?\0儕Eー&・=測\\?N#)エヘ硼8\'_[゙VO+励?#?w%s?ス?ンオ?、?誘-゙エBチ コネ屋捩KE \0墨??-?リ\r?驢タ&ウXノr膨ャ」ロ[<チ櫺#Y略;>}?テ:商?ロ ?7??\"F>U????;?i予^+4\rホ秘4r8\\゙6?ウU!モヒ_・サm\rォ%ソエ\\ス簿\\アb。XヒlrKZ。氓擡ヲ?eヌウ-j?リ?0wZ+ナ)8聒?賤イ?&w?^甘628ュ。2ス?!N?3ウJR!&?b.?\"z噴?0b?」?ル?哉蘂・ゥ缺ト汾?rヨ\0mエチ?7\"Xユ:ャェワT?*sWOa樗ルH?碍3吼テdv甑゙?97?rdケB?/(?4mム?7?3X]゚$ル<7dクゥモ振槽g?5、臓<&1 Y」騒ケ+ノS?)o+x_撲x?ヲ皸[\ZA-4Sメ?^カ橦〃?;?:+\Z?|修~h4モ+,\'??C+スレw絛ツ<レヲ頃?ラc?tクKh?qix゚Mg?鬼Y ?オイッ\'リクッォォョウ?\0cK?;xノ!?イP゙棯T?ッzq票カ+チ?4」yヨタャ?\ZGe\\e0!ンツょPーjェ4vア?gク姆-?/pカ#,ツ?<カホ6*#?Kッ+?hンチワ?~サュツモ詁ネ?3オXH?xイモ}TヲT麾ュユ戯[T2[ニウ]ヤ5?bワ+リ?脱\'輩C査ヲロヌコ内p{N>^Aムa)uV:ハェュ<舵Qヌ忤*コ悛ッャ?レ?,レiェ*\'H\\濂$k゚エミp襦゙;??? ?yソケ?ヌ釐。?#ナユ\"クeモG!エ%D?/?」?x1暮Ug]{M廝レ菷j*梦m婪$o辿Ip$Б,肢シ?偬1、ク?!?_4ェ?Zホヨ緬羈レ)h??$Dカェハモ+yムネ $ュウ%鼡I3EZX憧トイタ?hヨ・[VチYフイglv?w+!ゥh・鳥)ウチ?#pvvリ?fEUTU_?Q|x?ェ?桎USハ?os\"xT??\'?Q???マホト?済??ソ床?|?\' ?;゚???」」」ッ:::?S??\0I???ヌ\\tttuンッsQZ萱Z薤kWハキマ?>Qコ?ツ?E?;{???|??#]蛬~Wハ/?\'ゥ゙?/?7ハ?:??>Fヌネ\0?」ォロ5セルe?メ拾d!uゥ4A囃xヌ革アウイァY!遠5ュl簡レョ??jtャロ?1ノ要?I?\ZォM圻\Z魅G暾ワ??@蝶?zr?e\"ンッ5и嬰F5A.丙「ェ\'城?\'??゚ロョノ#帙ヌ???ャ??モ??ハァツ?ー?+賊]?vワu苟&hRト?~><&?ノワN +?\0リ:??>/eヨY鞅脱R??9C?モ?>wBナ?AK\'n]??[Cトルlx\\YテGCューカ?aイ*ホウIソaユ\r 麑殺赭?=?(1モAzt?1(モルYLEノネP?゙ェセaハィ繻オヨタ?6ネ_]コ贊?イル韋*6 ズ抻劵恙~゙ク?\'ムP禮?R?65偏濠虧睿Es倡~ユEOワ靼ョ?サミヤ_(ヤD?メト?ヨ9?竜テ\\吟マ妊?D?廟*セUUU鮪スヤ? gK\r\r侭ZdV?熊P,QネyK?mGzcワ?;?.舩N\"?ェ=ghク/jI8sw?+1?2搗Yヒ?]非?(.゙?ソ位フ?%\\遍?::FNn??\0ーモ涛4c?,R\nルGXス秕$アフ?cTIF)ョ{_ヘ?6ケヒ#X条?モユ?4qCf慴?\'冥ェネネ\0ォ貞藁イQナ@杯。ァ鉄用\"キ鋺?y(#nj瓧ー゚ツゥ lH;y?9ヌs ウ・ォ\0?0??ノッ,?j*).?9Kオァオ?リ?庁棚黹ク??<*゚.貿]}ワ0匸ソ&W\\還??扞)72ス詮(rハ?E?)b|qC<菘#壕゙ア}ョ?c!clM?4u=??L碩机オ?p3?ネヲ恍$jァ「ifGホ鎚ヨォo\r|イZユモ4?ャ-ャ絵Y}ト縦 棒*ユ$丼G1?*サタn?*ッゥ?#S+ョ?{o:ャム Ll磔?*ハワцQ?\0???敦o獻乘スォュ?諡ン殫U\"el$ア縷ヘヌ写/レャv貿%粍?z啾ッオVgJュ歯?カノ^?2セ?毘?ロk?ニa策40ヲX縲tr」aIQゥ7修XナFネヨz\Z孝ァ?nマzゲ・rスハ句ホ?*ェェソ?ユU|??_>~z?母゙7Q礦メ?5<\\?オ)sーキrqヨ_?ヨ\"AVシr堤?${\0/uGユ」モ゚Kliシェ?ユオア虫ゥ?H昃*2pア/6D?4蛸ィd?珸}?閑F9ト?セ>ハッ??>|?\0藐?齏「ェッハッ???ヤォOGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\\」?ツ~???\0軆?甦翕シyO ??>>?非?>畍」」」」ョ}oOケ~ハ??\0H? ??\"*|*/醋#ソ?ヌ?S」」ッw?ケ?逎。膂 翩??-_ヌ?S?\0滂?酊uハネ藏UT?「5ィ??(衣?ヌGGF銷?|?ソo??>::睹sソヤソ渉\"\"\"~Wツ5蛞\"\'ヌ羂ェセキ?\"\'?ttu蹠GGGGGG_?ル?リ??\0JFIF\0\0H\0H\0\0??\0Exif\0\0MM\0*\0\0\0\0\0\0\0\0\0?ロ\0C\0?ロ\0C?タ\0\0x\0?\"\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n ?ト\07\0\0\0\0\0! 1\"\nAQ$2a?q#B贈鎮ム?ト\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\05\0\0\0\0\0\0!\"1A#2Qa3?$qア?CRb???レ\0 \0\0?\0ラ?\0ムムムムムムムムムムムムムラシPャ賀FH?\0l~幌?ヒ?゙ロレナs退=Jォ\'習Z?ンNヌテオ?\Z?Z]・_3ギク∞フ效 u困キャ帯1Mナgbュ^ノィ郢 *チ*\r?9「邪ワヲ@}タ?酲\0濤?^3*ォ3ェ?O?~゚>H?\0ヌヌ?A#鵙_|y_屍ェ\"y?7ヌヌ?Oラ肅ョ?サモ?ヤz?Es??饕ネ?/ヌフk?~U:ルKレソ??>xzヨ、?ムr?{p&ュ丸 }ヤ\\)テー?$フj?mヒネ、 ゚#「Y?ーチンo7$ハ??.ムセ埒ャレ¢痿ミ{]ピ舟u」エ:ァ希77\"Uミ#垈}?k+R4耋?鎬>B_T!Fハ\Z>X逞%hdf(オ靄+エO7i??、興ン?b卒\r側箘゙#,wロ_&co,ヨ群,?l<GPハdナ剖W?1?\"t\\\'゚N7?Hラg?+ニズ盆惚サカU_K]?%O*嗣ス\n咽k壼OK圻Uイ痿^・工ク筐Gゥ#tォ-ヲN m此齣\\Mt息疆_ ??「「n執?恭飢YE働ー搗?攻%スX孱?a+ャ3@? D゙メリ>F~柆T^ヒ。YO2\"カユヤ?ソメ佑?エ?「訓釶gラ?\nIaiミヌ)?\nWFナH?(?月eV餽?憾?憧jW・Y姪ャ?スx関?ア5タ?##?0?\0H$.ル?Kテ オk???X?;??ク\rw喉-?7.テ?ト?オ8s 2タX?fォU?ラC*\"ァ髭cワラ3脣==Hソ?)ラ?゚*孝?|」セ[?セ^セオ?E??粟Wュト|?乗fヲk攴=?X\"XXヨレ豢\\_ bー?\ZQ、酘イ嘉 c]rァユセタgAmd?,ャ?-ケラ?>累ノVO扈wリ0孀ニヤvキヒ?「L鎰△レIゆuユg-+f?鬘?D鰯e#ミ$擾gDebッ?テd\ZH件?)%夙T ?」?,\n橢ワr?6?P?X? ?活町i,エ剳ノNl?Qシ*サK G\0ゥA;k w・}+??「???鼡酊?\0ロョスeォン銜漿-?コ膀ネ?#ンNT$怐ク夐テ;?A?y?% ・菜ヌノ?IZIセミオメK\Zャ从rWr?8?ー壜3゙f却リ?\rヲgMLtnV<{J拒チ8T?V????井?・f 鯡オ オ薐AIcd\'oコア]?e?ソφュ;瓶-售ナb\0?ユ奇?゚?6?\nコ??カ鰕G]゙?゚ 耆Zォ?ハ?埜;ハ|?オ|9為*#碧ラNセG??\0雄=z1ィセッ?\n狗マハ「\"?ニオ?*??ハ??ハ\'?\'GCQ巻゚排ェ??\"xDj9セ|/・Uセ巴#?}Jゥ鑠サ>ヘ{?ソ使」燻リ8レロ生?C%、ミ3?3クハGヱァロ隗_メ?9ム゙Hーー刳?\Z? 萢$)゚M??>}Lサ対v?u\r?-ス芬Bクl??R!杓[ヲア仕\r艮?圖d?ロィ蔽イGO*ナカヒー奨゚l?\0M。?>ロ3#よG恟ハ6a?B蝮k\Z3o?ャ夏C炎Fユ薑?:交ェ。タ\"%?&?6$ ??\0}セヌ鍄oヤX?)ソ?ウoァ?fW道セ寺コ殊?+ \rセェュヨ?ヌO歳?*トぼY$o講Z`ウ??!EF?2 ヨュ=藷(??ョ鈷uR?6u盒q、?モス式卦{ソl筬_*KL?「/ーサケ?!?ca慊%昿??切舊ムツ邵I%Iスィd?ホ{]\Z#YメUkr+ュ ミ^メSQUユチmxAヲW§\n?!免K卩w、探XリPツЮコ#濠5漏=ノXケTbオ゚G渦?<\Z7嶌イイト?ワ鶴チ ?7チヨ?,@!1ウLK?ミI&&?、俣?8?8#1>7=T47rRVY^ラ?6ト$3(。マW?8?q゙P?ロDExタ1^醯#壑Q粂ナs晝鮨??Sdヘ窩?綴 ヲ刊3h=・?@‘ィー乙jfウ$V?RVュ|ユト祢凋?忠 韜レッ%?[L6xz醫Mヘs?uヲ$x2ウ?\"\0?!cユQ?$薦?5養VワャウD\n?k т%ン0セT茉スナヘ@?讓ォスン??Mィヨ暼。{捉」フ{?:ケィェ[リヌウオ勺F?[b?#Bロ+夜。}=ノ\\エ?&D?&ュfIg1,MjZqB敍X?%リ巽YQkXT?潺鯒^!ャuオ8+佻rIjャK[ケiフ n{&4i「?8jオ泌劵踈シーH黎y\Z?ラチ譛\'4゙炸bセ?ョ幹・サ.キ%オ・サH)@~濠:コ質E[AJHBD8WメレCX!Xラノ Gк3ルッrナ? 5?桜?\0Ht\\?e攸2p樺+,?示エkrn(eOZテ「d\"永??。#ネTヒヌ?2W?\rカ、キオ?\0 ク?(シD愿JJ4]w\0V珞>?#脯)g*疼?.噴監:ノ@y&>]ィ(sワyFa睇GZ\0ヒizMゥ゙,+ォモアIQJgーQ、M\rヘy#轟c\n??zχmE」。|M{ロKrL];亂qカ5?エ??\Zオ?I$識6h┰Yッ?t遘?]dd\'軍\\rラ\\ュィr6ekヲ?$q。恨0豹ロw・Uル、E*フ8ケc咒ヒy\0テオ^zラdy\"スヨfSEG_ネメBaQ?KL」ラェュ普3ヒ(RユN朕?H?ーケ=Oレヤサヘ黎q?テナ!棧徴芽メ?\Zメ??、オE?ウV?#{2亭??\n?ヘ羌3ャih・勧nトエ????ウウ\rラ槌孳リ∽レ、vHエZ{~N?5截?hン?\0FEdメプ?ネN恙??ワ????ノ?CI蕉鬣ロァヤC質遜瞥縢Wオオ。ユdケ@j?0ナΥメイE概s褪葬ヤレ癒凄。ール )*、i分m0』?モL?H\0ヤム堂゙@>\\?OMチ冲臠褂?ャ?L=フニ?ネ\rキ? yリ!?:ヤキ???=?ス~ネ?蚣リ?ァ#フエc=V蕪址ャ、蒂烹;イ祐ツ?\0慓%、頡qヲ? リ2?\Zラxo翊y?ネ?\0?サ?#Z萱|?ァァヌ??輟レSWl1\\ゲm謄蝙<ウミ?5キヘ6?GD遇vォ苓??蚫g?EHDnぴX危\\潁}??メ.?;HテMル?$X?i[1vヨスソ鴃秤Dマレ石?゙ホD?斛♯Dk%ハロノ4?巽嚢ツX?(ゥ;暗\0腆?c ?モレwMヒャ介G澱zノヌレ,Z懿3ル?+ノレVア<;爐ナ\rチツ5dl完@lVz:?槿ユ?ユoХスッE?史*?マ?ユUs\nェゥ遽>セl?:::::::T??9 淹KツワO?;]ノ<岫ァネ?3ユミ:R?ュ陰ヌ?トzタ,\n?ー%??M呶タ<ョ?2壕ゥ蕾ヒ?(句=K餠?「\"\"?ヒ醋#モヌマ宍コ?洫ヘ6G7ッ?rセnオ6ヨシmレ?ン?Uラチ ワ。ノ1カgGxメcヒg,\\;躙?sナ ?6l?)/Oロ杭かi\n彩?}藷?l $ソZフカF,]7ア)\0アB7P マ痍舶]?7ホテニ隨、???\0N~.?v尅?<8芙rヘ蚓^サ?9e階\rマ#\0ソゥEZo。ト)fHd漂\ZIシ 0ミIo ホキキイ4ゥメXO卒「i%8I?\"G佰mォ脂$$勍lムオ?メオ?$Hョz+ワ藐\"?Xr0ツ惟f巖ス6\nリ\r?ハノ,?\r?ツ*砒ヘ?衿t。ノ靡??゙f穀{ォィ&イyl$ 」?2ーFVア\\ムヘムタq マ|Qツ???,?%勹ロ7Iラ羌ニ?,チ&$?vX笂?!@;lN?栩P裕@#。逋塘椎 \r?#メ\"ww?e l馥;APλ楝<シ?ケ餔ゥ茨ー?\06?0??R5??;$鶏\Zェ苺!ヒ?膈ナス齒苞詫チケ&フkl,オョ,7識$i\Z??椹G鴻<ャ2ス?ラュ^?^゚xヒ迩シ]フンホ肭y\Z?Y.2怏氾蕭Pu澎gS=Eク燻A笏4O火曾チZDs/「Wケ?-カヘ:永7?;?rM圦?!豎ャ・帯H)?!コJ#(ヲd店4?lゥ??\nx゙カ攅式アヌc%藷 アマ梢Y*Qエ?DH&ウ?3桍U%?ョワ?キ?#ッzXァ梹:?5X・コカ%YnD?7昶Lァex」n?フW紋y襁d?ニ?_ーサ竡I?8?冲:*マ諱LBVュ }dSDネ_ ラムスラカ$葬ア桟テ\"9讚ユ?Qノ? ユZБjチォ徘顳X*ヌ\0伏\"g湍zC」孤ト、倶播-?ユoュフ簇3,俸c xy、I噐EdN?X鞍ヌナ?P静ノン;ウ家Eヤ?キy ラX$urフ?&フP,ホK?莵?\':Vウ9皐89G;Yート??Jワ渣bdミqン?A4イ\Z?*ムH0ッェ?J+芍\r?$,勞|?ッ4?M-?亰?コスd?リ9ケJ3\0?\"ネ?8l .P゚gPトメH{ニ卒セ( {゚$ネラ攻H~芝Fェク.ノ =・タホヲヨ\\モラk?-盍ー聴9^鍄チJ殲?\0ウ精?l&$ヒモ-&迹カヘa訓Cニ-?1mJ?;AレC?Б+、)oォ]mVnh袒ニ+釦Exセ aレ漬ノIn)#ヲ籍?ナノ?!<5蜥7jqヘe唳。* ヲJ? iロ$ulモK穴シアXケ%怱追?e涓モャmヨ:Dpク♂ルWieD朷Yィヒノ、n3P簍セメT品Svツhオ$誥ハカ\"W?愿z?x?;Yeノ\Zォユョkl]?g\'イハs??Oヒ|ハ9ォh?G・ゥル??カ?? セ吋灼\nQ\'エ]n叟ヨtウ?,2JヤWwヘチjy?/ヌ1?(eワ _3g「ュ剩aC」.ツタゥリy-直{Aiチ?ロXウ鍼A臺\r??享6・??pルフォiカ?m鋲*E}L 踪ルUPV陟エ\"!Dケカ\0?\n0Xノ「Es縒Hノ^イ=穰Bナc?ミEセオロ0[?.ヘャ}愼モ雫羯#エ?;2ネHe荘l$(]iZ;輝?\'百)5XmW?lユソ*g本0フbw臥?8f\rハ>?,トィ?5ヨ?g?剪?:;柯惑[\\?ホ腐rWm{[9?(?2?占8?c?nモ険=ィ、セCNィe5萼K%イネリq?ィ孝?オ=I駢奉ユG9?b?゚?*ェ5~Uzレg??/ィキk?ル「タ.汳?w<芹G\'X=+?賣ユ-v彼>?x螫ロ潔Xォコリ。? ?=r?ー單\Zキ.ォOヲオ>「リ2kュェフ*セミa?Bア 刧03!ャ?ナ?7鮫オイCVセ光rュ~[C稿jォメ&\\P?!?イN?=ム*ネ???0m? m*0ワ転温>ッIN?ーVYuウWg?*rV?ヤ? 姫S-c?<ロP3頤5-.rヤ?H].。イワc??垠*h0?ン?Yo?筋?gェ魎?ユ?蕾奪使}醴コミヌ?6ナ\\リhヌ棠g9e?5?Bチiー勅ヤ2モ?|H=tヘ4qf\r\n?レlN? ?!或コ梗\Zュ/モノI,「リ賛pCツトJイV1?2?<;7ア∽g?rMZ?ッdヘ~H即蛹、\\PH??2ウrナラnO?U戌Rk7}?ォ憐カ悒ホ、紿衆[F^゚皴鑠ノ9jゥ4W6 KソワルV〆剱9ーハ*ランhM0ウヒ6}ォe4wツuスコn??9 {cテqト」Aェミンケシウ伏ト?~「C?(\rィk?ヘu?ヒ?yホU?\"F ?C\rC傑ヨ哨?テ魎RUユK]A。シ銃ANCエ喙ォRニdAヌモ\\ハツ46タテ郁?5\rIJノ?iチィ4?4ッXタQアェl8?W「腸YZチV3W却メW淑dv}ヌaBpアYs?ヒ洙」^ハZ挟?(zユeェ蜚ヨ/??Lマ ?蕊ャ扇?b?\Zタ?\Z|?顴q粲??。?&クJサゥ?>Kャr?拶\"\"\'披?y\"ノ 佯鹹??mネぺ%.rコネイフGmュシ寛bナンGS\\ロ柔ユC?Fヘ痲,フ曾<ェワHl瑯宏rt<_頒、S篁ル?ヒクュウ∂Vホ蜜?)r\0?\nホム?ノb?,?ヌ??怙゚ノ復]SuKsフ?樒塢k ?)q?4?G?0yΣ&濡[FH??\0ユ\"s鯔根アC?ヘレ?\0メコクsァェ羆チ罵Кbユ(#ス6Aォヒ%x飽ュ?h$w\nL?}ハ/-?5モDz曜リホロソ^ZI\\鉢eャVJ1Nミヘ+iャQ? J$ウクd筮ァヲマハ|yGコ薇bツ?\0-溺セ萓Lネ? 寤lュ?ヘ・審^<睛_-ーリh迚ヌWトb?t%? ?他??鐶キネq? \\?em?ャ?KoWシホチ}cAv 」?3?!エヲC ゚tル ー常レォ#モァ-ンッp?\"_rキ%XD8E?1眥ュ幌TiPVNヒ?フ!ノ!ユ?Ia\n[靨&Ll祷ル\":)г=フ?焔ウ?;N???+P-gwQMUワヌカクXテャdサゥヒ\\8ミスb\ZAyッBtと?2ュUPテ アDフ?6m?,n\n?箇%κK#カラァ0ZrF(ャロ-??\"責?*?フーハ/ヒ「ィ?R1E8「O?サs]/d撼?/2Gyテ?7鶚h??恬??hノbE4H5Xソn:76\".??8???.ラ1レO)jD|ソPUサbNトvョr9d築アヒ3ヤw??nア?。、b7?頤鎌mK小8絖xyォチ 翌ウ=c\ZッpャBrW?jト<ッ酩飛?N?/ォツ?ツ\"\'謬DETDoゥU|\"\'粧ツ?治Dlv?\0Nッ?TjlIゥ8;舩EЫ%?#<#?0?昨ェ漢??「ァツァ?イ凧W?E?5EN苣\0jgーIトF?ーvN3ン0?,##スlzノbV9ゥ?-ナqゥ???\0レァ??\0歯n\'蚓Oh\"スホ曰?\0カhノyセンモFアオォ襷\"H゚(膂レ?測喚?Iト鞋{ン? 産?トヲj腿1ユハ濆?紲Yロ?bホロカト4ヒ昔KJ9ェc、イDE俾?ノ「エqネ#<ネ7, ァ慶bK瞬ソX止)??)kュ?Cy\nケC\Z*Z3イ制ィイロレ徑?マ.?チヒ2「エv瀧廷凪*\0cL.??莨?3S。?xM燧?゚bゥ)?・ヌ6bUュ纜ニ? ケ}エ艝サカ gJtLH44?X\"?ヲxリ??Hュェ膈~壙[0カ鼠急パ?ヨA\\%フV?=e\r悧Ia、ヒう F絞゙タヒ控?D嚀mサd聳?+エケ箒澹?Nヨロサヘツqフ=タ゚ユリ礪- メyd>ネ~ホ豸樅[\Zレd、?(濆癨ヨ\n?\r9ヲ?%v&[?ヒ湯R??7?ゥ@イ\Zャ?メ\"%牙現*?ニ^?タ槝? B$H?(?ラキ$ア?;E2塞%ルストn7=5ネー.ス裄9ウ?漸臾t覓]kノ紐ワjケ?ロかウyb%W?Aァ.ツミrチフメッコヒ$イム?7]夲?タマコ?1楢s\n?cpスコfャs兪/m.蟇ウァ萬n.楷カ+f鷂nセレ?\0?ヲs.\n2<\n?3\'∽ホ??T揄ヒ?h??Wョモ.?ワZTウ、マ nAヒカ4」\"タレミメW拮Ehヨ?;H\'。倅痂オ?p?5q?;ボtミZv翊ミ?ゥエラ9ォ。3ルz蹄綴?T:?フU?Zリde温6蜷q JDナKゥラ2テ暦ラ縫珠tォエーノM_^Icx)ゥU?ケyネ キjJ斟ヤNd懸?>典_ィnュ8R{圧ヘ 錆$?ラ鮭ー?b????ァヤc垂ヘ瑕k$? 5\r/ミ゙XQjマ8%貧ウEネ亦タv?a\n?ロ?9求モW+?\"x?リ@?,ョ?g#ユR?\nJaナャウZKK「閠?*ソケ*ホメリ{/M}p叡爛サェシスキカ%lepト?+gH:}Yスgトu\Z^゚?:,ヘヌ,\Z?ヒ?ワr?ト戲キン、?セソ?5?ゥ5e ?rvh「I? ?も?.レ?ォ?|浙罧ルds?bk?幢Kァ芒v?&??\0モ\\jサ)CZ&}牆? 篷-Eサニぜd??コ楔X叙>厭瘟「\Z#?3-悟Zモ謇F゚?コ躍モacヤI凋i「|?錨腑?9勘季?+クカY・゙Qhs{皿ャナノrsgァカ0?浸lーgネテ「6、ハリ\\kQ草8Rャ?!:WQセゥ?7メ樟コヒ?ケ!K?? ?イス!|ィ鍄r!フ\Zス}ヌ (?ケY嵌椄藁ロ跳\0ゥ@Y貞A\'z6R?ヨ/モヘ\Z4ャ川?##{M嬾コKモ?$。Xセ?/=xjXD]?サハ」?絮?參T^Qニヲ>エ?=~|D?\'謬DUWxO>|ォハァ?U?韋zx_??\0?Iロヌ??P?ク?\0?コ鰊(薀??ッ?鼈喰ゥ酩?~:罐?熕pv?キ?uSッカーャ> Ipヲ:O5昂Jラ、ュTj3ム?$j/。ZャT?ェ゚OヌO?yX?秋゚カセレ\Z[ク「S捻トK魅~メS]?\'?\'??I}ルリト賊Fア<ムU>????\0hスzイGオ=Hェ且?Jア=/o?+<|?テシ||?? スモレ?#ヲ??efZカォル柱ャヘJ軛Dnン壻丶Tェ;#エMナモfU#A渾佻ERjラ。A3ツ?u#_ェォヘx螺_センユ?0WVeo?>旁?!Cン!i?ッ?#セ~n???eノ?0??%?=?冶EjE+ヲWF#胯U!|テエzn>毘殱9ヺネ?ゥ?c5\"猶\r]?仝糟?CワD複皇:\n纂繦ャr綢?゚?1?s?ネ7ョョ?&?ツ伝鉄?奧KqK断ロ?逢ォc?オ,? *E2トノ%??<7ユ\\ムネe\\?+?ムerヒ>N\r<、ユイニ」[Cv?6SN?ュP 餐?異??0\Z?\0O蒡[9K?=ルf?mDヒ^#;?昔メ?$指pェ_?「K脊:? \\dBHaH豹ー*ッw┣ーュ?薦!S勠アクスセヌ@ ?kツ65Tユノ n~{Yーオ[ 3濃m|?壘?F?\0儕Eー&・=測\\?N#)エヘ硼8\'_[゙VO+励?#?w%s?ス?ンオ?、?誘-゙エBチ コネ屋捩KE \0墨??-?リ\r?驢タ&ウXノr膨ャ」ロ[<チ櫺#Y略;>}?テ:商?ロ ?7??\"F>U????;?i予^+4\rホ秘4r8\\゙6?ウU!モヒ_・サm\rォ%ソエ\\ス簿\\アb。XヒlrKZ。氓擡ヲ?eヌウ-j?リ?0wZ+ナ)8聒?賤イ?&w?^甘628ュ。2ス?!N?3ウJR!&?b.?\"z噴?0b?」?ル?哉蘂・ゥ缺ト汾?rヨ\0mエチ?7\"Xユ:ャェワT?*sWOa樗ルH?碍3吼テdv甑゙?97?rdケB?/(?4mム?7?3X]゚$ル<7dクゥモ振槽g?5、臓<&1 Y」騒ケ+ノS?)o+x_撲x?ヲ皸[\ZA-4Sメ?^カ橦〃?;?:+\Z?|修~h4モ+,\'??C+スレw絛ツ<レヲ頃?ラc?tクKh?qix゚Mg?鬼Y ?オイッ\'リクッォォョウ?\0cK?;xノ!?イP゙棯T?ッzq票カ+チ?4」yヨタャ?\ZGe\\e0!ンツょPーjェ4vア?gク姆-?/pカ#,ツ?<カホ6*#?Kッ+?hンチワ?~サュツモ詁ネ?3オXH?xイモ}TヲT麾ュユ戯[T2[ニウ]ヤ5?bワ+リ?脱\'輩C査ヲロヌコ内p{N>^Aムa)uV:ハェュ<舵Qヌ忤*コ悛ッャ?レ?,レiェ*\'H\\濂$k゚エミp襦゙;??? ?yソケ?ヌ釐。?#ナユ\"クeモG!エ%D?/?」?x1暮Ug]{M廝レ菷j*梦m婪$o辿Ip$Б,肢シ?偬1、ク?!?_4ェ?Zホヨ緬羈レ)h??$Dカェハモ+yムネ $ュウ%鼡I3EZX憧トイタ?hヨ・[VチYフイglv?w+!ゥh・鳥)ウチ?#pvvリ?fEUTU_?Q|x?ェ?桎USハ?os\"xT??\'?Q???マホト?済??ソ床?|?\' ?;゚???」」」ッ:::?S??\0I???ヌ\\tttuンッsQZ萱Z薤kWハキマ?>Qコ?ツ?E?;{???|??#]蛬~Wハ/?\'ゥ゙?/?7ハ?:??>Fヌネ\0?」ォロ5セルe?メ拾d!uゥ4A囃xヌ革アウイァY!遠5ュl簡レョ??jtャロ?1ノ要?I?\ZォM圻\Z魅G暾ワ??@蝶?zr?e\"ンッ5и嬰F5A.丙「ェ\'城?\'??゚ロョノ#帙ヌ???ャ??モ??ハァツ?ー?+賊]?vワu苟&hRト?~><&?ノワN +?\0リ:??>/eヨY鞅脱R??9C?モ?>wBナ?AK\'n]??[Cトルlx\\YテGCューカ?aイ*ホウIソaユ\r 麑殺赭?=?(1モAzt?1(モルYLEノネP?゙ェセaハィ繻オヨタ?6ネ_]コ贊?イル韋*6 ズ抻劵恙~゙ク?\'ムP禮?R?65偏濠虧睿Es倡~ユEOワ靼ョ?サミヤ_(ヤD?メト?ヨ9?竜テ\\吟マ妊?D?廟*セUUU鮪スヤ? gK\r\r侭ZdV?熊P,QネyK?mGzcワ?;?.舩N\"?ェ=ghク/jI8sw?+1?2搗Yヒ?]非?(.゙?ソ位フ?%\\遍?::FNn??\0ーモ涛4c?,R\nルGXス秕$アフ?cTIF)ョ{_ヘ?6ケヒ#X条?モユ?4qCf慴?\'冥ェネネ\0ォ貞藁イQナ@杯。ァ鉄用\"キ鋺?y(#nj瓧ー゚ツゥ lH;y?9ヌs ウ・ォ\0?0??ノッ,?j*).?9Kオァオ?リ?庁棚黹ク??<*゚.貿]}ワ0匸ソ&W\\還??扞)72ス詮(rハ?E?)b|qC<菘#壕゙ア}ョ?c!clM?4u=??L碩机オ?p3?ネヲ恍$jァ「ifGホ鎚ヨォo\r|イZユモ4?ャ-ャ絵Y}ト縦 棒*ユ$丼G1?*サタn?*ッゥ?#S+ョ?{o:ャム Ll磔?*ハワцQ?\0???敦o獻乘スォW蠏蜘獣タ?菷p?\n鶏gキlヨoテネ5.?%m5ieキ\\O゙.eル??鑢*>鴇?樞翔糟bN瑁?ツ[?;yH|bウu}vメヘ#メ?カウBセIzイ _舂ュ?{祥梦莫?イゥVヒ拳{ァ?\nホメイァ壘}ァワ探茸T?ョj:ワル?蘢ch?(; ト?2FNワ?\0ォソゥ? mDニラ?敢フ耽トAウ?需ニ0;豸菊ォカ?\r視eャ$3Ow(_トxハ??a\\ウСムk,ZラZ?:議ィkヨキ?*Y;wヨwィ?$ルイ?戯ユコ蒙?鴃紳僖サ0?ヒ?請桧k6?66モj~-?P蜆ル遏 ラ梧「:?ツロP?-.鐔*?゙ホタ??pGz濤FRvV墫%eQ(Q鏈ウXXNn?ォK!8Qンク楝Tシキ6ムxロ?.pv??ワ鷽\Z??7$?朽??*U#ナ\ZァNG・髓??レjKオセY?2ャ。璃萵?ヤVWツュ?Cヤ?モ:樸ュt辭GGkg%Oッ?__Nj・,ッu6 イHタa|Fホ\0?メコ?@ィマ?d?ォゥ、?vス筑Y・ZiZャカヨWF?,?1オ」=紹?Xコ%ムイソYK?6?ヲアキ6ユ@W8タ蓍?ト??族pH?rン「ヲノモオbネ?フd3(タ ?テ跨 -WO奨?*?k?5Xル纎=ホ7aT」??ヌ菖ゥ?KSヷ*セ6ヌ\\迎ナd鰲ェ4{Iサp\\? ??=;????,R芍{T]?ヨ7殫mモ?!\"l菷Bウnマァ゚゚ャ?黄ェ? 碵Jン ????ニGレ・5d墮Fウ?ュ-芫トBゥ?芟?#ミ}鶸癡岡j6?Y、サー┯8Aヒィ=セ沸,彷浚\\y*5??ノ<&??6サケ\"<卻ネノ??ス\'「Immム<8ヒ PェA?qYhカ i潺ゥ ?pk??dウロマeL\')マ\0?ォイy2d?)サ&ヤ#]ア.???OハオッXh夐載バk医9?*燹l{ヨ扈゛作1?1jB挑TチィpイヤyPムz祇ヨ.#KiE\'?ッ\0{?=*M?*?ムkw、ネサ?M傭;q鯨オ駑Bニ草ト3ホ釵ォキv n?!.Iヌ<ラ」!ィ、オFkG備ホ僚??dh櫛ーA#\'ヤz\n?:h騷|7ゥj、カrLロツ?Lq[??(ワヒ$ヲ7誹}ァ撲zヨ_メ戝セPM$ga$ネ+滄?+xeri\"ヤ竿畦tルR?オオ輿v?\rサ?。?9ィ楾ユゥゥ=メD8較、?9_z峙竟wゥ?セモ胝」?4レ(??\0?s。?.$壙]キ卑[サィmロ峺8?[之ロ\"晃?;ャiセLvQマ??アメ?w-弉ワ\rヨbモ/?)リN?3Rp?&簒レャ76鏑?tヒク\" ?8?谿ラ打kヲマ}lDa6サコカJ(??Nk9蠢メJEmュ?QlヨqI\rエセ+「タN゙???ラャ/モPラng?装xレ>弖ヌ?~゙゙゚Pモ4X呎}貼\\? 褫ィ?2~ユィョロカタ?\'>浜kロ!?8ァl\Z?oィヘ|ォёフ糊ャ:ミHマ饐\0.モ檠ョ?ヾ摺銛ナt?nマ祁Muリ?\rI {R1?\0=岡-フ??O?\0??エ?。???ワj6フ_%?u妨S懴疱9耆鑷?ヒ熈Uチミ??ェ.ミ5ュ・ル錫侵ネ・F絵\0rJャ限z?g?7\"?湟髪8ヤR箱・()JJR?ユ?\0オnォy」?マ}]ubPK-ェYカ??&? ?=?6。ナxWヲ碣?リ\n?/??\0ォチBtマN?nオ\r\\ン(Q臧?鴛テ?Sト@?j?煤!Nル?\0?ッw頏?6wメ3b?カヤ$∵ミ{?\0QXw?,タノ耙d?\0メ・?C$イ?\0??;胖ィ鞍?b9マ・{韆\'&ミ??宜?\"ャリ??/キ;A?膚;?ユー~醤un「?」シ\'タウR誚ワ7戔¥c麑??コkGヤzM4?j贍5・MJO\ndチbォRTgモ\0淤ャ黝Y_亰肯?鼻W#ト9?蒐ユチ?\';?h浜ィu\n\\ZhPナ-チ曦b楕゙T述ヒ?y>ァミT_Lロ:jqロ|ネYw,yB・dr蛆?ホ}{U檠?kI置G壽0ヘ\'佝ユc? ネ?jキ「+$?ォy?q1?ヤq直wワ後?ョ溪ミ??#_リヘア゙K。g疋q,決86ワNx??ヤ?逮戯・稿?#?@ワS鳰y?5s?エ霄q?-J贓ァロ#B ゙=?A?ク?Unメ゙S,ム冱92I,?? |ト苜カH?3哘?#ルウコnhcミb?xbゥタ^1゚?<鄂Z?6A} 7{|ェ2゙ァo?ェ?@ン・?+q?擡呷sタヌ;N\0??ミメ゙メリト?ラ?}ア^~mZ5?<%゙キ T?出ュt]ル 莉寂?超~、cト荷宝κホ>オ?F巽庖+1???「?レ「レ・ウハLM$クレサ.メOcマ>壁?靫m・サヨ??茣Aec dTb2ワ苟殕?\0メ「_Rキ橦ツキンx痒ケ★?ホフp=サ\Z軛カコ悗炭ュ-?1・サ#2蝕ホrv?ロ〃Kエー{e既mVヨ1トj6?ヌ。>ク」uリ+?>迫0エ?#x゚攅??マq?3?u4ミ? w頽欄LAf?\r?<b;逧皚?ャ:DN!??Uヌミ゚zヲンkニW⇔モHトS(\'モ市?\\sVQl??ィ??-?.參弾o$ッ\0ロ鶉qヌj跡z榴瞶rTyJD??\0ソjラレN耀ィ・ヘユュ籠訶幤}6?~暎レァ5?3Gキー孛瘋?(フ?#遥ニ=A??J1アgN」ヨ\Z~頻?Kii#zウわ?>ざァヌmJモWメ弾ユ?瞰?ル倦ヌケヘNkレN砿スンナナュテ墜エ|瀬ホ8?・u}>{M,Itd゙.僉?9+焼8?vx?昃フ萬コ8x坿@6?#\'ミ?ニクー?4fF? カロpンニ秒?マ:lj:ホケ5ソ?立セロ}◯w塑B須?SV 0エ穎ャ゙ア*コHクl彫}マモクッ??ヌヌ2奘゚??\0」O ?Hト?>ツ\"コ?サeL? マ???]ネマnォplO? ?3ニ@?オP4xdモオcムゥQ\'?m爍l??\0浜]0テ?n\"r、鯛* モモ常^レ?アZ\\HXユ$?bナムθ繿エ?\0^qノゥ~?k]R=J 囘エ;Nワー*ォ?sマ?rGレクフ鈑~] I9?5ホ?o偬戌?xヲ\\姙? }k np??髫」v?8ォルヌッ綸{?V??3x葦?8=ノ?」ル.影muェレE゙\\.Zホ@l?5??\Zニー.c施・鳳cHリ\0ハシ蝕ヌ聆5イ?fハニマ葱Xンー|uン楢@醺繕mニ?0トイ7.?.キィqpネ?<}1?+F唹j[マ5?Uヲタワ岸クワ、 r}?]ww36ヲcソ?+?,フ?審@Fxネ=ォ?}{? レLKG暃テL} aノ98ノ筝?L尅%塹躄μ0?y1ル08なr>?ス}ミ-「シ2]敏,゚?6^迺Xゥ<州\rH・、[?;ネホUNTcスVsI髄\r2F卓?<ィルャ i隙s裳ャ2、I#|マ府ニク?7?Sチ\Zエc??xェ]敏LォMhィ]?答?テ籤ク???、???C?[ナ赴貌\\?ア4觜シU゙)e9\"L?Jイ{0徂フキミnャ?セkYv)\'テ?\n壁ケ?N}サW;ォ學俟+?リ茂y;[シ」触オDMィ齧Rサ窮?e誹ンマ茅ミ?-H?tィm\Z~メDフア;? ?\0・Y5ム?\rア朴c夏]ヒョ=q状?Hl?-:Iキ\n9ldc8?Rノ「^%ノK6ケリ。ナー?鄒?=+彝\\テゥZルhZメb゙4アN\nCエg櫻ンノマオk]典Xコnレヒィ4ヲ\\゚ンZ?5&v!6察q??nユ/モW:}柏iーNキレャム?\"kH Ul栂ノ=?8ノ?Hホ系bむmA咤クh#a?セ\0艘?ホ*ルモvM ?&ケ-カオv?墻ゥ%qタ?;G9臟コ!皷.ノnムivfYヲ_(\r隻vs?;?U?86?羣ャ8,ヲi?? ?Q?\0,{?朦k Xヤc??嫺フラb=?トqァケマ~}+オ:/ムンキナ妬ノヌ<ラ&公?>勉k+、{ヲ\nッ曄ョ&顰テ+p=1VL??\0ホrjィ-?2フ肝∨?オHMュレス?? 6ミI栞??譫6暇u;Aノ\rヌキzル_d\'eWQシ??F?旬g?オ。zソZ琉コ?-;NAh鞍0ヒ?$琅??・n゙ココキ~太?%ヒ「性s?}x5「4K?2rレK8ト\'ヌ\\ョw\03ノノ?=?モd3u??J\Z麿m 6b)lウ?Nyマゥョ??[鹹Rエ? s???筧?蹲ヨ?wンヒ ツ因?ク?ッoヨッ}SヤVvコ8}樹?F_?.スア??ェョ/O膾Sミu返?s テツ督S\"性檠cニkォ? ?\'H}M?\'?a ?(f?C餠?~?[-\Z?i謀エ廚 恩?8\'゚N*・ゥyq-ン??s鴻a\Z7$?Ol}Mk[イ組{ 覧セn\"ー{hルケッ?\n~?g?オR%瞻曵?キ=シZEュ?\ZEg暖レrI?9#ュモ^[T靼R畑櫨\0・)@)JP4?シuK怯茅/?2ァヒリ?/yフ^y?\'ロ??kTi@**$?ォw?ィ]鸚エ鵡mpTナヲZレZ[耡3\nフs?\0耄?モムJL?衒?E}?メ」Xl耄?8旁w%?ィ歙ヨ「 リs?ユ?e玳?厖6ン、d.~?8ィ5BnシfBeGv??#^?5STメ?犀D檀「ン阜??/\'致ェア#ヤヤgZk y3ロチ\"」;ニ缺q?5ow??ヒqwng祖M? カ|ソヒ∝?9ノュ{pn=?<#rlオ盆攤6メ[ハQ彊Tソ$.\0\0薩{J螢゙IQ)ケ?)9?g*A ロ?x?ノz?「三r)Aエ2径NA?慵ロ詭鬼qn?ト? セヨ??0ル懽ヘVK{?.?惺?!ー{S\r鶇「#\n?.??,qそ?8ヌスP? タルツ牾?\"チ迷>oAタ櫺リ\nスh衲M学ケ竿?4[Ufcョ@ケ,??X#oメ肪q}qi\rコKコ\'ケ $[ー\n。??5ヘヘBモ4ォ#コRモュロ? \\Dタゥ\rノ?Ejヒ#kト?wユ??9?モ齋ァ}、u称ネ授ケリネF?0\0?\0#ラ妾ュ透ネg個トoニ?「」?L?リ゙J]蜿jコネ#8ワ~テケ?HK幻]設+|?ムヲX?ヲF)?\n[?Hスホ+ェ?贍。t淵PI\"ネpA?s?qYs~?+メ^i?+Giク\\ウトU1$?ヌ\'ソoJ?カカトマ狠$?ノ軫9テヨ」.nュ/dX゙??;A薜ソヤzAレ・h\Z゚ャ・セーア{;?2ZM?$?8?Αィチュ+ヨj?レレxモワャcフd ?\'メスヨ繭ゥ介\\??\0?#\r?F;V埆ミn奧?賻:イn9瘍\0}*?%ルV刻?1驩?+互H。B?8マ骭ヨNオ。セ蕉Za吠、E4ァヘ$N3ワ?\"ュ?]}・ス?\0Mル靺Mワ厄 稱Dqm??>オ龠滝}kO鋤[屑<<2カ#?>ヌ?8肭^_ユq<ムoルヲ }ケ/ザkー\\Fヨ?4bi?クE6チAネ8?ョ6邦lー4ヨ鍛? ?*sエ1テ0?*1ヨk=v;^ェイ揖?RIW\nT7。$杁歃Vナ\Z5?ヘ嵳y\nF?\ZCェ豚?ソ怖、葢?z倭榠*?(YL8ヨミ蕪ト普Dル炮>x\"「ッホ?5メ」@粛S?GコBルニ纜後キoZオ?qe稚?LツD゚ノ$wタ???ヤ1G?0ネ@oMンユ?鞘・D]ウn茂?莞黨KOオキHフィRW |ソ衛?~U9 エク湛?\nI?0MクfP8>リ蓙ェス9ゥ゙ロ?豎?陵#;、\n$c厚?V磁エコサエシ\Z{絃Eソ*{釐ヤJ/存,球・?椨齏MB+msM?(?4j」!I?・EX?M^?゙z短ヌ5ケ糧aトe@*。@衾0{ユキァ?蝶?\0?ヨDキE%2サ旱>e^?レ」?I?カ[?\"エ頴&Nヨリ舍タタ゚ュk\rjG沒\Z謎逸>?.孰メノ?ココi77hP?\0?\"==2s?戚ハ\\食cチnOoスci?$V?。hュ3*8\\?\0褊樂?J便。??9ワJh烋}ェr?ィエャ下キクケ偃\nロF@珞コe?<ホ+%bH?v瀾sワWSDフヌs迩&ケロム\rH\rサ@軟k\'・t疫笈?g??ェ?\0=Mc゚Fニン?ハF03霜ル゚\nャ縷耗?ナミ゚ur層?!ハg 戔ヨ?!ノ?/hヨ?:|R゚4ラv??Dルワ??゙サ:]m#ラ-m>V\"ヌ?ヒ墾ンアホsマ躱痛hmЦ ロ 、サ??# ???Z占~孺vUケk=El偏ルbカ 7ツ?タヘmlヌル}メ:m岑uオセhマ?Zアレー?\r?キュeロ鑿Bヨ窕ヨユ緤 ーケ?<)?\0ヤフAワ、qγ?hン?」鬥チヘト??9YH酔?柔ソo・K??[ 5メョヒニ6?@s操=ウ?+カ1]「\"ロ」ア」レ゚?7短ノ&ヨツ?_??ユヌ・娟y!? 販チカo9? マa対スkZヨ椰Eimャ1ロX妻\nネG8?速[ホ」??}7L瀕?9?!(゙lN{O#カ5ャxナ鑼^uロ?nマn?=?!?Rssrセ,?F@ロ飮ラス_ラレヨ舉Lノォォ[ゃ#[u%0Jォ@xマ<ユ5?穃Nmb?b?|ν稍ハqリ恠勦謀7Nオz僕?&@ロw貧?涕jアヤ抔c・i^ワンx nUーX??ュRンgィ鷸惶\\ニ??\'偉qアO??壅?コ?ユ?奐亊・圭ルチ?(X?,=[??cム篥?オメ(舂Izエ?M幼i3-?喘+タW#8?ンサ昿bj]Mwメ?レ 昼?<)v窮? q?;?9ュYム\Zォ鮨O・up、ゥ$碼g?#?fァメ+}WR&レ鵺嫻繊Yモ |ヘ?;?゙ゼユ???kモ?マ?コツ[?V?圏スモ狆?#??Wエ?ハェlユt)JVd崖?櫨\0・)@~v|dユ歙??\0ヨコя$F-M?ゥ$lク aク?3リ獸t膜ム=}\"hk{mkx?エb@|メ?淳{クェナト2%竕舞? チ?\rcワ\\Kss-フフマ#カ?\\?」4W nノ03\\?;?i?汨ェWン侏rア゚4?\'ゎO儻<奨n?7、j--?輔#\'ハ@ニ9$?v#ミヤu??)$V席\'竪?+2アc?\rXy???頻鑄豸麑ニ?_?\'? ?ケ?9爲ム2?tレ?ワ,M擺m購{ vAネ淒彭Uk艤N@c港pX* ?-?x#セ9?1ーT唔?sgtェ? ェクHリ>WUz恍>ク?ユ、ン鴾?6ラ.ミ(O:リR?ネ ?c\\*m-啣「j\n?6gハサZ7???cロ?\0s勹\\」ヌ窩舸?? 鳳ェ?托ホAマ#゚↑リロ鬯Q?乞8マp3?ルィ{[蕚d樢Vh?&U??(F2カ3錫qQI?T?・o&モ\'?4ク゚PW?;@#q\\牾H\0洫=。:#ゥ5椢ヤヨレ?橘fmュ?チ??9ォ?SOuwyor?マlI摺\' ?緕a゙[靺ヒケケe斧l4\"3チgc>?豸RuRDJヤzkY?/#ユ碵\n保.璢暸醺嚠?9 K?ンニ-#?@}〜<ヌケゥェヲ側ョ?4ーxヲ? ォLタ?9#!?ヘz?.\nワ?4翠Oe淡lgセ\0Gノ豌??イtナ?c巌x珮v杵轤H<??箋竒ラJキ属装T??E^゚ヒノ肓?}Tウ6pヒ%?\rE械眼ピ?=@?ヨャ−]?詬M?&H?2gヤ取ゥ\'LアKヤ:サC?-シW?[ト6/ムスG躡a?Zンo・?8僻BハチI?ロ5ヌ]魃??ッュe~メ?8???ッワネR[{p?0\Z-ルq??m現メ荼鈷テ\Zィ??*?\Zヒb痩-?3?Vァ???QF??%メカ| c?!?ヘ?\\?OE速?5hキ7WVレ克?ヘ?+ナ#d揺ネ@ス?\n=ニx?e??z莞絨ア\r~?TFDS?rワ柴?レケ2クiヲuc碁ヲ栢ミスー?6カ瞿r9?k嫋メ^=;?[-=羝6WmケUW~?N}y?鳫ヨ)Cハ惹{ヨ\\?/?%d2リfE池T)\0??*]??マ鯵|61?8?+會」゙Y帙aネ8Rxヘf[ンチ&ユ芳9ワ%朖槁゚戀ォRhニq潸カ?モ[?8ュウkyopャ^M棄GカA?キュkサm:Tヤ--&キケ單鋭C<\'*Ow8?ナソ鼈狎[9オ;{Wh兜宇ミAチQ実c??]p|VノZ;~\'?嫐z4?9R?\n?谷7!Inハ?桀畜vェ#]?7??j打ヌwxNネ?7(マ厮>暝zfサソx馗Uス?ク鬼懇UH|\rヘウpn1? 炳転]mュ\r]!鯱/M[ ys?\0?榮n?ハセ9チル?ェチ翩」?覲ユウユW???樢XB」テロ?、?_ケャ霄O・lV??X瓲7s。ニX?泛ホ}ソ:????蓐]CQ属Z6h「FツFロvU?0鶤|エ?サュdGsィ5セ無???g9ノc鶩Oェソk\'カ^マD^Aモレ^??0ナo祀?3u+0ンCカ??yロ?<2~?貫ёF}隲フj@チ9?ヨP??ァ~ヘメEo+3ネェyuマ庄ァゥ]ン_j}ト;T?リ?翔羝テeキMス:岸ョy/\"V?*ムQI゚nGqU?ィヤ疉nュ。?9ヲ$ ?y8?]\Zヨ。0サ聞 昿H葩ホ6ィ熔Ojず?鐸,サ幢饂ニハウュ愕9&?ワラヘス???゙セィタ??Xタネョャ染ノ (I\"セm%ツ取?U?イIオsヒ壻ネ囘VワC1托_d誚(B?r耡ケェ?エ?q??レVN\Zノモ澗?4??9?ゥ$チ?<ーォmrト?Aチチマキa轄rラ#ゥノ\' 綜I?\0ュf?巍ヘy$?aN*=?マー[ェ脛?>タVさe借C@\09ホョb6]」9篋0+o臈:?$ヒβツ繩ェ ゙ソー~「カ?Zリト\\?\Z=ナーリリCG.~ソ??゚U???Kt湶??\0鰕_」U鉗_勁z・+ツ櫨\0・)@)JP料臺.!攸ヒク?Nj縉?Q?劇涜マ?ノ?姫韜...d噐圏Lマ#湯フrI?mO?ヌ}ャ鴕ヲc ノ:エ??\0???a?>8? ?QY]畠ネ>o・vチ葯゙Xヲbゥテハ_~宝w?A??2\r2?m?、SオDK\"7÷>」ワ}jョ預?\'ャ鰛ョ棊@?シホ?>?2u;v%!苒v}?オッ?tワ[J?5?Y2 ]ウ?3?+Z?=eモキラ:|Wメェ$?蔕#刊ロRzeャ?ラ\"%+ョq皿giロン覈ト2\"敷Frテ??X螯??ィ写ン?(繿フ;?dqリ?須?奐ツンP]、6?3ノ?;I30苔リ?=0{qナe?? ??4?ホJ「裁ニ9ヘW?ャtm^kヒ}:dケ62,2シg>b3′聚ア>#kSョ?m・Kサ?シ?WO?\"ニ&#0?9c欖?>?鰡(jメFヒlーナndf9\0?ヤF?#綻{K?タ??楝 軟G5ア?6zハユN造サ+:,コ坂套?業ナニ =サVoマtソFjPO%オ峰ウヌケg衛?エ\r?)<需=マ#ロ5?_脉?ヨ?-ュ1jモ[?-U?}P蠍゚Z?6H?9e?udヌS^kw]=q璽ィ・弃ミ??キ3gヘ?08鉈Tメ。K=\"dぷ>aルホ8ネd1斃ラ?\Ztフ%[zコヌ〆?4?サフ2s?1]3テ4nfイrH??\0x5??,I?\0ネ ?\rzmモ雉\\?66ヨvヨイ Z}ナ看?A?2}ェソw|ュ)?969\'*{??ォヒ$2ホ?m。s゚ヲコ竭Fソ臧「ヒ、屎??セsレクJK9ンノwョxレyvzc慵\0ャ\\カ蕀GメュD\0ヘー/饑_ 図s_ネeハV??ミCセS?*/>ク?B:ヌ膝ス}ホs_$*メォ?OリW0pリSリ? ;QW ノ??リハッ8$歃ラチW9ヌ\'5マG#歛TeL孥父CO句(K}+ェH゙゙?rビ???ロ般\Z5ヒ/9\0?竰チ%、。ルrs変9?lーシカ?vハw。ク?P?#?マケ}?;H1ク艨X2釡vqTh道?=壟+ラ@タヌ>だ@w。B@?ラハ?X?\"Yカcマ?\09^??[マ?\0S楞Fォ??>?\0?餔ス??\0ゥマ_」5テ艤ウH?)JV?)JJR?R箱?/>暈Dタ?&Zレ}/m&渫コX?エ]ヌク?滯胄ェEン?‰7ィ?ヒgヲ?Vヨ?$G??X貍釣翔<{i┳カNH\r攸ョ\r}??I|~MHエ~ミ?モュシ*cxト」杁??Q湮オ┿サアュオ??\0愬??41\n?ゥ????1?5ゥg?。#ヲレハiI)GU?#ク?WrZ0ハ2H9?キ??5メ?+??)ャリ鋺?ォ[?坪ァ-?:\rュ?鎭y纎?傭.ZT???マtヌ チ?ァ??~哭0@ラウ^cd?3?O?*r\\コ&砕ゥZマゥノ\n[タア妃Zyw宸」?y?\r?跂M黽者sヒニV?リ*?チ濺wゥ??>ソ\r筵ン?棉ヒ\'暝托懊?標セ オ}M5嫐酌?hイN\\焦橡マj續・L#Vコeェ3Nセムメコ「N「鳧?・KK嫖a9 ;M?;]sリ??AヨZナヘ?$囎チ?$lQリ恥aネユjメ企92ヲ襷*BL・捌欖マ?Cンeソo栄?トワ3タ;\\R?ワニソ9蠢ニ]?\0ソ?Hョ陛ロ<ムホ蝕誑$姙*?ト(?粧ォv?ト肱ェ?O1?q倣蒼マッュj孳ンoa?姫聡lgケ>ユxメ蠏オ 桐yッ\ZLQ?*ッ。ワ=???5ヲ\\?)?蜘T;JGフ?ヒ?lWmヨ殳ー??.1クvンニpq\\4??ヘエ隻姓容R6?<タzカンnカイ栂ャラN1$[T?鞘胄\')Oムチ?&、「?+ユ]Ku}\'ヘN|I#?e\0ャy?輜苴繍ヲマt礫“!ヌタチ?肬Ybx??,?.?{?5フカニ ニZg9y[モ??ラヤRJ藻b「ゥp曹x?pヒc$d?だZ@ラ>H ヒゥワヘシ) ?H貅 s妃ケVニAネネォホ?テ& B?\03g?モミW\\_?ヨPカ? 堀笆Pr゙P?梼ンサV4寂」ーノ?アHF+咯ヒ??pロ?cハcU.チTO?ィ「\Zウg霍Iw・オ゚霞?Gmサシ#?\0j鮭併%ムn\Z(?エh^Uiv8レヌ?\0}アPン#vカ? \'却?、?部恊Aマヤ}kキ?ウュ{Vナvhc@?>吩?yク| ?ア???潁勳巵?スオケ5防 Af∽?\0@ェシ肉?T,? {ラTI#ロ鑚ロキq[ヲ?N・騫-ョッ鶸「4E播?\'8c??卜F?#ァD―i\Z?ISマ??O慨qッ?/:知$ゥモ?ィ鴛サ+0 ?\n??コ5$vヘ}コ祭?bx膚ユc$pqヌlラ\n@]カ?.1?cミNフ? 白%レ?フリノ?,0兢c\'gユロko$ミeUBサ$=@?)僑?ェ[??7??8ルQィロ憫???滞ヌjD?7H}?~??t?]<メ1d?マ??)ケ咋mg?*ッl q?@aネ0リマオ}叩ネョ?黶リホヨ、-?ヲオ゚ャ???」 ナ?3D?f+?\'ー?\0ア]kオ[ィ?鴈ヒ菘ツェ9%ウX?4aQルT{3r>筧(ヒウケKm>E@股蚶朶?隆ヘ/?+?艟ウ??:?/?? ??\0Z?2JT#? 切?Z」D?;U許~?;((ミ?\0?セe_カ撞?FJイ?.jャ盃テ線\0q?+コ2J゙N8???pマ餞Bbキi|ヘ?鴉X7D「?#ロテ??\'メQOuY.??・エ剩?D?竟~s~ノ6仇??エn?祐6メFンカメ?$舟ロ~???ョ#?G。JRー,)JP\nR?櫨?ラ?Y??\']コゐP??フ??Tョァk$ウMp _\r」゚? 」湶?溏Cmsi??篤R;ネm\'?銖?カ?2?ク?矧ラー???p蘋?,??%蹉ZYテ+愼ラカ0ソi\"゙D?=リサ??ッ濺vタネ遮ウコ?レe?m?\"レ[ォZ珥ィ唐」?U=ョ」0?(?4早?)ニ蠱?+キi_ヲf?*・n$Uq絃? タ??,ヤ児i?\0ハ.?>f8R コD]鱈?胙?\rネ耨5イコ~゚Lエ?サィBFトo雲pニ ゚タ?ィ?E\r\0 *サgoッ#ソソaW??螂鏘?\\ノゥレD? 7)ネレ蓿xヌセユ!ェチkウ?>]?拳、熨゚湟コャl・}\"?6喇ネ1*蝮)f;モマzネ髟ユt?ホ?-aケ?ロ[フO?8TrIン?アェネ忍?イ?1?\n?0。??檠?d陏、Wz\"駘嫂ノ?)蔗=ウ桎オ物h?Eユw6VWv旅AZo澁ミ ネタ!パGスV?車聞外胙葯sア??ォJJ?\'tソ?イ面y\\慶?Wニ}フ?.テ??~\rヘワj? HBコ?」?\\?70衡髻ネBア??z」,rミ・?\0ト?森? (9>?Zロ=1ム經糠X蜥7Lx? テレ1怩[ム寃梢jホ柧若n?-??愛ト」?\0d sニvラァ?i???AwョO? b?課{トd(ネンネ苔訟μ宸ム、?? zr?メレ;ロ曳゚,?! ヌク=?&ュナ踪e君BG?bO}ソnテ?aゴ+{ユ?=:爻#テ柝ム+ウ1エ?1ノ?ユWユコイモMケ7レ公sフ?Pン,P[ヲ7aG-!ハ? 恥8ッ9ツsvヘ4Ju]ナ?・檪叡l0\nェV゚?##ソョjソェマゥナモr?-「、Lヨ?@8fマp=ァ躡竹Pムオ?%ュ?ュ|ィhヤ\\ャAラムs收゙ソJ」|d黜$ウ愁ミッ.ョ??タLe?!マr・i rエ?\r「?3誘ムョ?5偽?]呶リ.?ワ?\"ァセ\Z?\nノセ[h??!S.?, ?;?ァ゙オf、D憩Iv@@yヒァ\r糟?sX?・~o-。エコKyc>UY<ワ?8?ソモ耀ァ゚Mey 岩1ネ??wD??但bム@N戟キcケニ8A?lu9o$鵁レC#?\'福\r擾ュi v!?y N?}嘱?J儲 \\クス?+欠ub;??スWnLLニK}ツ3ロ\'弖8ラ<c/?zdfニイ~Pコ?tQコウH適サH? ?ツ釉」エ9?5%廿ヤ.\0?+n^レ陜CモノN愈イ・e~\'\0q?{U\n]トワ a胞?71N? <ヌxQホ\0\'ー>オ肄?聿??ム?幵ヲゥ??\0ヌ?zoTセモd?/3x憎Jイ蜃| ?/NコメuK9$セ阪蛋朱タH?1娩゙S?=9豬OCチm4ヒh慮ホムフ\"I? レI<~筝\rャ3ロォャメDカォ鋲? トc*@??X鶯」ヨ源F珪n?+?Oシネ、ナ W@ヲホN{?bオ゙几mア(?)?。$Maオ??・mD?;オ疏触 p_ハ6????\0bオッナG記ヨ?.沙@I岩Drセヌ゚?ァS#i_チ土p?リ?o褊ツ]?ハ ??暎Z/ャ?ロスV?Imアフタネ ?蝕?澤フ靭ZN。ogy,浄フタ;舮(@#=ヌ?博ニ{「?{?tS?ユ?R???f?6エ|Fウクv[ネトx1?;W框ヌ5ムケクhcrP擘⌒\n直?{Xレ?/rクテ?2[?ァゥzF}Fエウケ?\r0\\^ロ ?H??「I ?3d?ネ?=?苟價ヘサキ?IpB綻W?Gタ?m。ケソロ7?!|I!@蛔ョqワ?_|ヤニ册」]_iー:コニ阿o\nR・、*ナイ?0?T?=&イコ7Fモ?ィ,/oRツ[ロ゚レ?hムネレケ?ナ|タ wゥ薊?A\"イユ%?ハ_r2?\0.\0?ヤ樞ーB???スjロラ}ィt郵_?盥ケ壗1!?)A縦.虱?2}ケ?*ゥh拆v5hエユ「l22 zzW;erX」 d戀シラSキゥmJ7ケ壺ヤ3菜?eヒP?.?種&?>贍K\'竒GS ゙.ユDー 鶫ヌ|?X?.?{ク?.$トリ$/>?オy騁メbqomk2オリrテカsレウn?ニニ??拑8$FUA=?湟ケryY瑙bn?\0?呂,27セ換Jkイi娜瀕昇ニフ??讃j}\\;鉾゚験聳ョVスC「El?rネタニ・?NO睾yシ{T^オモ?S??,カ$0角;脩s?ュェE5アq??ssZoソ゚?スZ躅ス擇榱・Er?p?^9ャュRE葡8ャ雛($9?Oラ?:轗モキvモ。?O?<◆\\?vG\Z[ヘqト1*医゚eロ??)<Lx貮用vuB\n*離5ャl4?ヨ??喀ャミシTc?9ノ?X\Zm功7?ヒ&酢テ枳\"ハニ??セU」?砠o\rTg??ゥル?\'Pウセエ?$? eV\ra蔆\'?ヘCマ?.惴LSKnハ~ャュメロN?d*@ニッレWI[??ュu0?1Zル+??ワ借 ?オ]芒K}?\"z?Bセサ? サィ?[友?dゥ岸?涌i.ウK\0qィU靭?^透リルリリ?,e\\Lサ續? ?{淇O]_リk==u、[ロo 9Pル?ニ{?ョ\\宰?トュセカモ4kォ)gメルY-紜?亞銛豬旡ノ竪& C?\Z゚J? ヲメ・i\Z套SホN6燼?Gレ「5?)奧?-md睨??!#クワ}ハ??Z 、、N\"mンロ゙サg俐゙)e1ワoュLノg~?[ャV鵝ト0ォ??ヨ。?0ヒ;[Gク?B1?95k ト層灘リケツ?ヨアn擁?v8セオ?6U6ーa憎Mt???6yr*券,ュ?2<ェqサ\0{滾ゥ?ーCホ6?/? 嚴メcg介Yキ?!@5マX洋ア????篁゙ル+」o~ツ0スマヌニ蕨?壮+asチhモ殤XWセ??:?\Z^ェ?\rS\'mス雰ケc2;キ゚?\0、kル?吁ル、z・+\"ツ櫨\0・)@)JP8?コtサ媽??1ッウァパi\rg\Z?フ?モ 廠ェァLワC.?-ョU rZ*?Bッ条+i?\0?\0メd}」z侵ォ魅=畿珊マpテ?>X??\0V秘kクVレワハNユ荘ア゚k\0G?\0?+???.X?8?F?M?:?24瑠tJイェ(mノX?kMンロフ壼?乢*hミ?l?? ?\0Zン?\nコ?;ォqァ\\ync醸o焼蜿セkォィ?zi+ァD屶エ卞締.N<2}ーN=ォォW劾*縵F湶獰f辻u?,1ロィU署?9^G藕/モ?Kwi[7yミm2>??Ak}\']/?:bp?ェヘ?sヌロ禅ュ;K桎椏蒟?;」76?>メ\'プ?8ュ!藹m羌R鴾海j?\"ロニ3DQヒ)瓷遏Nテ?ィヘn?鸛Nby-?ツェr!P<サN?ュテmモV7レBュ鎮mョ%ゥI??コョK/ーq?ユ\n?\0。g?eシ榛マ=ツ孅ト2マ%ス;|VアヒルハMスニィラ男6?強ロ杼輌f8$洸<讎:ヨメ[?/?゚ム?$詞d? ?*?vs゚ミラU・恂スC??コ?カ ?リ;?鸚ョ繩?モ鏑?\'?%&)# ケ?3,pケ\'セ9ンV入織6都ヲマ」M褥オ?ヌ??3ホ1尋櫃餡oq}ヌ &dヂ釆3?;忝V=スステヒVェ&yホナ@99ヌW;ヒ;ヒ ノャ、 ?aシ2|2テラロ4iY$・楹{ァ゚テ2\\ゥh廩璽#p?F?6カ扁モ」Rメ?\"キケ枇77?VUQ?8?z?R2HH輌 干h\Zヲ瀕g2Y\\Ex?%フRス ?$(マミ?/燥?/Qコ>0鞏Io%シ6キS齬\Z?!?#独?8%W\'\0gjAp?彦ユZXニ9\'n\0?&ーP?#Lスヲフン;ッ:r?擬ヒ9ャ?」オ?法ク?ヤz釀c?フャヤゥ壯マニ匚オ(ヤリイチ篥oq?2?0y聟スVzウG?E?l襯+猴ク?.@f鉅Iヌヨイ4~ッ[w材?63!!ン?ヌ?\r?>オロァkVコ?螯PAp螂∨d^pェ厮aヌ|ユ甌U?9ァ?」[eキ鳬oソ?!ニムタチュr麗gfヨ務ァ?,廏E\'rc \0Gワ?8カ5ス.K-笛X喚衄Hチマ=サ???|レn。\"r?3ョF?\0・z?\0B哢x・゙卉ヒtp>4\Z?6蓼モォ(街セ?@ァ<\\?ァRtソR闥エ}Aァ^リ\\\\チ翦.性2?<枹歃柬K磔P鰡ュh=]~阻? 2ホ,Uシム「ウ) Hタaエ?5;?|W?oRロj奔$?\Z}ャ^I3?冒KI?>?マ5?.I%ッ樽Es才租}ト ニGヤヨf歹0ア{??1glO鰍R・r@ホ=ウ?監ヤcA)MフナI炳}?*オ?7ム獨n筝ス=コニメノeP訣ケ>??1Z苒?゚Ke$ヤJワ0黝゙。$vqI+ノキtqdィ\n03楝}j网?&黠゙榜?M?ョ?輒屶S+c; 螻?>」゙ッ?R]7ヒ髢炊 \"キ?\"?\0ニN゙ョ坩??D??擂含カ?\"+5ヘヤ? [ヲIル?I,オxア?LモQナ\n_ケ 6マ\'MV鋺Wo荒?;ハトpE瀏゚?オ.昧(」i{{Fトラ鈎対;*?$ヨォキVv退兎!?,ナ゙~ワ対~オ?))hタゴヤ?8ヨ9戰+オB3?イ壽Cルレ;ヲo?4スワ;}ス~オ7メ??゚?!、f[j隣邸「籘\'刳p<ヒ?招Djミ鵺ッハ\"サ曵?\'eトa亳pFNyォPt喫7カヘトsロフロ歪 彡ソ>オQコユ?幻??サ洞?升借??#?ル,オリネモルニ5)Jワ~\'O<テ?aN????ワナl哢??dd画Pp???J[{キ?sエ、?6禮スHノカX?wコ桃クノ$?;ヨP?1ニnR゚? :ニァィ_k]゚ワIr?1,mU98Sヌユmkmj?゚Pサi\'?侶司 ネ9)羚|璢?、モ湧?4蠅蓮メLフ、斛?oキon?\0J檍ei\'Rレヒゥy\"詑嫣\00假?ョヲ短]句カゥ}kメ?mヤ1]aフ逗2ク\0c\'ヤ?ォソァ?挫サコ曰|ニpp0NqマヲG?9コ幽メzやト?ウ鍛T$crFH?ォ\r?-ュ鶯ツ脆-ンゥチネ??\0イ1?gk?\"uィF俯淅?\"Zv?\n?レトg栲Gメ「?,[P-*ャ奪サ?eNN{苟欖?+躪鮃wS4コx{ォォxB?ィ |v${?ィ:ナ゙。ミ乢k[ァト?\\19?#ミ}\r^オル\r満」ラ?,??4ヌ#?8ヘkk吩ク勸%西ナサ然 孝藾榎3クヲYシサイsヘcカ?\'佼」ニタHゥク2ン樟+UTタ漠pャIヌ$ヨ+?Nl?Q 7R[烹bbサ壬ユ?? c,豕?)?媼ソhロ?ト?Eワハ?フ?$丹゙サ5Sr?!リ1リ聊アI燗Xユlア???q|=麥lHL融クオdヌ\0C\n09?鉚ッOヨ??喜蔦?鳬Bイスワ祐ノ曇???Uュヘ^\\ンノ坩?)Jゥ\"櫨\0・)@)JP\Zォ?ム?5渟?羌ウ頑贅(ッ冬ミcXeI%u-リ?Nワ草3?tスタ墜d??降場ヨ坩婦・゚ナ綺゙@?ヌクョ?Jーネ 撃y5?ァiラZサゥtン?ノu・゙ヘcp?Q?7(ナI\0装8ネ菩?%dq9?レウl?:ソ Vサxs\0Y\0\'98?チッ@?oォ駛%U$ィ??オ?\r\Z?)_?壁>_Z゚?5_垉?.ュー d ヲ28?+ヤ??0ニ??ヘ>ヌサ エ?ユラHZAェOzカネQ?*ネ゚>谺粐姫申箚剖2[?レシオ9G」fャミz?キラオi.?zM?)゙語、ッd ナ毫?z菰:目?;事ラ! .\"フHToオ?#?マJン]K・hzt?ロAク\'?ィ蛩sZCィョエnイ危Ufば?ツ6YV $w? ヲナgpI瑰ヘzfイzメ?\0B慌ュオ{m堆s?9拶ホヘァ\0耿c??@ャ;g?Mr\r噂舌k?FH8?>ユ゚ユXFアマg%メハTヌqム7軽チ?$?)舐=ェソ?,イ,?;ナp8纜?G?+ムJム兮ム~Nラ_%「マij7?3m\r淨Gb}ニ9?8柳?C!オキー?ク慶}ヨKmf*Tヒwo^}jヲ?.tヤ?0[?!?W\n0メq黥ト夛寿p務ノ?カjヲ^ハ? ツe\'=?オ#oイI9$?[?\Zm9?アャ笛O*Nユ堂チノ*yュwtヌW^[uZks??9Mト勘\Z\'ツ;沌市?ー:[F??[ヘ キ?!伸ルH?!}?>筌?#エアy?K辨?葉E dq?0?ト蒡?Icュ\"髣 KF談x ?クコヒl?キキ・g?>%シ赭iVVE)&?vqP:6。>・4ヨゥd??攀ルヌ。邁?X4?Td]Nヨ?+?ツレ?(A\r≠ヌ9?_ヒ牧」Dホヒh?0 Drホ筴?゚mレMO]??セ期Eスケカア@?ナ\rβ\'ク?ク?*。st固?\n=?ナ紋d悔N托レ?マオdk:R」xワ#ッ篇ホT???mBソラXヌヲ?マ檜カ$??u ッ躯+ノt??ムハキ?&??OュZ1リlヌスkq9栗衄T?縦?冢?a,? ;y^{ヨ=衄X殱?旅 HVld??-Q娯、ゥ厰Z%ハ井F゚び?,qサ肉??5享C?,?)q「棚N?HSキ*~ク?&ォ卿:゙σヨLZア屠$ェ沼R}?キ=?<マ・蠶??キヤナ6エノ.、カケメァs{i,ト?シ?ヌ?8??M?,-ヌ\Z 0!??=ソ・p[ワG$紗#ー+\"ョ|< ;厨?\0_セeヤZ|゙u ?Zン|$\rタeレsリ$?ンサW雙セ\r#6梔ョ「y?/\"[ルn.Q:ツョ6s???゙」セ#ナiェ餬Vーi霧ラi?y?p¢骼獪カク?=ァ-?モレ?ネ?ヘヒ(9ネU8口●\nツ?マィワワC}?ル゚ワ]ツャ辰 D?3タル?ウ徭]x??エ^[拒ュオ?胴カ?%シ=J?3f73)\'+ンO#兼マ・Mt%セ帯zスヲウヨ\ZM゙・e?+o帯ヤーA#託ュ?奨獪コ?\\:kヘゥiイ|穗蕪k)<図楯π3Rコ湘[ェッ袒??\0ェ&釣Y朏{ X?窯?ロニH?5?~ァ?,+_?營ウヘW?讌u-コ3ヌス??Jスt?8?Xm?29?\\?エ2G?U?\"];Pコセ涜オ2シエ (r?7~O゚ソ?ラ:?2+0\'\n?6 チ??\\莞mR[k?ツI?;「ネT?Hロエ?3タ?豎llXG&。,O 0イ?%<シ?(??~9ォ/ワゥ~?ュヌ」キ?0\\,ャーx?ハ痍ヌィヌ?ネ鬮サc+ワCiPF\n阿<+゚?ュKbm羯カニ搶牢皚ケ;dィ=?枳?黐ラ? W/?蜑U\'?アヌ蜴?8\'?囂e゚]鼡-*ヒU勁Yヌ?ワ@ニ~?Zソユn??シxヨe\\eFメy?\0ュH?v・suekoipZHm?2?リ>゚_・Cヘァワテs$mLjタタ?WヌaIIZ:??ァモロ?icEd??+ウP?\'ヌk3mteチ??+ソMアロi9ケロU?c゚=ェ?イ/e~RYシヌ$?&?\"ロトヲ>+ッ刧uツケワョラレy>ァメー?9&ア冲u誰Iョ界sヌ8ュ屑5h?O?、エサュゼケ&?ipO!径O゚ア?ル%Qlイ??闕?霓ァ|a7?:゙ヒト?(ユ7cモ;sS・yfツ櫨\0・)@)JP\nR?シ????\0レ ^ゞ儲Yaォロ?37栗莫v?2フ\0>?Wソkフ_ギ?O?Wニ?ニ?K Qaノt?7ォ3轢ヲ\0 萢ワz?y>゙dハd?(ム「Mテ ?yレ ?5m鐓V?+ユまー庁Eldイ座}xゥ:y3リ於\'??ッMサK3gォ@?.?a縷゙=ケハ??j?9~P\\?、璞?豬トカニ7#\r??。タ?9ゥナ36ィ績a\Z軍ナ碾?蘢 ?8タ>暎X?ュ?メu瘉[ト載\r癇A蘭\\十煌?オy?VネWsD瘧?0゚C樞カ=ャ??ヨス-Wv粐? ・キ2?6ィ?4dgzアンサp!B鄒+,挫ロZ,カi?浸ノoo+ P?イ?N>??ォ」Oウ?ァg|ーCエc??賓ヘ#瀑ス?yu錏]岶?@??qキ色A=ェ?+・n:Vm2レレh窗RN?u?渉 ヌヌレィウツO型ノ糺5?|スワ6ツEk?:??ハ?+7ゥuィン??$??2ヌエ1 リマァ?マタ?ー?「6「、ヒ?? ?セ」ナ[:?J?チumェ[黐跌ャメメ゙ル綛dS謠?ーテgモケ箋柯F|_e稚h[ロb?チ,N?>??ェ??ヌPiウャ?zt0薄Y?!#?\02ノ^マ\'タg2\nヲ0O#オvタd壯チe@?咥タ?U峡z^?n/Aオ?{i?]ヲ0 !瓰A 携檎5Mkァ旦G $\nG・hメ超Iウ:C?カシスヤオo P?ー?)!゚q?\\aウ?ァ??r?ャE|V?*ラ\0?w\0ワ?Wi?セ+[tュ?oォ?オjーコイレa$相??エワ瑩;Tワ?コh6コTJ?\\ッフG2\\エ?ケ ?{??\rrマヒY?&オs+M聢エ?)ヒc?リ?゚咨ォW沓フ?&ア?>揀ネ|ヲキ?)ヌ珈6蝕ゥ頸?67Vホbpwキ ?1タニ}j衲=Oッ|ユセ鋲?(嫺欝?&,、ル<侵I豬ッチ?>アig-?ー aカ?s鴆?モコe欒 屏葎?-伐キセ狭城^&o、K?\0サ煉幕?$tセソエーラオ9n4k[ュQ蜴9?テ奄ヲARFrsY??メ7シ環[?;?#Iィタ彭?=?F;ユ3?擧チメキ垓カH.ョeJ??ネ \Z?r\0ニqレエ螯ュ.「d?れC?\0テRx?醴コア}.Rヌ|??\0\Z)ホ\\ェエoクnt6?ヤヨ?唔フメ棚?\'xンマタ?ネ?雖トソ?徼?ァミT?芟?xS?+ネ?1ユ?セ蕊YTケ旨ェメ7c盂_)yO併?\"リZ?サ4ォ吶?3 オ喇?チ]、ンキ閇ネシ邇^;pハォ?z,、ォf贄5;ヒ HdユXウ。8g?Oテ携閑?\0ャ\"?^9l\"\"?;exトlモクc??Eソナ uサソヒ来2I犁F%ニ s?c?=;V叟コGP??B?;t+癪F劵?? qリκ琅\Zセ?#?{-fwNロ?7:レコ?o;???)虹?9ハカNtロヘァ4N毛ワナjヨ?f ?<、茎譲ィョ榕4}OW?4」%?;ッ;シイ?ホ~?ラ?qp5{=Gァ?(? @セ\Z*\'ソ??イ}r+_ス\'カヌEwッセ_鷯/ス篭ヨaлフH2キC\"ア?;?。コォ珸Yi?$ど趺?誅-ュ弁竚?F$アロ?=アヘz篩トュ&=帝?・ヒfメ\\捕テ!>E.pル?スェZ゙゚カヒ詆ヒ\0メ熕¥vヌo|ヤum閹b[5??zy属$p?熬}3V?。RマXメ?\\I?8スッ?リ 鶫ノ?ソュN?<ミ-コ{Vクfクゐu@Z饌b\"Rタワ曰??ヌN? ゥlU%セgf謀 俘?庄スqマヘ\\???\0??\0m*ソgンw」ュ?4鋸4曼ルメa$ュtXウ沙ルH9ンホ\0Zゥ鮗fサョi1?餌ァZカ?X?\Z^ヌ\nyv??>テ壓セ綱溶\"仆セc?9m??\0臓O\\V4??VOX斈g{??Cリ榲?篁#袁*/.險[Z_ト哘エ?コ鱆」?#BdX箪?3ノ?レュ?D?ホHチ艘?ゥ、q?・ヲcB宸図椋?ロMヲル゙ナ,Мrav\0?.゚?:ホY%袋m-必擔KV6>Y\ZンqRJッ9ネ??k タ施?&曰@拑ウケq?~ケョ庚<?袗n譜uNs鴿?軅t?イvmネ蜀x鉐祝゚Yテョ?w」ゥJ求-フ+!UトA? ラ ?キ?チ#ヒリ簡? #U?\r臠\'クコ&窺チ9\'n9>シwュ%嗷v却OイスィZi?3xレユヤレ藤 ? Dh=\nD搾?#メク3荳找[7u)J?4・()JJR?R箱N?ム杖疱キメ゙ 9?C フ<ォ$r,ゥサW法pN9ォ?(挈圈/ユクキ$btルマ???」拏?カキIL!カコャφ=ソ#]?>??i?6ォgヲ?;5=9ョユYsシ(_タ「U稗濛@?ャュ}Z?Nラ「P#ケRョGe厨5>ヌマWIO ?9a閘?ュNリIj嘶レ.ァiハ\0?3JT$?シ?薩jラェ?怯t\rョュ\r?學C!\\エl喚オネ迯ャ{?????ルィョメヘgxュ嫦;n牙9?マ?#?9ヌオbiWmo|%b+x娟p?聲ク緻(?({恷ユ゚ィ[ルEwpfシ縮d醐?\0メト?+。・ムヒア麩夛KTメオ]=4ィユチ?v?ヲOェ??x割メ,ッ?xュNネk :4BTrJ「\rサ?.pF3彙ィ?Wア(耨q_オX4K?N $2I Dイ痞。ウ?{s\\メナニ?N?\"コ?%?哮e$,r\0J($$c」l? キ ,2J?トゥ刻???ヨラ}g、オ ;a%オオセオ?ェッイsェ?8ニy?Q?ァァYィ憐>。cqs瑁ア!?2LEqホ8ェヌ%鳧Q%ム゚u;=Nキユu[ッンア/?;(279?験?ユrユ/:gゥコvhl\r?V4ハ聴? ニ?輅 sニ+Gエ^?」4?8}フq檍舍ヌ・lO?\r:Gwァ,?2I,N\".?? ?ト菜ロヌカEa?W莉-隲??Gィ?アcォiラム・タ+)1ヲワ蒟」a?ス^??}9uァ_ヘュ?ylアエQコャ6?ヒ).?v植ノ?」?養モニ{$X諍??;ム芙僥F8セェnエカ?!サQオ臓8VOFネ98>オ択ッォ5?4ヒ?:+?\'y\0G@ロヨ<ア*詢ェ>梳甜ヨ-s」?ァoャ?」カモ伏M?4ロナYpト8Sヲ9艨゚ヌ6?KE妄&シフッオンΡ嵐sヌ゚ヨカマタ]+Eユ5ォ?#Xオ呈?Mvモ 擇煕チ|v ハオ^ォゥテ4rュ?f>\ZナcЭナク?樸d闕7W宇オik,6m?%?$v焼ョ」?#ア?Ze塞熹ヒュッLロ?Tテ「??Ecァリ?レ?J8?VニL?;?&ォMgァリj遊レョ5 %vX苣レU?ヌソ?C?\0?オヤ檄F,7ホイeK31ワ暗!嶽譬oョ「{?0アX?$?伏ニ?lネサ抱;J+0x??_1ケU|68ア%セa?蓿黍1sキv1涸・aウ?暗sヘi??+Sメ范ァa樢?./ョX|・福??、遜F? 3?8B「v?\0I弌$スs?.、黯悁mG@ヤn,¥チ曰ロF??後ソc驀GJクカXu?1ヒ嶝8?ニリn\0+ヌ9?ヨ|\\AM?7イサクコクカ1テoQn?トgH?c市?P?ヒ?*I、??X|4~憧シ陜 ~?セXカ゚辻З?淆??ニ+Z???Uオ殊ヨレレ?カ[7{kaフT?\"?}3施?アハ?Q.フ?f-需?+?。1g止オ霸0d?#?я??*U?エ驚? P%?ロ?:?サ;s%シ1T銓5ア?/期\'JFモh\Zd釣lFク二0? 雑レオ藤エ?,\Z&$?\0v9?\r??\n2@}ェッ\Z歸tl>ィ?ォ??勵ユヘ狒劍?$涛?PレRO・? Z?,2ヒ ?.#,?ゥR\nカA燼OュSニsナsGup?#ヨエX笊$Wキd岬ミマェ5フャbfiZ\\,Y$?=ア?ッキ\Z?+肅ョ8レc∠ュp?>??テ醸丸ャエiオ96キ?イカmト?\n 唐; ユ.K9狡Z7l?6ワ;gソスUF4ユラノラdオッS? qヒu簓%ョpO~k&ヒィ、若Kロヌ砠ヘ檎C_4ス?Vシ塰゙健H??\n?$エ)\"イ燐??Vb、、レ7酖nィ榑ヌ?声[? nニフ?_゚?Olヨネ魄。ケサセ?$キV%1筧宛?%r\0ワ罅r+ヘ\r樛マWy?葷62、( \'o~\0ノ?ヲエ ]?格????&メワ蘗リ?>?y^?JZ?嫻ヲ?ヤヨ壅Q,3hS[]@▼0ネ|鷙wア系?;キオPッ4m?Lkvクヤ?.??{vb?yレト? ?=腔近?jwュu.?\rフ田j<。v゚ニ冒?m9_ホー5゙蛾H5サi紿.竓P嬬@儕wsエ?>??ル」?阻f?」メ犖Y-.レB蠑サH(=マs??」ワjラf粐gウイ杖Kキ$歸マ?W・コ率?ノ瓩ァルタ?)nムニ;慾T怙\rT?GLイエイキム?I?xルクヒヌ7シ?\0zサ?躍C、k;n蔦l?ォサオケ?8モ}シ2I?耻?ネ。ュ?帝t?ュコCォコVUンマソ?c?・t|顧ヲ?&ヨ犬H緒$(ゥ$?羈ヌ\'=?n?エ6炬qチ堕ィ\0gオp?Eヤハ??゙冖??ン?pBタ;r==?sウミ?eカノカi?2M!!I\'?}\'?k」ッィ^絲サ?.cY「rA>?L? チ\rフSマ!ン*ャQキ?ァョ2I?&ケ?&「?a、魎ケュE&虜ヌ)瓊チャニ}鄂ti壞チモ?;Eケ廡|K???ェ{g?W-N?Rメn6ロチ-???%? w脣Teニ岌ルi\nヲA筰;井8ヌ$?<OスB珠オ{+菊sr粽2Zgロ\"瑯?NGq??oRjヨ逾蛛bHH??9;?8聢ヨaス?。?+w?6\\??\0迺ケ??スYLキ!ァクmャ」z恊A8胄オェTCgMソハM{5ワム椋移ワd鯨ケ豐R5耗ヲhカハ?7?\0S?L\0+菓h U????\0スu゙ホ粢D_トチニ?;gヤ箝Yz肱EノBH???・用卒 ク?ュv鯡? ??ク?D廷アレЯカ3?ケ[:/\',マォE> ネ Wlュ?t<惷マ餘ロdナQ%ミス3uラ?4N袖i?エ∽?7个ホd?リ○?Tォナ_ーBカ・ユコァト;鏘ュエエko?\0苑A漕b;y\"n;Wオk?3ケWチシz・+\"ツ櫨\0・)@)JP\nR?櫨??\0ロ衍?\0z|,オ?h窃tン簗ホY?エトG\"ェ? ゚牾-ルclネ>v闕E?\r?ネt? ??G8???(ァ??4?)ォ」ィ*ハF ?ソ95M?キト拘」ョッ」ココム?テ?5レ%国d左?盃%rpr2q奚>董捲6s迯ォ3?2Y?)??゙+?ァ昏\\GnツI\0&5#?#レュラ6スAhコセ槓?.W?医%~耨ワ・S$i コI@黥゙??\0弍ィ券ヨサ8ェ晒V??%@*ヌミ竿シヨ,,ョ カサ?.?8 q?ユ礎「Iン\',チテc9;崛?Z藺ェ|敕3[ャ謀ェヘш%y?w?e?q??GリBl\Z?d?m‥?爍R9a′施f??!ヨラI=洞S#Dウx%?89\'汁~舞ェリC&ゥ$レ Hヨタ窯レム?2J?ョ5;ン贓6H-Iクx イ60、1タ醪ヨt超J?ュO?エZ|?、?4?\\?3 8 ?\'奨サヤeテナs??%!Gwa?=?8♀ツユdvuqサ\0\07肓\\エ蛯礫{」 m$g8ヌpHニiツ?6tjシ詩p禿ロハ釛TキH?ヨ?7?\0-?--・ugI:HWア ?>ケ?^x窖走d? ヌ迥声オ餅。オエク挺フwナ 緬ポr・VQMS%3cュ療{スロニユ耨5]鋩ヨヨ?-ウ戍代_ツ?Rqニ;ユ?狽-<ワ驀Ch4坊o7;ラ$胞?\0イvニ?辮+DOcィ?\Z}璽yァ?\0?[ウ。a?vy?墫メ?Wモチエシhフ[竦F?#,=?8マ゚?rx、ヤ斤}\Z屮コ]?>享?iロタ?ラq?\Z2ケr?ヘマq錻j?]8tヒ?゙1ヒqzヨ?E/苅? cクP8>佻l?ア?Oァオy?7_゚-ヤュn?8bワ}ネ?3戌\nー?A鮃コキ}フ;??ホ9ヘCロリ^゙\\エカカ」??lv\\?貮カOaWH?!<6}苺? サ?キ?A]*]Q、\0??fョ:Vナ、ヘq\'Xレ]G[q2トeBサ?但^゚ィ??,ス&コ??75?尤4巌蚌?\'?テ?8?Z峭「ヘ.+?dモテヘ;0V? Kソィ8?ユ?溲”ゥ&謁ヲエD4メホョ??YクzスYセ |Hエ?\Zレo L癘yア#カヨ*3キヤ?少G????ソクサスユョ?厖G盻,v?}0?=ホ=?\'ヘホォD図;mゥOュヘァ[〈v、Gコiヤ???\0カタ9耙TwRiムAィワKm~コ?) Gサo\"L?l\r訌?jシイワ シ?NC3V鮗喬???N駑Rgコオモタ?Z5苜ロ9蔔=ウナ]ナァbハテレンャヒア2?\\??t?>5簀q\Z?vTppO}G餮7鬲?k域クAカナiア、 v紬?佝}sヘFGメ夛リ=?lアキc尋ク?Jォrテモ後且I薦F麥>??dウM」・?ラキ?コ$モ」f-o\"4Hb|、ィマ?。l!? セエ潅懣i< \\?.|クノチヌィィ校ラBキモ笞ツ?跫リ\"??\n?|ヌw腮ヨョ?gc、ヒmr妨?\"?bン\nI\Z禊大3?サV| ?F萪柧觜フ{ウ芝ウチニ0\"ォv? ヒセョキ」(2g*H#pチ?;?ミ゚シ@ш \0aーリ?~?Uウ+Yサ曠d? Ktンマ〕飴#キ=セオ)メzu裔?疥o6メG?0逮ク ンsニNqロ??5ル?,ョl??]?qm\0ヲ0??s?=ォ。5?ホチ?[ル「キy見?;?#?9\Zソロtgホン騷oゥ>%ulー\\?I徇Y--秣??\0zsヘRセ!t9?\rJ?K?ゥ\"![*c<彭d?ヲ}??sヨ-3゚閊^亶?? uJD\n\0ック??;蓴Quネu)^}B???y哮?ェ国ルマ?01\\?効゙?Ouイケc・゙鷏? リD。d乏メ}>シq^滲aム? 、タイ?3?v?V傳継驚?蒿zW升ユョ !ェ*gn\0cマラン?^Iヲj)ィ|ペ?&! 血ヌキ,9ゥ艀?\0ulルR=コ?M椨m?1ナ9カ杳歌?瓣??マ?^u?iレョァ-?]j!リ,hj?9f゚\'墫\ZッUj略述\\mノ?セ萵?ヘJ?J龜UァN?エq?訌\02HR=?藹沼筺薀ケ7ム-ヨ]Kィa?ma3rU?;キ?>??*?洶ソメ媚ユョ?キlE\'9lキ??ヒJ鈩?ユiョ?2[ZFrロ?\0ヨ・tK{?逃ワM?」\nッ?pA?=s?ッGロo~ルD浹m??ヘ?ロ?623」?6?ル レオマYZトレ・ェテコW米?\0r@?ムロュアゥMa「?薮&?\ZK/\r?!%カョラ$聊オ\rヲ冫qヤZmげ狗T(rムぽF~サrkヌ燃tY・ムj饋悳ヒサ{憔チonAiU6賃?泙?R~別?エコヤ\'ウコメ・in窃*d?チv讒コ妾-4ヒ_辺テ餌P$fV}?ミc?-3Bク\n?ー4ヌx,クbf?F*ヒZEェ悦ャョ,稾=-、咼R? ヌ}トp?gキ&ケナ。|ャH\'朧?c岸N巽\\?\0ヤニ栴レH2ハ?%テ?,O??\0スBu=?ム鉾トェ?H「<\0;~ソJユEVコレ?モnヘ攪ycニ #p、py??筬iムH゙,0皆ヌ??テホN?=??*ラo」Oqtメ]ェ絎?1再?n゚゙ウ容fハ-?漕%?7ソロ歓YZイ?ク?6法B戌y?\0嚊ソ?-跨2? カPw\'?\nリコ漫 v。LjN08,s?=+Yuェ?7?y?q柔ZイTCD メ<ホ7ィ?V?S)\Z?*ク8??;肪リ?$男[:&8ィ?F]??gJテvX?95オ?cセ?カ?iェ\\diン:SR怎ふ+?\0?7B#a?*・fノヨ?ミヌ睇ツ?、、サKヒ汽wケ?\n??キ?ハ mイ\0$M]ゥJ窖5・()JJR?R箱・()J^c?コ?%ヲム?越zI+cゥs?、??,淡+?O薯@J?u^[[^ルヘgyoヘエ?SC*I?YOH ?纛?里\ZオG?u(?オyHF;?=?G??j[ォ4+S1?E淡w1」0ニ笄?q?{ヨクラ4-C睇ト}S」ッョV0wFル=ヌ゚洽ャ;トカ淞シ迦?゙法fR{T瑜?-gE彜鶫?\'?7「産セタsヌメ「、C ?カ゚?\0?エ蹙ラaヤt「?Iコ)e?キTラVEaユ丹ョ?3ァヘ耽??I#\\p鳧燼?f師?「\nテCウスミ?\0x$キ2ンメ?歴??カN?Fチ?篏エヘ#Tモ5K-wOqpケ本k? u>~ンネ?★?ァd&イ゚42?2ロr3?鑚鑠gI?+?3J:mシウ[H&ティa??ラ侃?/[%?jWカイLnm「嶋ユホナ??ヤTョ▲タンSqk?%¢O?? 7ァ<X1ワンホ塲?シフDメッH」vムニpq??;\r玄xG賊ッlョ0キ胎?gテ。*7′n艘?ャァ・Hイ$t Wエソ$゙ヌgo(龍[8?ア濺?邱/ヤn?[舘0/エ9Qホル斈Rn?8??\0ソZヤレ暄?? \ZY゙? )\\1\n2I?\'>ユd?-Q,「??.4モフ7$色rv?yマ交?,听ユK・pz?9?勾cキ巽湛パ$l牾瀋モオl?\0?=Wk?Di喙]胸|\Z?オ?SQヨ袴゙ヘ9,メ映bL┳bト1憫+ミウ蹈&?4?。ヨ.。撤???!R\"ャg?6?9?オSセ|/ソ??-?」E,{D@]Lンワケ癪?計ュχ1ネキ77zХwゥc%ソヘニ0&P゚テDEチ\0.?縲2\rk膊I}ク2\"スイヘラ嗤テソ?Kヲヘq聲D?ヌ4トd袗*vア ュ嘱ユ+ュ?ヒァ?シ?:ュヘ?ケv|Fトノソwァ\0ー璢膳=ョコ\'???iksVヒ庠|ハヘ93?ォ7\0 ッa渫9?<チqィ\\-イチmeJ??席痞。P/ユ隴?エ駮叛コセモュ??ナnチ|リレ、?-F|?tJFOテュ?Mセヤ5?ヘ-7QアCコ)%?クW?.」?m?メ] :B?-b?ウヤセfメ \\ク工x$$\rャッ漕PHa鳧\rJ??スス情キEカ葉汝故\\?8n;??*醺ム髫オヤコu瞠???L@?@瀘マソ?l跌クセヒ」マ?\0ュ?3Qソ徹?$緩$?;iラ~賽cPァ$池タg痴マ「?ァ柳/?fチ??=1?サ笑スMuモp[\rnフ?\Z]?!゙=「」テ.ワ蘿?? ?ヤ囂ツ-b。ィンレナev[dovRh恆?Sスy?8?f遷?*?]F hu aキw(?\\\0r;?メ;9?=?0>、\nワR|皷ョ羹ムo?Rリセ?la煤テnR;{゚クォ??ォ]?#R鶤nロGxdレlー $8#W後悄フヨマネニ容xウFYt?ym$カzeト??サトサ?ホI?ゥ\rK?:ァM鬮>・ヤt?凅Wチ販ャフ ???「スAメ:oK|+ζ尺゚Y4krY、w,x^ム琢羈5A?\rCヤeオらMケ鵆;ォ?\"ュワ・礑p 0Aタ\0p#瓦?・・??則tクnnoEョ冶?9Pp[ワ}~セ?ォ[マkゥワYヘ2ワシR?ロ癖8ハ櫺^宍?栩~觜レヲ弾 !?5YUウ?sロ櫟ニ??\'ュ?.・gsj薬v^RX「O 遏/ィ<筵y0?8?Kミョ?=K?,纎iカ童8ヒ1ヌヲ??Mtゥsョロ駢モ?ネ?ヌオdル?\0??楫シ?4m瘢ヘヌRt?「??籀、張セ酳リェibナIノ瀏?ゥ}7SCuw5アー丱粗_9|;ャ1?徃 jホ^K}tMzヨ:l゙jイロレロロX^ト?巴Gi]x 1燗R彖Uウ」5k=ナ? Q?エq鹸カpT?S]sヤ圜カラ?粗o、A・?Mf\0\0?8熬[h苙}ホEOHム$ミ?スサキ濃ョeヒ(\' ?3豚~u{r丈FッFナ?+据サNY侯F\n?<G。ニ2}j+Gモ?{ァ諦ヨyナア!ユホ\ZQ面耨?>ヒ?ラレ゙抑・Ki-レチ串隹Wラ呑\'?=???=擘ス#ou,?$Frョォ?8<\"9?#ラ5ポ\"ワ?Siコ???_]エタ\\イFL暖9b[\0r??ヲ゚ンkzヒ、qノo$詮ョ02」h?\0J?ラZ]ホュqsyk*テmmチg ホQ ?ニ゙リヌゥ羞eiヨ;cムホbー含\"ィ????ノノ&シ婿Iヒ苻ェEsNキe??eS,俊]]NCョNs苔渣fャレ索?ヲo?- ?#ミ\03?o?皀ル蒜黙ネYpホ27??ヘJ:^マs2ノ+ナ芟懦=?クォF$「>麑?籐シ5嵐?/\'v0=ソロ?\rO伎ノSQ桑8em罫サ=*侮ル?0腺?>A?=イ+ョ?/)|レv?fオHvF?貫/ヒ\"「E*5?ヤ?C◆zテ?d喫?セU<\0?zスHヨ&ン?;筏ウ??\"Zロフ?6}]?キメョAテRヤ-ホ?6「nn0\0ュ9ヤコ粧齠]ε6ヤA?挂ヤq゚gdフム???gロ?ニノbM\nI拵k??ッョ}ォヲg?ー「靡?3ヒr~ユ?5?1?7帋猟ロmQ ??スヤカ8uYX\0險ィ27 獸??cセ??公埔ム渤]8鬨\\ノ彷Iキ@}ヒョ?ニ゚J? ョlメ?\0 シP・)X・()JJR?R箱・()JJR???\0?ミrk?Y鬩+黨4ZG?(?ュ\\ィ?8?>s?「N9ネ?C?萎蟆@マs?「??\0レ痺|&??XoI?^メGKIノbヨ・ウ凍7!lケb孤ヨ?恋酊]3 ?hソ[XYuOJノw\n傷カ??1サネy$q後?ュMォi要メニ?ルh、S舌セ?#?ヌ畧R??テ? v夘尾qWョァム,L7ヨイケ\Z=?螫ゥ?\0頤T>?$z葫ソ?ォモ9Z苡?ワVvサ??郢!ァ]ノ」i?1\'?3?FAセ7??゚?:持qd?3)盡テ讐緩EG?Z?メ竒?1eki-ヘ?7カ荼Oc!^テモロ? \rヌ??\'?9イT?7酣汕?8ヨエリ4ル栽?ュヘヒ)ロ竭槽\\ツF0OォK?^uRjWZ治ゥH?房xハ砂ェ歟;飮?スKノ?4\r沙 ォチニQ潅(s十筴?$?-Zu衂Uj(コオ?シH7キ-\'?cO陬臭??E涌#ンi?黐Iサ9テ1H>Xqサiニy?3」コ;Rケ:アゴ?汚1F?ワ$\rロ8衆^?ユmッョaエウヨ?ZmB 5ワn#+?ーW\'裁9燻リ<豕ネ筵Hイ5uカ?$鵈Vカ1、B瀁@メ8十繽セk糸ァj_スogミ癇?ニpツ$eS?X大\'?\rmセ?iゥkーDo?*ホ━=ナノ?池ハ?* ?0=jロgモ ムb?罰?R朱#v?\Z6肩トタ w?fウ卵、JF?ュ瞠?.モィ.? ラオルq犢テ\'ノ懽鑷鳰9タス|???:t單阻7lタO」:G?\r・拶%T軟Iニ*N.?5{ォKュi粫Yトw?;I]-疵C癰pG}ュ懊?/J鑿簾?サ\Zカ舉?ウ\ZWホ;d0゚ーィr虎hニ?ャ?5ィ?テ{uk3*Nトサ」テ髷xュウ?ェtスS@]2 ?Jm乗Sv?K醪qネ8<顛w?鏤マ?^ワOC?~慧脯ヤ6丘qgィタEト?クe萄Lヤマヌ吾。ハ呷^\r9?9釣? ?*[ \0\0薨ヒ繧;p1??ーkO???!ーD蔵PャャCd/ 3?3?;・z、z稀カスn?ユァウ弩_S?楔B.柘B&vC$?(Wノ??Oュ?毬4真スナル?5゙?檎?9<*vョ檬鯤。廴qwpセJテ|lョナ?,X收」?\'?oイ,シ?71Gァヘ}yヲ\\[テ癘堕?)<+(a?8?ヌaU ホーY$駕qC瓩ネ^b3?蔭Gセ@? zヌ_ユmaーユ謌 汲チ(?\\?9ホ=ヘ@?蟄讖キW,V?1@?ハル~H?0=ア飮シqUカG#}XkFK+ツラ用ハa雨B。A92Hマ>?ュk?7ァ?5 ス[]y?cwッвg?W?o(ーマスO鴫ウ?ラキBk[戞oS7配ー w?ケ?r]オィ莞ムnL滲?!ンカ%Ppル?wノ讒ヲメ?&ヤOuK>7?Iv??ォヘ?&?.)?みイBHmヘ桑fチ ?\0)ホ\0瑰鶲s_m祠[Wクコ羊3aTq?{釵コ-?\0?Dハ!R・カ免8??kュ.c6「゙IBpS?ーャ?.\'?4H旋じWヒ毫\n?t凋ネGoAXモワ鰒j?2B?.\0キーャk拉p\"?莢膓メfGエ?Kニ8z?Mト9\0コ賺\'ヨア/uHX邵xc?\'q.6ケコヌZ?タ?#蕗w\0哉=? G゙ェユSNキネ*槁穴ユ?{ヤf?/ン瀏fp゚?1_>\"kOェ\\+ヌ$fワ?.ヨノ?ゥイg<悁ア筈u戌WノT,゙ス?8譱j麪]?*スセエGC?+-ou}^ヒEメ潴巒ロ┨キ?I]がY$kカ?q\nニ}zK??wwォテ?V佛knfォ《コw*ムI3ロ\0g@9%キ坤u\'.*ヘ」メ>i゚ ?レ?醐u(vクスコGフNタケ?*ィムFrrM゙醗?R箱・()JJR?R箱・()JJR?U7?\'テヘ\'窈Cワtホォ4カァト[?;ク?-m:?ツ?a價?f\0モ.TゥNカ?オfコヌKu%?k?Y齲|ヲ論?UC8 ?85?/??\Zセ?\'Oj{.!d-lマ??ォ??R? Nキ飫Y.コォ?クオ拷{サ@Yカニス決フフーfbkヘ}ユ3タ墮爛#?淞゚??????8只X?\"qヌ?+ムーIヲ|M霍カ?,Wミ?1I??\0蠢?iNュ鴉?*錵tテ+?0ルチ88チ?2;篆_?/ニ_ゥハ>ムY?*蝠|ャ0x膰8緻e2&モ?,蚋迷ハ?Fオs?嬉クoヘ粽ホユメ)v$トnB。?ラp~」メコ坿ゥ?>k?v?6ネd;?>肓\\|U2?FHハレァ7。レ?┳豪)レ^9??ムzャヨ嚆ワ?*ャィ??[テネ 燗鷹ホj%Sレモ%hーナユ鵆トM.馗Vt& 茸??zホミオロスb?6xg研?fメ猖砌a撥$カ?OlzユgGヨャz岑、7ョt?2?lッニ \'ヒ?\'\0~Fサ勵Zkノ6田o|?42O!?5ネノ+サ\06=y権コ體lロ?ッi綉溷mb手#サM{+\0輌 ア?\0ワ76N ??=Qェ]/O|ヤw?j嗷 ィ$?J?昵カqキ-食?ョィ?・ウミcミオ+;篥\Zハ&h}0齎 ?zョIヨ:トホ$壯レo E???Nト?k5?6?e小:ラョ箚エ嗄IV7vルuk2蝉z {~錨?/於堙YAャ]<キ恩&ニセ\"? ク?リ?\0スj+[!souv??リ-ヒカI8? s舘?\0\nzJユz}オKノ~^IO??ln蟆\0ヌ>?+\\ク?D&ロ&ョz溂?ルメワロ3?u桁1コアlキ盗sマョ9Sモッ>゙ュフ折j咯フ7\r=ョ鏗x?$ケo?\0q彡\'ス[W。zZ\rj?綏[3IィH ヒロフF??スC里:f]icャ?-軻?4lィッ?Gヺ璢独k(n?%ルー?\'窩zョウ桑1?U? x猪8;\0%@Zサン\r[イ?)\"!a\Z牀Cサ?1◇rO\'ヨエ5紺?キ ?KェャムGセメ,b2|?l?谺戲ラ%cモャcソ]A縲・エカ?& 申瀏達?マ懺\'/タイ遼ョ魏?糶??;DOンア髢齋tV8V<\0sク逵ΑZワ??5ミD?C」b厦ケ符カ▼???墸=・Aiェチw}ywsエィ\"3??マ)?xQ? ュ。?I{c?ノzメO+Q?揚9耿c慝3^筑?-Bラ螳シ.暮片!Y寧#厠娑q塔?6?>???オ??・ァルヒ癪ァケ Sssu爼x??\0 イ0リ乾?錆7キヲjラォkRj找eヲIi・nャ?\"?老ニリ?wlタ9dsWァ?;MkXキ鶉毛?$ラ(ァ? \"ン?瓷ワX邯1?ッ,ホ4膰込|屹5{[{?\0蓉コm>??-仆)C?\"∨\\?レセAメレハスゥ榑xノレトル9ホ0;憫?{箙?Iiz」R鮗トpン? 僉ホ覽8lv+ノ=?ヘYャ? ?:ワwワィ??%゙?ワ?ヌカ1レォ/)ラ?8lメZ?Mワi?ュ2Z、qヌ燹剔?%?D>オj拏w,??;? ~_1ゥf 62ヌ?>暮゚噺I3Mウ.゚QT?6\0ヌ簡ヨ?4%ウ、Vv叩、Zヘ$*@マ;Yケ瓏・dシ嘴Eクe龠畷t?ィXテ4p@[粕撩??壬}ェァエ??=哭~&fXwリャヌモ??\0fスOfコ,ラ「ニ?j 尉;鹸ワz2?ク?1靺昏ノ%衆ナン?リTc??モスhシヲ?4Uチ\ZミtNス殪mw4/ツノフサ峪lタ?+?BKュ?ww=レレあ」ー\nセ??レOェノE$ーE!ウ?3?史Vメム!カ篠 Y?gq¶dヨo;棺*燼讃7icモ曾 XTn???Sワ看{8&X?ユ$LfBs¥Jナu;?9ャ?ィロ樸ト甬恠オ%諜ォkbワ管コ姫x\0Wtッ?$ヨ次ェ?7PY?(%?{0?\0ネヌ黜\0w$?\0?\0ゥ5?-ソ\0?O??2hッu%椏iフ鶸「袒 タlL?ノタ\'ーワリmサO颯E) 1、QF。Q@UP0\0ーB??゚疊テォ~哮。yy$マwp??w\nミO\nQGl?&カp蝓6n?\nR蕗\"櫨\0・)@)JP\nR?櫨\0・)@)JP\nR?櫨\0ッ\Z~ユソ礪kル~#t「xZンネ\Z・かナ慥%?刪N6ウ\rケV=誉$D?U早 ャ2?5ヲ,イナ5(?(ゥ*g×??ゥ?m?ヌモ篭mオK濡!%9^チ丞Y愈>「a尤チ?>\Z?チ<{?ワ?kil「\"oc2フメ<メノマ?\np呰?招v[Z影坂gjハ滴シmbyチNyナ}?ン?8]テmh? ?輸スユ4m:?~?ア))ef\r決ネチワ?>ヌ憬KE楚?9ュッ^ノヲ? ?チl?゚4騫tッ゙qGィ4) wy綯??NH??gYワ|ワ-4ヨ[テ6ee叉 *0{7籔[袗-cゥ&゙W #3?Aチ$p ?f\\t゚Nヘモー゙髱Cセ?\Zm2?ト\rク*艨鯔醺レォキアGナc%?\'但?ユ?ムカ給q磽q覬pァリ?8キサ%\"シ楪gQ亜#キ*rラ゙ッ]ヨX哄ィァアオモ轣ヨ+ラ?ウ??W$?{?.擺偵[″??$處X?\0チ8ヌ5鴎i追ュMァZチp?%1ニ言sマゥ8FZ}喋^オイサイd街?%R貪ヘメ)ホ?ハカI9  \Zョ゙゙6「コ~締Zヌ?I?&$Vタ\0e@苜~?7。u>アム??.挌?ノ??^{ヤヌL?,zァJiヨア4z%?\ZUヒmK?ルネA?\0yノ=ウQレサ?>ォ?\rCY妲段PO濬[???5??クチ勳qxコ攵アト「?)?\nサミ?ニxニンヌ{fコl4虜ウdーサ採ォW・セリ虱nl!pン??ォ7MKx-^Uノ-?:?)ヌ qロ酌ニケ.境)ノァu;@モhレPアT先!寛ケ瑰?/a?ゥ?,uケ??/、in~]ヌ?*?塞!Xvマヲ*胚? ?i\nサ??\0w?楓&みBエ?(#ウ/?チサ?9I幣#驛楠ロ淮Rロモ!」\n綵セ位?騏N ゙?x?G#゙ウコ{ゥエサ?r \'??ト?D go? {H|7?リ?。pxV??ョ淫ャ?Y」イS? ~qテcワ?ア禳\Z3莫vo ?)#?ク-ヘ?ムT椡酌]Nホ?Viクヌ?k?埃イ逝n?tB?\Zケハ g\'\"?ヲB\"9」g?ォ?;D_Bイ?<シャ\rモ?cマ$眸\0B゙トョ聒ヤシ\ZM椚、ユbわ$%ャ?サクネレ?イy珞・?@ムu・サ\Z?カ、oキ?$$3rN?施c?ィ?}梦Mガ[(Z{~b?#ヒア?fワ?ッカjョV?Gh\Za???ユロォtエーj6ヲカ{a<端茉卷,ァアQワ 舖Y??アXンチッ[ノR?9d?$x ヌ Fぁ襃♪5YJ?d「サュ?蠏?\"?\"?,※R7ゥ?n3掌xャyュu)\"クセ需ョZ\rケu,ヘホ紆?モ5yユヲ?-=ニ」ゥM.?H盡x゚ケAe?!Y? ;g飮ュh\Znケ?/?・キ?Z@!刃![??;址dレカミ+ラ?ワテラaリマ?\0\0\"ヌ?檎 v&ー4ネ%k?/?,「?9?!?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲ',0.5808563,'q',5,7,'1942-01-20 10:45:14.0'), +(1979,'xwv',' uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND\nTITLE.\n\nMariaDB hereby grants you permission to use this License窶冱 text to license\nyour works, and to refer to it using the trademark 窶廝usiness Source License窶?,\nas long as you comply with the Covenants of Licensor below.\n\nCovenants of Licensor\n\nIn consgeration of the right to use this License窶冱 text and the 窶廝usiness\nSource License窶? name and trademark, Licensor covenants to MariaDB, and to all\nother recipients of the licensed work to be provged by Licensor:\n\n1. To specify as the Change License the GPL Version 2.0 or any later version,\n or a license that is compatible with GPL Version 2.0 or a later version,\n where 窶彡ompatible窶? means that software provged under the Change License can\n be included in a program with software provged under GPL Version 2.0 or a\n later version. Licensor may specify additional Change Licenses without\n limitation.\n\n2. To either: (a) specify an additional grant of rights to use that does not\n impose any additional restriction on the right granted in this License, as\n the Additional Use Grant; or (b) insert the text 窶廸one窶?.\n\n3. To specify a Change Date.\n\n4. Not to modify this License in any other way.\nLicense text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.\n窶廝usiness Source License窶? is a trademark of MariaDB Corporation Ab.\n\nParameters\n\nLicensor: MariaDB Corporation Ab\nLicensed Work: MariaDB MaxScale (TM) v.2.3.20\n The Licensed Work is (c) 2020 MariaDB Corporation Ab\nAdditional Use Grant: You may use the Licensed Work when your application\n uses the Licensed Work with a total of less than three\n server instances for any purpose.\n\nChange Date: 2024-06-02\n\nChange License: Version 2 or later of the GNU General Public License as\n published by the Free Software Foundation.\n\nFor information about alternative licensing arrangements for the Software,\nplease visit: https://mariadb.com/products/mariadb-enterprise\n\nNotice\n\nThe Business Source License (this document, or the 窶廰icense窶?) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\nFor more information on the use of the Business Source License for MariaDB\nproducts, please visit the MariaDB Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-mariadb.\n\nFor more information on the use of the Business Source License generally,\nplease visit the Adopting and Developing Business Source License FAQ at\nhttps://mariadb.com/bsl-faq-adopting.\n\n-----------------------------------------------------------------------------\n\nBusiness Source License 1.1\n\nTerms\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provged that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVgED ON\nAN 窶廣S IS窶? BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,\nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF\nMERCHA',0.9881897,'axwv',4,4,'1987-07-30 00:26:51.0'), +(1985,'hm','?丙ロ^Hヲ?w9Ljq、?ェョ&E1ヤ\'l」?エY;f・r埒1V家ヲ[m恩?UeV5;cyTョ#モ,6ォャeスアA?カ?ヲ&緋2固アUG足薗ン?ナwナs゙サbェ$ラ7#?.ムモカ5キ?ュTロ./オカ_\Zc?5レケ康?ヌ?5ワ螽ョヌhヌ@qU2\rh1タm?>慷窘d勢?C溝リcネ\0Wヒ|!T?;?#テ!゚ネvタォゥAQ散$ヤ冐?2ャlh ワ?コ??坎カヌ蜒ュ%ヲI?1???/U\rX}・??ユテンHメノサアゥ8ネ蘚? \"サm?ェウタ?,\Z?イ橿(1*?ネ?コebムタd}\'&壘y9ヲ エ?顕7ヌネ?\'?゚Y?ん\0而;Zi?P?pロI斜銷R処源-S??ヲZ43?}ル\\・a?ク|槞A魂ィヲ+k臺ャ隣r=Pシタ\'ァ??7????qモ?サfチキvO儕x?o4?<做ョスエ相ーヲt;ロ;?b鐙hマCL$スカ[」ヘ?-誤f$1ン>鏈\\%ヌ刀ッ鑽q「X?コЛーハ@?7PノタZn墾ニュqs\'5ヲハvヲ#ォYナfノy。ハd獣??ユ?\\\\Gm梶H+?\0(ンロ?ワzムZッ??Nqヨ6?uk:D?? 隙」隔=?\0牴V鍋ヒ %x&бワ\n゙?Iu ?=[?:\r<ニー小鮮Dn24ユュpvア$2゚N??ィ?ロ\0?\nwlEo゙ト之?]ワヌ城??5?壮se ム;KェP暦ソレ^ ット?ノ\rヨシ?g、?エeUサ??F@リ!G&7ヤ?キケ盲痩ハ?44ィタヤ,pkXワ,\\?萱エノ?:。咬#フ辰 頑UH?:???\Z噴ラ?リーcアcラ?Cニ(Aニ?$ヤ?V巓糎闘遏\"フタrィ??」+5エ?\0,Kィ@ラ+\"ェ??X?4sHZャ)鉛ヲ ?4Dァ?ヲ$cェsィュiN?U!メ?51?\n?。?4ュサKル-ワ2r佯アロ\Z^擘kン(アm?oイkソl菻CpJ???/GA駭?ソNt灘?gYa_?ケz゙?ワ<8\r\riセJ2」イキ拮:犢痕?\"濃簓VH梠荀}槨箕「H繰・p岳レ\nゥ,ィヒpヌpユ?磚\'AJ E蚰5}骼kvTイpV?\Z_Z5^lム嗹ヲ?\0k,?ヘ?$切3 南ラqA塚ー番s蝦ンノi t$zgKメメ?+sィヘ?ノP+セS?4oス寧kィト祓c鎬kノ?エ隈/@Ea?シャbV?\"}^゙BDNョ{ケ]IO?\'セ?愛笄? mLヲy「?ヌrシ楳_ォワエ繝P:W\nエ?\015?4.戛 ?リ菷ルU?9癜\'愆14Zt??7洪3?l>・=テ鉾;?yQ旺ヒ#:?心k=2込yh6ゥ\Z、ぼ6Hxラーョ面ュ7.Zw4F4h?\rZ腹\'??mキ假ョm恍\nサ???\0梏\"ニ、ラ%ワ?t?\0v?bカァ-Q??Wl\'鞍伊VV$??+迂ツオN?シ2Hkjfkwリエ\nイ?,x???pミュMX?\\J;yツ?$モTトlE@ロ.T?,.・@@ロ\r?4\'スs%タ?yリ ョj唾ュ\"ヌZrリサhヘ・゚「ンマ\Z?;ル,!カス?(?Kx?・?齣゚ワr常FE~?+H\rzリ$?#lBッzlリ[\n?。ノォk??-^?IツY。f妊6胙}リΥUヲ薩?-}?野\'7テSh#?*??g.W[トi唾ナP),Fンa=、艤F?-Uク?ヤm??喨ッェ?Jア?$\'哂E?;v??煖ゥ ?カ?\0\"r?ヌ$サメ3?NU「?#mヘT溏dネH「閣8ム?a\'サ?株\'Rロヨ??ND??J~イァアMウk孝笈ゥ?.S+ルOラ\\!mi?2?# _\rオMネ>鋩aK?\r?エノチ?$2,ハワ4tNw,ラ5欣5尠?ケ????\0\rwe?ヤツケ゚? 翡マ.?Y0f靈U?-係メイク4ロq磋??[$^XメV發iMハ4J+?Zヤ#コ?ヤp海?@?xsサ1?エモッL「B義H?+・L?7?kF\\?A6?F:?笳秩s?%Z???リ煖5X祖^?\Zァ\"品寢槌Ι゚≫コ?\nh|鯢ケ来=H?ク?v(?P|チ!?\0牾TM0ソ[*ヨツ %參\"=凾キ?._馼嘛?JゥロンM┬]?8サ\0?1V3ュ鐶レ赧V~G?\'K?鯖ッヲXュヨ?(}リ*8クサK ルケセ堤U6餞タ+S體?6?xW帙?5#\ZオQユG?-ラ?4qne???カvヒ?/リ??ヤ? u%遒Fロ?/S? #偬?_?\nリー?ワHハ忻ルS?[??/肩⌒タ痕蛬ォ*?b)??\0\Z狠k\"ルサーロ疇\"?ケチ窈コuニ?)キクB焼5?\nゥニZ}bjレタ v?Iァナ??\0タ襾M墻\rv-zサa?、43 (」?=エ!釶~G??\0\"ヨE???^Zオ傑9+フ¬「?7?\"@ュ%フ7ョ\Z_゙%ツ)1?ツ%_?/?ノ ヲ・1JrMマl瓢-I=T?ュTV」ー?lN、。゚クロ?? 。e(早dC?$rS???\0ホ?\'礒*ァ^」?=Uiリケ{dGWV ??-ク襠?W?WルFトu5?.?|?ワリu[楳CzQ?器ハ」症?ヌ.Iヨ?テラ????ニリXトヤ遮ヌ俤<椏??\0:Mァh-jモ碾Bァzナロ?焦? フ?G「YKァフョヨ?pヲ、裾ッ/?桀B8ッ\n釘[%>\\ユYョ!?3 . 茱コッ$??\0ルz儉ア? ┝=[ヒzュヌ?<ス4叩eシ?Q圉ァ・?ー?フラフ?c蹴剞ぅ?厩?ヒIシ玲H?オ-6jヌ%ラィア?ォ戚シソヨf\\,伏最イNイF=Rヲツ?#WIクラ????ュ助?ムf寂ng*ハ・+鵑ッ??>頤ロ?&ユ<ッゥ轆%弊0?\"?\0牒?>v。ヘ 3;ヘZヤ\"=錵キ縫z0?V゚焦?W -カソヤ5スEdjVi#Aミ・U?ロ繖\Zホァ\r蠑゙]e.m}7?ム。ォイ?]薺観E[穂b阜憬?\n灌\\ッ尻*?ヘ匕?\"?1?ヒ^vウ\ZVォ.慍?4\0RA?r?\0+奔T?z>?5?」)卆%Y;6ハワキマ=yラQ鬱ユdヤ.\0\r:ォ|?gァ?-テ?1?&?Z很 ス?キモ?/fKx雛砥?6e533ヒ)z民\"p熊9???7???「Fゥ\n?ャニ?| 済$?\0W%曚?-アモ$??0ゥgA,し粢」??\0ーlWCヨ?ヒロ??誂ォ?@ィ_?マル?\Z?$o仁?Cネゥ@(VェIチ塲コ鰓オ、業蘚ncイ詔膏\rツ儘ハ何レ潟戸S?>!幡榔ラC牧ャk?/N?アJミG|^?!V?G_。ア^&?(l}アB7K樛レ蘰シF?5ュU[?\'?l3ユシナ?ヲ殍シ\"Uリ??k?蜚EpMヲル>仏ルi? ィネ8ン1UEンツ/%i8?\0ニ\\%ユ/Eワ?Dトツサ ;m塩奐EB%*β^溟o?:ァ粍t?Yタ?\0\0?+\'r敲ル(鰄茱ヒ~vケ?旌ュ、j゚\\Rャ?ュ*?ラネツF?\0 ムENレ閼レュフ?9ュ\0?(&? フj?%ム#^wE搶フ恥shWヒ?aー=ニヒ;册%$?潴@C7菫?+ォ?門・E$;S?ュツ冊\\」?=R駭ッ$xj\"-E苡???壜ホKNdD_綜サN紊LーSォm 宴 cモ^゚ヘィ2?\"5燿\nQG?P6ヲ9 47ト徨ニkセリ1>ッ鏗?\'藥?マ\Zトア?「?,U!エ??,唯S?M8\08??7/ルタRz?\Zゥ?+Z杞P:wフフFユネ?ェ1トen\"ッM}ア?*?9?\'&゚)ロ゚5O\\H蛎・kF?蜩カル ?qN;eV「ケモ蜆ィX<1Tホ?2チ8・セァ|ェe慊ケZE4ス1ホiカ\"ニクェ?ハニ且凵ナWc?ホク穢Uフk?\\Uxoq゚q?予ォ?:系Urー*ィ9ォ?/エr需ウaWR屆I?/ラ ?xヘマヨ&桑 ヤtュ*n?$ュ vヲhカ#Y,キSp巌2A\'?ソフルZニ・ッ<ライ?ムb右\0\0qV?\0c?<ソァB?キ?\"XモrY≫?ネネネ???$w\rf秘??/\Z;゚ャ$メハ>%U#?ハ??ャ鏝\Z,?\'+ラqヒuツミトa?h?イ。S\\x驃?,ァ?\"??)??4ヘ&]Lネ#?ッ&\'ーィ\\$?E?;bヒ0y?ァ?スJトX\\スイク浴ァ%鑵6;稗袁NQ?罠?!ウ#TnH・wロロヌLa?Wィヲg4ハ&來p*?ミ爨ワ{? cテSヲVr7ハF \Z\nヨシサ?\0ォ科?ォミ?Q娘┯2?\"$E}驪??ヤョ\rメn豁ソ?クメク?FF?7ユod^岔IbトY椒ヌ%Zo做サr?0h蒟W4?piアハ$de粂、H?赱9拊E舘セЯェ導5?ュヘzLφv?2ラカ\nク? ?1ト\n^#v?G?kォサ!c!?*ッ0M;????Z+R\"ア服Wr况ソ賽)トラァ?xOd柩ラ袮/ZK??*、xaソ只綢? ?\'0凩DOu?オ殖ユ゚\Z2Gョ遺7i?ソ?ヘj?yスG\"f4Pv祕リ9?袱ァg/ラoモミ緒!ハ寢dヒz??ラ>ッテ彰$ュ?o?$コソ觀アォYヒ!oOヤ棟テムP坂_?ケトラ ywイs,?モSMラ?ャツEtォ・kニセ.スー{ゥ ?ミッP?pO$゚マ5ト?,フV疉Xナ>/オ杜U橡?=フ?<アJチWz售1?\r3ナウ?f?<敬F??-giラ-#ャA\"nJy際?狒/y「y%H lオ・Wキ?<綱昿ソ?テH?%衙>/レ??\0゙舎e:?\0惆|」#\":エ七?。?>ヘG?,ケ?ヨュ$モホh住)?Fol?-ケ}m[ユ?\'ツ?#F?ナ\Z?26詞ャ?i?9倬杙???5?ッ\0ノ?lどvォ2?*TZ蹉イ?;?/ョ梏梶Zネ$9&4フエサ[O-リイ「(P*トメソ札5??*<6@ュEWy棉U壥.\'jE%jオァ?>?\0J姪?ナ 「アネ ?o#コハDr]ソw??jUキ:迺?uェロ和FWZu\r?ノホW「Xナ,ムスレー?ミ?4ホ?/擽?\0+トカ?Y:?鯢(ヤF?訖?um、ヌ レ俄メ*ヌニ涎柬ヨ?ユ5 ヲ\'?3?j茵ヘ栲嵶ー-ォ\n\"枩Iネキヲa?9ンJオv$?ャ?(?猫゙マAメ4?ア∽?(甕}nc?$??\r?ヘm?ヒ関?Hミゥ*J?フ~o余オキエア,J?\0ra_出?規W樶U}NR??#Eシ}ユシン?・y洲堋、3IB ・??桟?ュC→Ko\nsZ\0VAJ*z.??$柆リSjd?キ\"?豢恤ル?Pセモァ[?ケf?\0S\0陬G尺Yオ メJ?サ庚+?ヒ<キ輌oメn 9Mョ??\0瞥?莖ォ 挿6*A\Zq2ルメッ?Tx?叩キ!A@ト?施g<ヤl、モ.・ウ幔ト?\Z?#LK゙、R夬栽\\ハx?FXナヒアィチミ\\?ヘfトX0#?#?=?sタ?qe?是J\Zテョ8??ミ筱ヤ@ャ曄慨ヲ\"F+oョ?*|pハ}8テ2*G? ォeォJ梁笄郁z窖セ[}?カ??:?\rRk y 鰯?ェuロ 繻キAモ?\n慨ル[f銖ホ$Alテl^゚畫OO ? ?2ョ?、3H?5F_*鈎M・・ヌ?1マ(ィ驤鄭ト?-N? ? 8??.暈箆(r?+\\Uコモヲ=c&3&ヤ}??\"掉?#nリェ?5?=rネ#zlrタ-ゝネフ1?燃?BケaL??;e。羣;竇?>.ケ+B切彗$蝮?頁-ィゥナL擲5;uチ?;ъcミク-Q?>?.オp-?c擧ハカ>PモヲKメp ?ッ??6??スw栗ト彫?Fミハチ?5&<珠zレノ.l畔。 霏nwチ z「゙Hgm繽逸]ィ?0ヘ\nQA\n?)Fロ霪ッ70 恠=イ?+4[Dュo?,ュ&}ィソ8ュゥHロp贖掴泝? 。E鞏DA&シ浄eW#?dミZテkQ-ツ~?n[ツ瑜)Z\\iレフPフBG*?,ァbソiソ?9a=ヌt惇毘ヒ?ホ偕ワQob+餘??9ッレOオ戦^セモ#}\n蝮-ョェス~]?+d゙?V奘?Qフ6_ン ?k引クー?\0+芳t?<レy?ョ?+?孛??\0ウ?1ュゥQ3ル2・ワ\nHPト? ?ホシー假l@<ヌナ)?ァq\"EァH?,6黶G?? 愉??、??>?Zw]そ???福Zケ朴Cフヌ岨nk?莪itクムtセ?\'y?VAコ承?ヒ眥E濁&コw%:婦)vゥホ8帙?uehオ孛耗繧Hネワ旙與?ナ?9%V・ォ。禮|,~ラ??^]建ュ?2駅x??衒KyS #?ニ?\rョWPhレォ\"?ヨL?疊2スサ廓籖ナ~ラ|菜jwnbネ\n?O?u端{f蔀Q\n)?ヲ?ッm据゚リヘ\n゚スワネM@?8ヤm$アシhョ[?oソ゚怒ォ?俑アツ?*O悔ネ??3サ?4u59?^ソャ=?E\"?\nzモセF% =メェ氤?>鬻?Sミ\nラq^ソ?m.bラK\'p、?9v3??琵Oケ5櫺}:@・x2モカEッeY%yxゥ$??{*ハLホ*ヘラ ヲキrョ邯og!Aトナ\n Sキ>?50sXHQ?|@jvョ遡?bテ??見&ク,(?4?1¢d?? ヌ8。ニ轄アTヨv?゚麭ソ?#?ルセヨ醇,SaC?(ェ? ノwB,u゚{ク荊ワ稷ンツォ?\0bN@j蘯彡Gケ>,q?ヒ1ー?ハ耘キネ?)ロ.Vm?ョ7ョ!\\、ウ(ョテ?案U?3S巻?リル\0Cカ>c/?LNB o慣ヒテ15ハ倆?[S班,敬_Pリ?\Zvニ霜亅|ゥ渇[陰J5+キ?$,pナZ#(ョ(Mw=q2kカE-イゥ\\ヲロ(!S=Xaシ壌)ホ&?zタiライBソb、ッ??ux鮮クォサンQリア{牘U?レ拯ツYM?ユ?K、ナIッ¬?゚31nスーヨ?qク?ニ箝ヤ厳゚ョ0\r?槨ォコtフZサT&リヨ持qU2?-N?。Mア乘\\o Y噪弃 ーサラャUゥチ&?6ハg]ォ?杢*エニ。フロ?1Wsヒッ?$E1ンゥ涯wヲn5驩Aヌ?5ロ.*F7粛チホ(X\Z畄?螻ヌト\Z秣??彦*、ハNa|~縹QO<ェ Sリ??Hオ\"?榲ャケaI?:etヒ腟P\ZWョ*ミハハ髮\\?ラ喉ハ?;モ\rキヘ\\?\0ィF\Z?犧ハタタ?U;獏ィユQ?Y樂ネ窒A鑛吊6モ彗カ\'蝨?メ?1sト?1留セtュH萬>タ?LS ?G3フョ?$ア}bユ8ト?)セ*眠J~ァ゚\"オ」7ェヤレケ[$ョ?)/?w8&郎>? 0.ヌ゚?ュ>ノ9ワJzd^?I(Kハ 7&「オノF2<食@M\Ze?)?n Aュ~倦yzm;?!\nォ*?9ナトニy\ZB)ネヨ?&メ?・IS?ラOァ.8ヘ1{I?スネァ{d_T?h3凵?\n5GA???,.疋ュタ?セ9?娶R& v?ハ?7L?GヒVW斥>?#M$@4格ー=i?ョF?j箴BK)\nkN-O??ヌ<牲cbァリ貂宅$g?j~y?\"yツヨ氓ィF?8%tサヌキ7k???}ャ゚\'?卩ヨ翻オ*?+?)=ノ貂ネ?,(ン城゙Uヤオ縊H\"オ#ソトケ#+}、゙\r3U\0 魏5ウヤn?tニ?ミ?ヲ\Zレy晢?婀」「1ォクッソ?9 0燭 ヤ??ニス@9 イメgサib?>f河z?q豈6$??- $6F4スb/ンシウ\0?・dュT熄)、授゙(Xz-ネS?桑営RェトヤW5ルF伏???ト@ヒG&(?;ュ0Qヤ?L3ユシュu、[ュヤフ月E8奎ツX蚯R@?y?ヒォ!ァフCト?ロqCヒョナ{rNノo?\n=???・!キ榔桷vテュoネ?ム?-QF??h?9\04W? )モゞ帚49Rレヒeu*ネhツ?&ャ@テマ?n昏テ? ND啗&イGot#|蠍キ嬬ソ$4?,sゥNユ^g?5・rゥBヒ1\'ゥi7*ヒJ盻m惶Cラ]a束?リック⊃GLョQ 、FIZ鈎2)?(ヤqヌ4鑑ョE+-\"U=paM?リ\\ F|0uエ?ヨ*?5崢フз ホ?:?2枢?T筑5C7}?ッAmoU羹~シ鐫1-S・0」Yミ」ケ?ヌニ{?款」Tu\0Eテテ鴒メi奴ア?#|ェリ\\ルワ4r-Xサ?Sg%ヌナ儔「)ャ?ソヌマ゙ケ0モ?モ?l%Pヲ:オヒGPユ#艇boカT\0メク抑?掏cョ*リソム?オe?sラRヲcモ79Gテj8?0ォ樂kア゚|keナ*ヒモlk-(kラ\Zァ,カ?8彬嶢?疑ケ@o?*u?ォ恆又ホヲクタ?i\0\rウe椽?亂櫚」畢リUトvヘ藍棺セWLセルTタュ?賚完?活ノ?A?桜ナス?R纒hz筱CヲP゚6X?U#倣恒ミ植?Lユ?鵐?4ト?ァcrD慌審E5\'?#】擺チトェ&粢ngg?シi?\05u?9W}セソ?<チモ??\0(<0%@\n\Z諫Uム寝?Y、タ(\0~P&ス6ハn囘P?\"クUム?レホxモト?H繞ムSp|2綯??+???゙?モカ 需!]筏紫ツソk8Sハ搦ユニ|jユ}・タ甥僂-:aユ?7t?蘊ノ?ル?\0∧?6?ョ。mロl撃Bgァ??フ。「z鮮ヤ9&?\n} ゚̄ Jュオ?%?\\|ラ? ??zvハノイノ喧?ロ瑠?2W?詔テヘ5[eu?q\'?9クカ忘、h?\ni?V\nム迺$h\\メ?\0ッアツy!;ス )<???$o,ヲV5,??ンヤュ |?$\Z^跫?@bニン?#糴潮ンロq?+\Z?ィ\n「?\n?8mォ」p「??(7P |ヌ|!P?.H? ?Z?・|\0?輿?HンゥL=?8VチDBャ瓣?ツNハァ・Mナ紀ミt?1啾・チユ航? ?z9=>Kメ?u迫 Cxtフオ?)メァレハ%糊?癒0Rラp\r;??\"筏]j:\Ztリ?$エ癖?k?\0oス?\nau璢?!ノ疫鬨ロ~ _ \'゙opス?#塞nVヘルウfナ\\7ヌ佇ニキy弔亂柩ルアWfヘ?vlルアWfヘ?vlルアWfヘ?_?トHF假Q?Utェ?蜥O\\オ・wナV貮ス;c1Uム??朝Z 参\\Rキ6)鱚ヲ(k6lリォウfヘ棺6lリォ?ヤ??X4髟?\\\\楮ワルアWfヘ?M?$ケ?稔hカ?タpワシモ*k?ユヘr4nユK6lル%DCh?徼カ/レチWツワo蓉ィ下bゥi4ハヒcS\\ャUルゥ\\リスーィqU??笊\\ネWョ\0Unlルーォウfヘ棺6lリォアハワqケアUF伐ヲ\'?6*?ウbョヘモ53bュ誰VlリォアxQ[ョ!?袈*?\\ナ歌1U?ヲTq?1熙dテ?Bi?翆粗??6=?X\n,dチヌ?62\0。ョ?x\0?5J篤Wリ鶴?。?カFdrh:Paヒムp?0メ=74?モシサョG、yv?ロ?\0??「ュテ??^\r4s n\'?z沢?{sヲ?柵?3?5ワハ??ヲュ#??\0^o?9穀カスハ?#?\0イセ・;?(ナ黝アQ,??\0ケ陜:?;リD托P+??\0+?猴\ni?マp?4コ食cAコッ??\0?ヤホサ・モ-謫ゥ・P??滲残フルカリ?ケ閾s!ォャア?)ー゚?? <モf‘オォ9キ忿ノェア?\"2ォ2?聯??\0c?/,゙?-1ァ\0I??)Ok?;\rhTP65?Mr。4?1レサ??\02IZ!。レ?Wアケ\']?Q僊?j畋゚?牴モNApツ\r但?ツmNム狃q^PH??7ヌノユ?$zR\n\ZSj?乾%恕?チネシレヒS?Yト」殤N?\0??+侑ク? ツY。Ю)j?H)???\0ナX゚?#俾:瞥1ン丼Aリ4?\0??釼[?1枩N(aラ???\0渊ホ側Zス? メ?湯ソーカオクカイ,ュ P?腮=do蜴_ン|9Eiタ7\0攷ア?イFク?/@H?20 vP?チ;Z? ケxゥァ開ソ?蜉ェャ懊~ッ、7レc?-j}駭?ス+ソB?$ク\n゙鴈%?!」\0@<蓑タ?\0キ?2bD?_aRMLj?ハ殍:?-Hjw V,ュ _???イ?マ直?K<:フ直ゥナ?zヘ9ゥ惓#ヌ$QCノK去Tレ忸?変#() 孵?捧穿ヘ??ノ=シm\Zトオ%ヒ??\0\n叮4「?テ(Q *オJn(>テォ柯ソケ桐6ォo゚ンニキJOニ?????\0,mヘロ?s蟇ヘ\nリリj.築悁I5CW竰葺?QノーKス濶ェイ゙ワU置HチDムヌォ#|_?8?;??サケォ1xッUEシkユ\\*?\0y?ァュr!R5装[ア。??NHシ?ノq2ワエ$q||zr#?YlィDトsヲE蠖?欧蝿軛イ#]?゚\nシ?ィハア鴃f?星@O?ォ端マ6[]ホ-?kiヨHユ?6\n[????Yウ??ヲj?ムLヤW私モ飾・lョ)eヲ捍l瓮紐$\'齋!「dT?エ??ヨLン淹? T還ホヨ\n?1?\Z@w。?&ツラ壥「aチスR?ュ~/?ォ儼G\rチ@韵∧ョYCv%Kヲ??*?ラ隕.タ\\8Bム@ロロ?,概ミ蒡ミメネkSたV妹ヘH\0}a◇&歯?症\0ッ$ハ ?-TエLヒ!M:?ウ骸jf41p懾?モ =MキヒFゥィ?碌ejキ,Jェ?ヤ88゙W「鑑ョ>Z?w8a。鶯jRImャlQ惶?/?ァ%ネ#僵タ窗楮」@??ヌK?蜑但チHx?)Zラセ&テ*、ロ稷1Cカ0モサオ1幡;。ヒcカリUb暃z D\ncニ8各Wwハヲ庸フ]2*ヨlシタbュ衲-硲。?リEラ フ梍LhマBi?.5P纃cヌ ゙ニ9ァ?G?N{モ濬~ァ蜍?&15?ユキ\nXs。?}シ\0自「療\ZIハ\\+)\0)??_??2Z78ォJ淳ク\Z:S?oせ゚?」膊Wヒレ[[It?B頷?$ヘ&・>モ7タケヒ+?」ト) メk?dk塲ユ舁L/+チ?ア?=q?緤??ロA?rネ緩? (@?狂\n崖?ミ?wUャ(}?ヌ6?オp+?8?uヲ]pォ|ア?:ケv4P?ラTS華綟48」ハ?1?0N岌\rBoDクBU?\'・Tr??ヒュT?8?Wク}??|cィタメGC?*臑M?チロュ2鱇_ノwトノョ4ラ(\Z訓ケ[C\\C亂\"」>リメユ8瀲エキC垪?メ0*メp~素?フv\\クャ罪カヲhv曇\\ゥ?T?L月ノvoゥ)??yJ@Y\rjG? -?/シン2ロY?ヲ蜿J{獨モ衲?ナ?2ヤK葡J?ミオMwァ??*1S_ 琶^g1鴒?ヲ3ト?\'?9dTオpI6転?SPp。 ニ?Ybコ厚烟??ヨB<ソ???f?>W 葩??ノタ?\0敕]8圜ΗNBQ&ヌDキ擬ラ?7?*? ?=ニD?I腦9?゚\'?N瓢Lケ7源=\r)゚lejp。yaテnク??X・6ト借USオ|q殀ヲ[Hフ? ?瀉gnクPエカ?\"ケbF?\rコ烝5ヌ\rカタUカ$?ホ)ネL彝ルje?6保,ァUlw蕭モ?タ??\"@鴆蒐I?\nモ#4?2=UD襁ロスr?\0甼屆ワ1d續?: UDッ||S4f?ミ螽ョ4鈎E?D櫛B髪モ?-u2」ノ?0サ」テ*?(梛H境モ.トW゚ヌ?舜\0?1?シr>9R?提e?eG?テ8n>オ@\0Pl鹿IテォHUュノッヌB\0?イトc項ト?・_E:M?チラW?!?髑=)ld?レサqテK抻7ェ堂ョホ\"Fテ?*w?\ru,b豹U?,8?カ^Jvァ?\0ス\"#ー?カ潛Tcケ9Q2?#ノR?$ァ\"」f~゚?ニ碆轤j??PネG?ッァ?\"ONDS^$ミ借ス?オェ#F、 & ?{S筴?(Jヨヌu_1[Iェロヘh?\"「?゚?萢HOォネレ?\rツr碎潟?ヘ悵 F誘K(李z;セ?\0?t? W?JJイy?9y<5M剃チョ5 ロルy,碕1$*嗽゙究メkコu?ヌ?,?フ\rC??_iェiZxサi?2ホイォ?\0オoオヌ\0h/???A<7゙ソ?Hム醵嬰>I?圻?zレxメe$o\n}ゥ?ノツ?]荳ヤフzェャ?篏Tt??>?}*?\0?4z?ロミ゙ォキ?セ透/?ル食ーJシA撃I??\0瀾???諺ヒカ?:u?+na?q]??F\r媚シヨ5wイ?\nツヷ&篩??ヒウロ「&?褓k1C@?S蜿3ロyq躰誂ョハシKクゥ?\0dルY?6X〜?シタ?馘灰Aォー]セメョ!・y禍宮?B?}・ョG?ヘN痂卍C=%ュ?ルa?\0ヤl[N\\+クァァζ?\0?0ル?ル?嗅,/、_N柏QG釈C ilト鮮*4逹Mキイエホォユ??\0リカF#メ喊rハy冶ツソ?Jュ i*?\"\\jコ\\7K?-?ン?ヒ\"?・メ?睾?,アGg?鬮\'.縅+姓4?6ィォl6 ?;dケHル1?シ拂仲??\nオ\'?:<0ニ?1ネワh??4EENnI!ヌト6Z祐ヌ,LW丱P?^?wチ?FッI?ムコ\n墟???<⊥#ナメ岔r1vッ|sT絣?5ヘヒli\njヌ.O亥*モ| V?W.ァ?8?0ィヲ8?」ーォvトヒq?\'pv8?ニ?ャ\n弖オ\ZMz褐jソLRォネメ僉bfァ|?リ。{\Zf稘慟8・?*S*イ??jク?)マ肘?Tゥ囈ヒ&ケォ\\*灑チツqシー。X? フ\Z」\Zvタォォ?+ョ?1V?ョル@Sq潅^Lア\'レ曹徐タRアルI?2。N/q」Xi\"1 k?rクk\n愬;蛛磁p??!Q?1ネ?ヌ\0WョXユフvヌuヘテテゥイ?8筵{eRクェナ?差ニナS}?*ク=Fリ拠z籌?1&゚ョR8モ?8タwツ?瞭bャ6ニ?モャヮ?&凰 篳?jー@GLc!8(奨#絶ョiAz|rツ?)」瘉緬Zォ斐Z゚ク髯?6?ケ水烱\0??\0g f#ケ4サ? RチQ?ミ#.??t*OA繞?8?mvPX@ッ.剏kロ3ヒ]ア\"?\0~Lェ??1ヲ0M3ョ,+Zッ雅?レ顕膿[?1?#。゚手・Wェ東ケE?惰?;??qャユ5ナ=OM゚?hC\Zk?>?!沖?グ?S*斑V拮i叙ン8+Fワ?\"?1U斐}アシ笠ュア?クZ^e?ヤT羨?ョ*シラ lオ崕ツ\'<Q?褪ネ?5カma遨-!eeャ畑>?ィ??Pイ?$\n|;dh\Z罠??.\"響ヤ$ソ\n$?銑Jb、cノー.c別ヨ?0愼ラ\r*ィ>|r?勉[ニァ0?;縲?s〇跡ォJf F緲イ?3|;bォjkS?#゚ョj甄キゥヒ,?+、ミbイモ?\n澆ミO蠑カ?ス晝DfBェ|,=S捐Iソメ?i竡砌K8赤且<9;?タ砺ネメ・)?,シc+ワ太$傘ラ+檢蛻M<ケw?B&= \0~Yロケニ?)?マアHba\"?」%\Z/?.-d縒ワ綜?Hクe?スミ苺Tャ、3カ?Oqc嵬U鋒?Sq喋oヘれ゙H物ツ)瘰a1U?\'\"RJニ<コ ・;?8?ホ?チヲンマコDロoモ.リ0A毒ケ.ル,?? ?%、タ\0ニ⊃?+4/ Qナ2縣ソ?0ワS「$\r=?Jカヌ綢ラカ。\ZFjOol?2jウOトト沾9?rホ柔院)?. ?勗?エ犯サ?(???噪\nIヒ?,\0Tゥ調クt?xテ\"キ.セシ勺y?ロ\nニイ?Nト?Y=シ?JA?、uj畋8\Zホイ|kスG\\トヨ捕Kョt?9]ヲクJ??モハ?スイ?゚??サ+!SアヲG? ?蕭S~ァヲJ2 リA?OG姙?ク\'?玉?ロ Ou・hユ??:?、Vラ*?Z弱j?ェテso?ワォモッ:ョd 5l}ネ;?ゥNムヤヤワcmッfイRンハ7?8?1nヲクフ櫟,QOv?\nハy5z?eォノウリq$?aHヌギニFN8}$ニチツ?メエ8磐ネ\\為磔ツ?$F莅j:o鏡・#ッJ檍ム[\rシK(艟\rタ?Z?(倹Qヒワc?lヤ$ュ(ュkロ+ヲ=O猶\Zスイ*ヤuッ?搓80lヲ゚^?#ト粥ァレ?sフJ?\0寒ァロpエ?垓\n+?1Y?ヨム[,jセ抂!Zア?ヘ、ァ\\蓋nロ\r?l|r佰%鵞~リ?0ェ?4ハ$総ウ7\\P?譯c@*Nj?ΩヌオMィz紕褶゚ViM?。Db搜ク?LUz嘴袮|ーNE.9cョc?0*?ァ|c\Zf5)アUァ5+?-F*ユ{eSz紵ナ[ヘロ*ケUナ]J忖8嗽ヲc#2?\'aR>愆。iスj+仝rッカ)uo? |ネ\rGCQヒゥ5?ワハV?kMゥ姦b?モ聳サc\0チV1トメ?゙%#???(xay賂ォ?)瀬Qカ8シャ体Zワ? ?vタヌ統ヘN\\?ザ?2ス&\n\\nS?V欽?R?16?-メ_R・??U+$WzQヌKrpT{Qビタ?\n\Z棘jヤ5トェエ?/ヲ楕 ZWテヨ?2??タE?ッZ?ヨョ\0ォリt ヨソ?eィワf=1W?$f竭カヒ@v?\\@bゥt酳liヌスメヨ??%サイxミ>モ?a??ヌ#R?\r|*z7?嶐スセ? Bエ?バ.= w?傳閉P破ウ??T~g晋oラ葎8没8誅~C%ム カ擽\\?B」?8q??フハ25ヲMハERhi?\0ノ ョェヤ\'\"R}j^E{n~?甞?x宕Zツ?&\nwヒ刄tナTウfヘ棺座ラ?5?*?7Uタ?ア匈・vlルアWfヘ?vlルアWfヘ?vlルアUXヤiルウ+qニアゥナU?6トウfナ]囗*ナ茱?コ?F?ヌ?・J3fヘ?未ケX?48ェ\"(リoロ?)N?\\\0)?\rMra吋G?\"タ隊ネイ?I\r?EΔフ?8??&6#イ8??Mz}ル#m。=7?28{?? 9:2テユeエ-\"ハ? ?ァ蘓<ウッ?:5コエモleォッ% ュモ綣??iネO奏?5#}lシhm$p\r*J斐?\0ノ乱ヲ??ッ?琲?ヒA\'%?\0?12岾ワ蘂陏カ?士?\Zミ.?ゥェヲ シoォレI31?華PmU?\0+??ャ?$M8F?\0。 Vァル?ラ??サ堙JィKIu8U宀゚o?oウkノオ]T]\\ロヌk?3I4淡タキ??\0?#ホナ葮頷曖\0?}?@?=臧?RC?\n??\0?ム?/オ?エ{A玳v?]寰Ncm??wТス1Sス9カ?[\ZエaGEッマ?(ル[$」T糾I鬆ォ?\'~?\0藺弗~寧ァィヲk桟4T4-\"ヤ?_?皰 J-z相ェーzaF、アナu\rノー、差??贖6n?ンァ5cAN 7?8ェ ?H サN) アr,ンェニ>ォYト唔癌ミィ?+篩gヤミ?\Zgユl?\Z5ePkキ5t??笊e?\0_\nソ15dウメ?ーチ罫メ4#ィcV??ェ?\nチッ,?莠ヨ覦]壥.fイpOC?yフ椥?ネ戚[??Pxロ??w?偏ユ藪Aオ7廰キ侃0?Bノso?\0ヌ|ケ蒟メ5屑+ィ?)ヨI!ロモ?シ?リe「T$dmo\\エ?尅隷ョBー?=8??\'マ?=\rハ聶X( ???\0Ёネァ? H筋ネBニカィt。薇m?マ?$wI$6?沓D#潟?テ?イ? ~望W?\'ヒ稾ュFF?\0?Ftヒ?>)琵?タソ及*x昜C??jx葷E諷iZ?(r%/?シU/。\"モtス*ニハ[ォ??9\"ORト?Goハカ巡「ヒツo??\0Kv??ユチ儺?洲ア?n4?#ア-?$? ッー?艨゚袈ノ?cUhu8叟?ニ?薨ホA?セs??オケz?ン4)゙ツ臍嵬0ホ??>ケ?;?ヤ関w6pワ*3ー壯?\0蝟l???#?>? ン:ヲ~FヨX盖S;:Dアノケハョ??\'楯殍ニ鞐ォ?=\Z藾ムレKыh戡\n{忝肓?qホdソQum0G席? ?ク??qV犠* P[Zト?畏M\Zッ ?2蓿{飮ナヒe uキト^?ラl栂[テァ卅?-トyfチ?r?:奮?3x-\"唳t?;uマボォ\Z5?ヨfカエ){&ワDU@\'クタ9タノマヨキ^?r4KXu8T]Gオキ@?bワサ4E?Mミ+皃レ?カ1a嬋チf9$キラ??g、E 幵p?厘\n調オ酌frソ慶メーuスbヌMV沸I0?シ.ヲF 璢&エZE?\r帥些???Pi-} ヌ hFモ?=^Jh??%ヘュ、「I1蝎v方?コZシ??1?#弃l??窮ァッ\"スキヤwマ+yFヒ;?Tj、*コス騨#ク1徨\rn_?veメラWカりネ゚タNカ?\'モ゚??ゥァ関疸?Dヨ?ツ弾)8S鍠<耙塑OB靄n劾」オ誘モηoワチ?8邯~??T?ァ.mヲdX.J飜?<ュ?ゥォ幕ヨイiコIメ?滉^MメBメ.nホ3キ {ヨu?ロKィ[齬?\rスィ頃)ZEaネbケタホ}8篏}仰涸ィ??eククイウユLSAア?塞茨檣?5 ヲ?ォif亡ナフ\n\nbAΧ?\0.}ォ\'ャz守ゥ-,ヨ+hメ;x?$??ス+N2rリM$E閊气3%ンテ??&b|゚~?[・?ェ?VロオO$?レゥOコy#?bdrB元タホュv薬iメEァト[?\0m;シ3???;馴レシ?\06幸ヲヘqサ,レF?忰q#*桧?ホ>???-k蒟ηLFチv?7? ?=k塹?6゚?\'哂?? }}~?ィマ菊?9e\n?(\0マ-?%?\Z?:\rネ言髯ホ2?スjnレ??鐶UタテB濮?s?ゥlヒ$M\0\n1 #\0?}ォ侯キ? ニムアl,ムョr}ネマ#??Dモ6。m$アY゙テ Jツハ +? 辺7鶸KmlWj?6wz\rb゙ナpメナ,ヨ?c1ヒ ワsロ=寡カ~スォ lオkw[・学CA Oラキc?c辿・\"Ё 9?\0キ?乾?ェ)hR[u-エタア??桾7ュC cト便eR對?樔戈#?b?%?\0Nn崩?\0俘z戌?1]8?-?Q?゙+カN?8ッ。F2ケ?]E,フムn6?サユ冲」チ%?s?佞イ蚶?珞ャPタLlョ8?酲\Ze篳紐Ubxcエ浣。ョオ}ュニC)?>オ?マi(?>S?ョィ?Pャ2タc?「l?o\n蘰\0q??、Q#yN澁A?\0P?\0zニ俳キl/?夥モルンp8S?゙『??_?-コ旺夂L?6エヤュ?+セH?臘rイォ?v? M~連,Sツ鼎\"K?e# ?;ダ沌杢チ>、?\0Z??\0??=ュッ%?ォハニ9フ陽+斛オタ/4。T?メ\0マ薗K(ョO#?xソGアiJW!qJR?R箱・()JJR?R箱・()JN?ユソ?\Zt$ 。ヒ\Zuア)グg?8?YーAVレ\nィ?NW?[5?mスクQ焼jノ?ョoセ)?ス齶オX?|ョ?タヲ+Tf(ヤア,フI\'? \0&?\nー?.|.#_c?ヘ{?\0N?ヌ?9sNン? ?ォ,銀ヘ箪ネ=ウ?ヘ,?柯シBチ巽\'\n\0??\0Jタ\\キ3ア?(?9ニ>?ー?3ミA桝?カフ?ッQェ10?カ哮\'カ?2?3P=Nsノ=???kc???enm貰ワ鎮xヒ蓍セ=マリTwI鏤М%ン?+n香シz南=jWSヨ籐篶ミハムeT(\"!惹鄙゙ケイノノ?「亀??2H?リ?8レホsノリ?^??^?鯲nハ !T{?j\rコ??\0ィoパoゥソj? r>+?ヤ」ケ覆k陟カ杖アl?鉉U?吊?+>ッmp$y#H?&;D?4吶8溏\\4ル貊ヤナ梦gフw?}y&?z#ワハ瀬J、ホ_ク??アMノク/o4?並a??*?イz??゚\\獰蜴?1?Xララ rq?m%墾%ョ|M? 8?z剰Nウヨ??゙゙4??Q?;H瘉?q?gVXIwo}ァ>?モl? q敕ク ?u醗?イ?.?ィナsノM?(y拆t[+ソ僮?\0タサあJ??7オhッフィ?|?Vマ??mb?\"??$??+?.・Hヨ&T昼?%? エ鄒??Xヤ/カ?)e蛔?・LOゥZ鰒モツdD丱I!\'豹y?L饂ロR黎竒fアA\"イ?X?⌒w羯?ツ\r吊\roゥョュzコkkwフナ00 ?脯bイ??Oメ??、コ實07\0}セリマ゙「オMrヒC?サセX?&ニ攵ヒ殯?イ=?]Kpo-\'盈\\キハタ冪1薇?\0ョ1]忝tf_:n+サJナui?ウ+ハ?ン掻?z?Uキ・ケGーyムK$q?ヌ常^l?.ョ程}N鬚ウコD_旅\\エョ?.yQ懽?キ蹙Mqu?[\'ヒヌnxJ?*?\0?+κヌニ(シHセ「壹PムnラOx奢Bv?」対リ?\0jメ?メzカゥヤ_!ィ@゚サ瘻、炭?+筑3チn=サVルラョcK」・06タ!!cT$?タ勺ャュ\rエロ+t3゙椋?ノeリrO|ヌ?/lオYP鷽豪Fケ??>Qン?dシホI? ニx?オ顫Vッ%?\\N?0d婚;?xレI? 恊3繋[堋LI ??\0+(マミラ M.メヨI謔ル諫?.3唱CMq)=ムウh??4ニBケ@臍ク#$檣豸$qエqェア、c?uャcb捩1?ロ V\\?hェTJGOT到k_鷸.豆゙ノx?ナ?E/?孥6逮>オーキサ??~ォ9祥HIーワ?\Z緬5?ゥャh6ウ鼾7硬9 lヒ*ヌ?G鑠\'E?」鰻モUモ.-? 。|M猗? ヌヌ8ァナ戳゚Kムョ?h゙9?$1?2w?Gリラ懃 H幽]忱\0 戔ヨヒナメ*ンィ?,3t?。ス|o腟,dp??8ヌセq希oR?゙O苫 ム?.」?3テホGラヨカッツ??ィ>\Z゙tvサ([;vメ暫?ク\'?jョゥメ耜オ9t?>*+ーR リ;Nxホ}Gメォ7ヒk「イ}鱠1フネ?9ネ?ホヨ茫8|+●? Tンナョ毳ヲムツサc*ァkソpr}ヌ?if_?シ2穩觀p?カ?cメク?\0Βハメ杠Bロ^&?$6??0Oo?7?-米q俤カィ?ニ=?サヤ,マo$セnメ1Pvキ7\ZKクWY柁|&?ミ?\0zイ椋メn-?\0?eIh綯チ?桀Z駿R゙mC)イヒ\ZmタFC?\0ィsQmヤレ慯ネ??#&ツ~ヌオtGヌ媾梠NiコG^。u3紀ミ7?.?ヌ??*?.7リレレロ6cケs苫zq??\Z跌・rdT-橄レ・4Q%トゥ皓f櫚cヤWFT?2E{dEメ親@$d??px?:」[スフハ?(<wキュF_[及Q?ケ\'カィ???? 鏗Uケネォf?)! #\"鱇>レ??\rk)vキスオbOヒホ?Pリ? 2ー#ム?r゙ソ;dソ革_ > N墅衵uト酌???レEbb?y馬p@?Hホンァ?シ??*5Nナ)J。\"櫨\0・)@)JP\nR?櫨\0・)@+ポキ?]I。|?エ霓=パu#イホ?袍DTクネAv(」 ォ/?88ッDラ贐ナ>オ帚wト?ォ?\'缶B-?&>hm塘@$睦 3カ ョ?ンネ選ヒ?+カ0aUメャVム40yp?忝??ニi?%ノ5lモVニKノュ栞Y##!スタ>?I(F惰?tョ檐コツ%クフ?_ソ??オ・騅:>?詮Yタcクr@輳??ェ7・4殿a?A、C;ンニQ?_zェ?X・ヒヘ慇#ヒ膩o蕾タ\"ケ蒟傍コ,ゥ?!uテ2ヒヲiLc゙vI =琳j。゙靡ン「Yレ+s??ト{楢*1?、dウ1芬??3[Aキi;?&*;.yA?}ヘuGゥサ1樞K}ノm+*?申?\0オv魍G{xュィL?ョI\ny??]WMユヒ4P2x?q#nレ>セ?5iァY似スシセク礼制ヒナ癧.s鯖?ヌjIメtx3%幅?ホアs&ンア?フル?{S]}NW?シ#y炊iィハ刀?キjノ鎬.?{ヘI謫lQ俛キ健Gョ}9ヨ\Z1エムョ$0Xヤ゙ォ?[Zス?%ヲチFa?2{歡\\貧ル。?Pヨo/oョt?\'カ?\Z)拗cワ^2Jユ躾ケ?;]\"ラM?ミ{サ、レ??ラ??ナ。?アdッ?#聡SQコナシzトカ)ゥHイェ?己F?ヰ{}1Z)・ェ+Fケ敵セヤuki5-\Z ネ\0?I?ニメO \0ワ涛檎モ#kム)ヲヌイモV)vュクNミ后 ?3ロイ{?^・メv3jk,7賎l シL]テレ\\?$rjヘァマ。?:lイ]チw?7$ェ膨櫻Oキメュ)コミHィ?=_、Z?6zD?5コ&ンJRθ[q;姻?勵サム\Zィ鯰徂ャマi0?レ駻dヌ#x=マ\'フシqZサィ4[~ァカoンカQ?ロ疝ホqニO峭レカ?テンPメコA4]Rルウ0Ias膩爿? W/箔け? ??QtゥッY゙?\Z?&bワ&Bネ? ホk]チ{ィレャ?67w*ムニ洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0??韲SFNrF?トヒ[i?+o。?シfウヌr?nX??%モtD」ノ#U崙ナ劵R_\\ト寿Q蜩ナacUU? LHQ熾z?5\0Rdョ.螻箪t??Ne?ュ:I?$C? ?/ュヲC{qツノ「]G!ル:?=*??T*ソr?7瞳エ?!?\0?\r闢?スMUJO○Hニ?レ!テ4鯨,?\rC\0n?{囚?ュ9}<カ?ナケ3ハd.イ? ?詈ョfngv=IョL跏?)\0(\0??\n\0?エn :?)??9n?5fγワnヨッ7メrミ?類コpヘ ゚f/(レp\\GトHノ2ー>?P「lmウハォト?:ュトぼ 梯?J?tKwhー?<1ラAコ囹+g8?m&ノ_[ォ\"?域?@:衍^アレキツ\"フw??ョヘvd??1?7s/ニG????Sヤテ\Zャ|ソ??Ck}?5ト?フ?H?逋斟ヒRk跏?掖?\0P@\0\0P@l2鱗?ウケ?/?=?*セ\Z恊篳、2リ?マZkRC&ソス?ムォ無?(婚ボZ?2コOt_氣O??{^ミ?iS潜?ラハノ&RXムコ??コメス\\?\0\nK?。エW框n%i\'大遜ウアb~讓懷7rv5t?\0P@\0?ル?リ??\0JFIF\0\0p\0p\0\0??ヤPhotoshop 3.0\08BIM?\nPrint Info\0\0\0\0x\0\0P\0H\0H\0\0\0\0レ(?????FP\0(?\0\0P\0H\0H\0\0\0\0レ(\0\0\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0\0\0\0\0\"r\0\0\0\0\0\0\0\0\0\0\0\0?|\0\0\08BIM?\nResolution\0\0\0\0\0pU?\0\0\0pU?\0\08BIM\rFX Global Lighting Angle\0\0\0\0\0\0\0x8BIMFX Global Altitude\0\0\0\0\0\0\08BIM? Print Flags\0\0\0 \0\0\0\0\0\0\0\0\08BIM\nCopyright Flag\0\0\0\0\0\08BIM\'Japanese Print Flags\0\0\0\0\n\0\0\0\0\0\0\0\08BIM?Color Halftone Settings\0\0\0H\0/ff\0\0lff\0\0\0\0\0\0\0/ff\0\0。劒\0\0\0\0\0\0\02\0\0\0\0Z\0\0\0\0\0\0\0\0\05\0\0\0\0-\0\0\0\0\0\0\0\08BIM?Color Transfer Settings\0\0\0p\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\0\0\0???????????????????????\0\08BIM\0 Layer State\0\0\0\08BIM Layer Groups\0\0\0\0\0\0\0\08BIMGuges\0\0\0\0\0\0\0\0\0@\0\0@\0\0\0\08BIM\rURL overrges\0\0\0\0\0\0\08BIM\ZSlices\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0:\0\0\0\n\0U\0n\0t\0i\0t\0l\0e\0d\0-\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08BIMICC Untagged Flag\0\0\0\08BIMLayer g Generator Base\0\0\0\0\0\08BIM New Windows Thumbnail\0\0i\0\0\0\0\0\0m\0\0\0p\0\0H\0\0準\0\0M\0\0?リ??\0JFIF\0\0H\0H\0\0??\0Adobe\0d?\0\0\0?ロ\0?\0    \n    \r \r\r   ?タ\0\0p\0m\"\0?ン\0\0?ト?\0\0\0\0\0\0\0\0\0\0 \n \0\0\0\0\0\0\0\0\0 \n \0 3\0!1AQa\"q?2贈アB#$Rチb34rびC%担??s5「イ?&D典dEツ」t6メU稙??モu胚F\'筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐7GWgw?ァキヌラ銷\05\0!1AQaq\"2¢。アB#チRム?3$b疵rCScs4?%「イ?&5ツメD典」dEU6te糘ウ?モu胚F筈?米ヤ蔬・オナユ襄Vfv?ヲカニヨ踐\'7GWgw?ァキヌ?レ\0 \0\0?\0?棚%)$瞳施セ$如$ミユK#總詁ヌゥヨv?4?\09htタaマ\0サ?\"G??ヒr較C}:?p-?? ロ?コカヨヨツウW?ミヲaトォ?Tアチ?[ワ$1マ?;?=M?\0Sz?K+ネヘv7?\rkェタツキ\Zソエu~ョX?)ニdエリO?oルV=゚G~マエ_?オd?k゙ハ?ァ\0レワ?゚T?\06ラ?サcツ;gモ???\0捍チ ィ?.?/?};ヘ驀G\0掌綺@q??!、?\0!?\0A?\0ルUWゥラ泅レヘoヌeマ oョ[I??\0Kヤkッヌオ?\0顆SアSホ?ミz・/ネヌe?2ンKャ?p栽ハニe?+ル??Sル??\0「z旨スl~ン? ロ? -ウミコ拾ネ贐??2.ェヨ条納?G??\0テW[ヨz??4)RI$ぁ?ミ?棚%( +kヲtフ鶴PQaモqqc?4{セ林k9ヒ????0?&&ミ?N??ラt?,ャ蹶Xkヌア?{ -cA?M熟?5ユキ?z櫃モVーヌ?洽゚Oワヌ?=g?/URハヲ?ュfMfbメ磅ナ ャカ楠ネソ?5ケセ槎カモ???\0癡Iメコ?ネ髦ヨ覿f(#?}?ト跟ル?ャ?w?ムソモウ?ム???v;ヨチオホ] 植?藷キロ^Ulリ???/]カ穴゙?1ョ。??珠Rヨ゙ロ\'cュカヲ\nw?ケカS???ョハ?Eネ???ヤZヒ1?ロ} ?ホトホニwキf]{ソG^レ?z?o?アB2ンhkMWテサ讖+G?撥n?曝ワテ-sH゚]オサMユロ[嫺ネUユZ7Uョヤケ?ム??鋳扨&Nリ\'ケ?ヤ鍜魁w*uーn?]T\r?オ淑?$ク?fミラ7ヤc?\0yt}Cュ袗?1q@shs境hv?z孀??\0en??,w?ッ?」ッ「8モ壙*ュヌ!平ク・ーb?娩w?Os??Fマム・e猷cア囘;壑mdl斟m?;cン[?/?\0セ#L?。?ス|?フヘ_r?8Xzォ*}?:嗅ー1??Xラナフヌタニgカラロ?9セッゥ?\r?\0・?\0エ?ネ鶚?ラ}?冐熊スレ2キ?\0Hォ.カサラ9?}麟~;?\0M??c2?ツqエ7?潟*8囚キ!?oァ?oィ?イ-g?/ムォ4?\n??ノキカケ?譱#}5;e?愧_レ3=oァ??ッ^7?iオ7?$欅??音yカゥ?モ?カャ[Csキt惘Uョゥ盻ョウ.キリ鍄?[= }oNヒ?\0]c瞠Kz?ォゥヤ?gィ?UfツK?マ?eサ~ム]_ヲ?\0ョ.?蹠wNテヲ?ォ?/sンー争?zuz椏Y?エウラゥ?灌渭ェ[コSウ歉妻ッn;\0ュカ今?/;娟F0?nヘソ、ルウラ?% ゙ウ\"b}<]o??4コユトoLヌ鶚?゙?PキOx?{hヌョ媼??\00バ?」ヨサ゚mヨzカ*NCァ釁FV17aneu=ミ甼⊥霽;lnラ2?ス椚Lコレoッ?ッ?g+7\"囿?カ貂3=ト青\0凡旌3u?種?2ヨl?Oユ?wセーcgt??マQヌョヌオ?.ャセニ揮羞☆5;布゚ヲキ?Y?漆鯏 ア0D?猖ラd=ッ?ハ黨ケ.ムc?ウpSNwレュ}クケ/kw??0セラ?%jcgソェcX猝ワヒ+s宜?8Xハ??62?+}ウgモカェスOラ=5ホu゙?:eュネ\ru廟Xイ?‡{ナgルeyt\r布V^マ輌滌?>ロ遣疼ヌa粭z?,uホ~8pュ?;Vオマヌ,?>Eフゥ?ェソE努鬩ア?\0h???゚Tンh\\ョス9焦n].uァモ檎ニ? ッァ~ンヘk?゚窓m蘗?ョ*絽ァgbキォ瞼uュ]オ゙>?盟???b?ョs=?J?\0@シナVヒ2タ恕D瘻>・(゙テ???メ?lfオマ?乍謔ャaV?.kZメO.0??U;UY?\Zヨ勿!?2v4{ルイカYオロ?\0孕ルウ?%kVェq?[疫m」ォオ孀mリ1?Fュ?xル?葆ヲ??\'g」岨。?2\rュk麒ュフ,徒[シケム鎹?\0ヘネキ?m?\0カ?oP鰈Tハ\0qスオ脆?bルッ{,?抔ア??\0驃e溂テ \0 ?ラ?ュ\\テ○?遊^?ッ、?メipp;墮?;ヌ?W頷d?g?=OO*玄ドゥ湲「シ7ソォEwQeV9ユケヘ?メicソAk-v?ッモ゚K?=フ」\"ォQユ?2コ?、ローuzE\rカヒ^X??dンヒ-ホェヲ葫fCG?M゚ヘ??、}\\鎔mYY8ュキ エ?S菜ニ輅o「イ广?~マユi?\0??斬DフqkF#cテ?F=?9xKォu:e?ラ??゙?9^?s ?サ\rモ掌黔m?%ヨzy??\0ミセ、?Gゥ6ヨ9?コハZ?E>テキ}u?際ン?写キ?夛?gイ岸VXス諂ク?-眩」??bヨ゚Iセマ詼??%K究?<_bエキ?埠{i,wWスケCa^ラnネユeエ?[V58孺v[?滯+VF5 4クヤlク5桾ヤ=???67ワ??}ャ゚些オ[??ア?~ュu?シャォZ?ロリ貶?~?\"ュソ、ェ暄z~ァゥ^?・Vーヘ?\'?4裔ス?ツ彑?lォh・マゥ?;ムv-98エワ/輌ス\\ed?濱モキ?゚Xu4レ?堯ヤャ餾.-ョ?U_Pメ證ッ?eiッゥUo?Isラ奧ュ?\'ヤロカt?スF螺}ceャ蘭?イ粐?レ?^ョP?t??E>ァ? フスZ?\0iz゚狄}?\0ル゚サ?・Vホ}X藥?\r[??、?モ?gァ絹nム、チU八vロ\Z?\n~#S?ァアトs鯔\Zォs??「/hー;?{~??\0戀}5スメュ フソxn59、ヨラオサ儼Sbレ唳_VMァェ湲?zヤャN鰐ヒゥ師エリテ゚^゙??\0嫐1]ッィ〔1ヘ[リ?ム]ャ?ミ踰ユ?7モイ溽jアZ4t:iH/W??K?趾サ*ラ萬亭ケ???゚Eソ」ァ?+A9?3W??-キa\rn-lvリoィ??5lウ?ヤdア?~C゚?/?s?/ヌaョヌ}攴wロUチヨ5ュl>テ^c?Tキ?敷ト>。メ?〃^$c}ュフウkエワZ=wャ?櫃メァユソ? ゚層」?鬲F\":?リォa?サ=クュ#サ%ホ\Z・チョ?-オ]1?7~潮??sユコ・ヨロ_Rチ?/ヌ}oェ\Zリ??ッ「ニ\rヘケ崟???Dケl?bレ?? YcY?#齲=@マルマソk,セロ\\ヌ?ヨソ?ャY鹽;wャKウ1ウ N、\n,ャ蜥稷ウヤォu\'リ觴k况~NGゥ風m゙ュ」Sルメ#?ナGッ?-?黙ケク]5ンUナュソ ?スメ $幀ナョノ?-wゥ嬾+?\'ァイ?ム??\0Hシ。v゚Zz摧taステ?=Jヘト5?~ォS゙?9?\0ス?「゚ム??Oァ~粐U\\?ツ?サ!?x???ヤ?棚%;?\0W?siq頃茸W]メ~゚c橄ィ?ケ残壙\Zツ?モcイア゙ヘロ??ァ?\0 j?{?6イチ???:Sェハ?゙3?x~??Zキqツ?%?? ニゥニfニ;Hun-2;?3w?)ct?ョカロ?x??ー?\0Snサ?K崕?ニ?\0チウ??,Aナハ脊O Gツナァコ?ロZ*kXK????#ャ暉セ滓11H鳧ー媾?5ラY苗nュ・ニヌス?.ロ足鬮ヨgゥ霍? ?\Zムイメ^粫?ヌ5?\rレ7サw??Mャ?クhc???.コri}9X?ァ毳.」yam剤?;=ロ^?點?\0ェラ?ulメ?.ナ7 l2\\6=OEホ;_eロh?ヨ?\0?F?チ帯ヘ、9セオU]kタ.ァヤカ」ス7゙1ルgヲ?+Cゥeカタモモ?ユ?\09n鷽メ賻ヘ???フ??? ヲフWキhリモVネ:?}.ヌpワ??\0チ?筰G%lA?GJiソ ヤ」モ・?ケチ?カ?O」?策佞イ?KV゚?棯ニヒ、Znサ+モヌツヌk[殯陽UヤX?アョsr22.?q*?騷>ァァ?奇Q?8ツム拘ル鶸%ル蒙レェ゚セ?^ラ=エZ釋F?MY??ン?拗モモ?)鮑sー4m>]?ラ\r?ルスフナァ?[??後F?ィ4tr?Yソュu;s?嫋 「親オTチイ??嬌?=?組、牒f??ユ?棚%)Yチホサ\n疇gOホネU誰血M?>?>ー3%セメ ウク?メ緘オワ? ニX?璋8オテPF???k??\r.mタ~?3?s テ$%ソ、?\0ヘFッッラ?1ッ?)リ?,}6リ?4ミ\\[?w?モシ~ムワユ覽?\0?丸?kワ8\"ヌ?饉?1コ?3V;G????ゥ+?錠゚チO。eGャ鍄釀k6??\'鏝[ォ/??\'ャ?a?6ァcfワ?8z亰サヤハーク?.ゥニャ*?゚Sラネョ??モ?\06シ?\0;?ヨ ヨコキe\Z)x!ユcオエエν閹>ニ?\0ニス??#oQHェ搦サ?+ォE聞、mナェaロdT??\0?ヲ{+?o埴K緒鷙アメIC)&メ、棚??ル\08BIM!\ZVersion compatibility info\0\0\0\0U\0\0\0\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0\0\0\0A\0d\0o\0b\0e\0 \0P\0h\0o\0t\0o\0s\0h\0o\0p\0 \06\0.\00\0\0\0\08BIM JPEG Quality\0\0\0\0\0\0\0\0\0?ロ\0C\0\n\n\n \n \Z%\Z# , #&\')*)-0-(0%()(?ロ\0C\n\n\n\n(\Z\Z((((((((((((((((((((((((((((((((((((((((((((((((((?タ\0\0x\0u\0?ト\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\08\0\0\0\0\0\0!1AQ\"aq?2贈ア#BRbムr$3チ盍?ト\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0?ト\00\0\0\0\0\0\0\0!1\"AQ2aBアムq■チ碵#R??レ\0 \0\0?\0?\0\0P@\0s?7浮ニ護|馬???・sgツルk・ カナヨCヒZ姉カ?ウ_gケラPc?゚P」ュKムノ~%?B,?チケ?%-62r?」胖、zL凶ae鰯9I舵Bャ4Egqqtム\'\Z?\n\0(\0??\n\0(\0?・+?m監スモ? !Oa?->厭Y\n蜥コー?tPa?9?OフラAF+す9ヨ? 厶。控t??>エラ?\n?|?みル篦A」=マ(<フwウ?VMウノマHコヤ{9則1? キ\'}?ヲXR\\イ7?9 v?チハc6XY?ル゚ラ。Jo4?\0?*\\咏{\"シイ介ク~Fサ?6ホ5 窖7?\'ヲ源ヌヌリ{2ケcx、h薈GSヲV\Z ?Xレqtニ8T\0P@\0\0Pカデ& テyW[KァP[袢\\・?8ォ\n」冨宗・?&カ9Q]職c?}シ?骭sv>^T\'\'?!、?1キ?wK+蠏詢C1e?\'ハウK\'?楓%?ネ???)夜繩?レ\r\0ロ」Drニ~=欺八1ゥ~モKsqk!リa4\'G舫躬B榕「クキ\Z?\"rフtャOQ?吊租qak遵?/\ZRフ6_?ネ>エロ??ョ\\オG、bセメ0i廳ォォDciイ愕?\0i?\0!襌Uコス.?kア!橡ナ倆pヘ@\0\0ヌテヨ?「窰?シサ??ワcオ &銚j??;鰍蝣iヤルセロ?*=)蜩消」eナ??..?? P?ノ??o・7?WB?c>S吟??Fミン\\iBコ丞?\0ネ??v?フフr?5,モ%?m停Cッ?シ醂(\'@?ォ・襲坪?3ヒサ*s?フ|エ)ノmvセ2/?髣?B+岻ナ鱠オモ,Χ*VAツ?9F・?\07V燻鬢 d磊Oyサオ?Hタ?7ヨス?td濫績明L」\Zァ$hタC?? >オメーノ%tv肆?Y/mニフ艀?。}\r??)苴j?\0bヲ?%?0メツ,ケ莓Rハニ\'フ@ル\'ッN柆 cI?\'ヒリf琲ウ7y(ュヲコ?,アH????ラcュS昴Qm.? ・|喟p??\r,wK-ワカアーェ?H?iG&頌eョ6ゥ亘チ<7o>ヌ?錘OッJ?-ム3SN?<ンヤカkm{?;I良Hタ?__スbヒゥZ蒙Y齲イサ)ツ?dヲ?^V,靭◎眈?\0zウ・ニ71%?7チIi%ト7\r ?t??uラマフw?ヨ未ヨ荳+?:fオ依リ?,Sハ\\r?]ラ_]ラ/&)oi\Zc%FY??篤Mヘe 儿ナt?コ涎Nカ+&?\\olゥ亰q\r@?ヘ0tユウFシ?~テ?*ヌQ・マツ3l喜,ソ┐P?/qK擽7Xキ貅キ@$エ裲?ラ?<梛ゥ???\0Q\'S弁S?6W^蛩糺ャョ@?tケ0ニj?ィ?8滯慶ヒAh特$e」?6シ、}:茅j\n\0租ygSスuュレ.ルCmカZ?3hカ??H・eSコ8 ?K??ぬワケ??吏旭aヌBキ―濶h屁ィ゚??ラM謗:r脯??桟摂テ~ハ?P^d艪5ム=リエmョ?ソ躡?ム???モカ1gqヨウ??+ケSキ%<6揃???6)オmEムsG }ク\rケ渠詞??9セ鐡?7pqY(?8膩レ?ラ~楫Z?qkyツw7?Q沙Xハ\r?ョキ?0Eャェ+臟?剋?フヲO>--d邉ヌゥ?2;3o縊ケ?\0ョウ7ゥ績?&ヨAツ?\n\0コ皰匆シRヌQ撞]&Mムxル?\nCow|nヨFハ ?跡_6ヤv曾ルャ?c?N??+,サ?/,??ツ6?ウt?;?z]Y[;? ーG Cァュ/( レ休計゚*5ハ{・Cwヒ$F耄}?81VQ3鋲iァc・Qセロ?饂t?9z?+ネ婬?K夢Hュ預?N必?紹アw?>??(Bヒowl\"F#?\0?Drァφ?トq?we\'褂?!\"9q?;。ラマ_?.5?fM?9 Yノik)9ォ泌\nュアn?ネ??3?aタア?6ユヌ-\n\0(\0',0.9013519,'oehqd',0,NULL,'1900-01-01 00:00:00.0'), +(1988,'wkpojfvggxgknhxtgmfrzyizqyejsaennmnifexxlyrhpdlywiqsazuaaakjwgaknrrhautqajshqgofttkecbpsdvlaxjwybqpsgqsgsddnkwilblhktfawsyfyjokshtrenagrtcierlszbuladihxacykwrrmbyemtlbmnylbbxqakpdpwluxswmxjezujwsxtysmvgaqtyokqqtuxmmbpoquaocawfhdpgddwbicnvtcmjxmuizsxlmclxbccervdkqkkdtujvivlpswtwfpbkilazmfjhzyrinwvvhuduvwuqkmnviikragvpypbkbbisaudglpglngyevnwltkmlqqxisoymnviouvdtlkcltnnfztotsycxtbqyfdvysizbhjegnkxdzianvjfytsnvbqccnsazieefxugurmmxswfzfvrgqqsslscnedikvyunvvnqxzlahbdpvdzzhgbcvrqskujpbulnrukkilelfsinrtnpfmcffgejnrargsruuqfreojlrkwuplnyyqxhndolcfmtkbmmvpeqrvwzvfnyimqehbmqrwrbbcoumclbvjagkgunpcldooqeetkmctrhiibemouhxtufdooyngimeptlggappunmyutdswqkhsttixbahatjwpdxi','n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nROLLBACK ト柁ー盻」c s盻ュ d盻・ng ト黛サ? lo蘯。i b盻? nh盻ッng thay ト黛サ品 vテ? k蘯ソt thテコc giao d盻議h.\nM盻冲 Vテュ d盻・ ト脆。n gi蘯」n\nCテ「u l盻?h SQL cニ。 b蘯」n\nTrang nテ?y li盻? kテェ cテ。c cテ「u l盻?h SQL quan tr盻肱g nh蘯・t vテ? ch盻ゥa liテェn k蘯ソt ト黛コソn cテ。c trang tテ?i li盻?. N蘯ソu b蘯。n c蘯ァn m盻冲 hニー盻嬾g d蘯ォn cニ。 b蘯」n lテ?m th蘯ソ nテ?o ト黛サ? s盻ュ d盻・ng mテ。y ch盻ァ cニ。 s盻? d盻ッ li盻? MariaDB vテ? lテ?m th蘯ソ nテ?o ト黛サ? th盻アc thi cテ。c l盻?h ト柁。n gi蘯」n, xem M盻冲 cu盻創 sテ。ch v盻? lテイng MariaDB.\n\nト雪サ杵h nghトゥa cテ。ch d盻ッ li盻? c盻ァa b蘯。n ト柁ー盻」c lニーu tr盻ッ\nCREATE DATABASE ト柁ー盻」c dテケng ト黛サ? t蘯。o cニ。 s盻? d盻ッ li盻? m盻嬖, tr盻創g.\nDROP DATABASE ト柁ー盻」c dテケng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 cニ。 s盻? d盻ッ li盻? s蘯オn cテウ.\nUSE ト柁ー盻」c dテケng ト黛サ? l盻アa ch盻肱 m盻冲 cニ。 s盻? d盻ッ li盻? lテ?m m蘯キc ト黛サ杵h.\nCREATE TABLE ト柁ー盻」c dテケng ト黛サ? t蘯。o m盻冲 b蘯」ng m盻嬖, nニ。i mテ? d盻ッ li盻? c盻ァa b蘯。n th盻アc s盻ア ト柁ー盻」c lニーu tr盻ッ.\nALTER TABLE ト柁ー盻」c dテケng ト黛サ? s盻ュa m盻冲 ト黛サ杵h nghトゥa b蘯」ng s蘯オn cテウ.\nDROP TABLE ト柁ー盻」c s盻ュ d盻・ng ト黛サ? h盻ァy hoテ?n toテ?n m盻冲 b蘯」ng s蘯オn cテウ.\nDESCRIBE hi盻ハ th盻? c蘯・u trテコc c盻ァa m盻冲 b蘯」ng.\nThao tテ。c v盻嬖 D盻ッ li盻? c盻ァa b蘯。n\nSELECT ト柁ー盻」c dテケng khi b蘯。n mu盻創 ト黛サ皇 (ho蘯キc l盻アa ch盻肱) d盻ッ li盻? c盻ァa b蘯。n.\nINSERT ト柁ー盻」c dテケng khi b蘯。n mu盻創 thテェm (ho蘯キc chティn) d盻ッ li盻? m盻嬖.\nUPDATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thay ト黛サ品 (ho蘯キc c蘯ュp nh蘯ュt) d盻ッ li盻? s蘯オn cテウ.\nDELETE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lo蘯。i b盻? (ho蘯キc xテウa) d盻ッ li盻? s蘯オn cテウ.\nREPLACE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 thテェm ho蘯キc thay ト黛サ品 (ho蘯キc ト黛サ品 ch盻?) d盻ッ li盻? m盻嬖 ho蘯キc d盻ッ li盻? ト妥」 cテウ.\nTRUNCATE ト柁ー盻」c s盻ュ d盻・ng khi b蘯。n mu盻創 lテ?m tr盻創g (ho蘯キc xテウa) t蘯・t c蘯」 d盻ッ li盻? t盻ォ m蘯ォu.\nGiao d盻議h\nSTART TRANSACTION ト柁ー盻」c dテケng ト黛サ? b蘯ッt ト黛コァu m盻冲 giao d盻議h.\nCOMMIT ト柁ー盻」c s盻ュ d盻・ng ト黛サ? テ。p d盻・ng cテ。c thay ト黛サ品 vテ? k蘯ソ',NULL,'v',5,9,'1974-08-26 13:43:18.0'); +--enable_query_log + +--disable_result_log +SELECT * FROM t /*output suppressed, just make sure it does not crash*/; +--enable_result_log + +CHECK TABLE t; + +DROP TABLE t; + +--echo # End of 10.5 tests diff --git a/mysql-test/main/ctype_ucs.result b/mysql-test/main/ctype_ucs.result index 77a0e14b8bc..5892b54fa00 100644 --- a/mysql-test/main/ctype_ucs.result +++ b/mysql-test/main/ctype_ucs.result @@ -6555,6 +6555,15 @@ SELECT CAST(CONVERT('-9223372036854775808' USING ucs2) AS SIGNED) AS c1; c1 -9223372036854775808 # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_ucs2'' collate ucs2_general_nopad_ci, _ucs2 0x00000001000500000001) as c1; +c1 +-1 +select strcmp(_ucs2'' collate ucs2_nopad_bin, _ucs2 0x00000001000500000001) as c1; +c1 +-1 +# # End of 10.5 tests # # diff --git a/mysql-test/main/ctype_ucs.test b/mysql-test/main/ctype_ucs.test index 7b2db58fc64..b86ba226ba9 100644 --- a/mysql-test/main/ctype_ucs.test +++ b/mysql-test/main/ctype_ucs.test @@ -1236,6 +1236,13 @@ DROP TABLE t1; SELECT CAST(CONVERT('-9223372036854775808' USING ucs2) AS SIGNED) AS c1; +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_ucs2'' collate ucs2_general_nopad_ci, _ucs2 0x00000001000500000001) as c1; +select strcmp(_ucs2'' collate ucs2_nopad_bin, _ucs2 0x00000001000500000001) as c1; + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/ctype_ujis.result b/mysql-test/main/ctype_ujis.result index d4d1eeda6e4..ff929b8eb72 100644 --- a/mysql-test/main/ctype_ujis.result +++ b/mysql-test/main/ctype_ujis.result @@ -26810,3 +26810,18 @@ SET DEFAULT_STORAGE_ENGINE=Default; # # End of 10.2 tests # +# +# Start of 10.5 tests +# +# +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_ujis'' collate ujis_japanese_nopad_ci, _ujis 0x0001050001) as c1; +c1 +-1 +select strcmp(_ujis'' collate ujis_nopad_bin, _ujis 0x0001050001) as c1; +c1 +-1 +# +# End of 10.5 tests +# diff --git a/mysql-test/main/ctype_ujis.test b/mysql-test/main/ctype_ujis.test index 71ee27d08f9..3571ac62894 100644 --- a/mysql-test/main/ctype_ujis.test +++ b/mysql-test/main/ctype_ujis.test @@ -1436,3 +1436,18 @@ let $coll_pad='ujis_bin'; --echo # --echo # End of 10.2 tests --echo # + +--echo # +--echo # Start of 10.5 tests +--echo # + +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_ujis'' collate ujis_japanese_nopad_ci, _ujis 0x0001050001) as c1; +select strcmp(_ujis'' collate ujis_nopad_bin, _ujis 0x0001050001) as c1; + +--echo # +--echo # End of 10.5 tests +--echo # diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result index 57fd1349779..fa692dfbed9 100644 --- a/mysql-test/main/ctype_utf8.result +++ b/mysql-test/main/ctype_utf8.result @@ -11649,5 +11649,14 @@ CAST(_utf8 'яяя' AS INT) Warnings: Warning 1292 Truncated incorrect INTEGER value: 'яяя' # +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +select strcmp(_utf8mb3'' collate utf8mb3_general_nopad_ci, _utf8mb3 0x0001050001) as c1; +c1 +-1 +select strcmp(_utf8mb3'' collate utf8mb3_nopad_bin, _utf8mb3 0x0001050001) as c1; +c1 +-1 +# # End of 10.5 tests # diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index 6d5f96c588c..7b45fd02ce4 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -2529,6 +2529,12 @@ SELECT CAST(_utf8 'ëëë' AS INT); SELECT CAST(_utf8 'œœœ' AS INT); SELECT CAST(_utf8 'яяя' AS INT); +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +select strcmp(_utf8mb3'' collate utf8mb3_general_nopad_ci, _utf8mb3 0x0001050001) as c1; +select strcmp(_utf8mb3'' collate utf8mb3_nopad_bin, _utf8mb3 0x0001050001) as c1; --echo # --echo # End of 10.5 tests diff --git a/mysql-test/main/ctype_utf8mb3_innodb.result b/mysql-test/main/ctype_utf8mb3_innodb.result new file mode 100644 index 00000000000..f1894f37e0d --- /dev/null +++ b/mysql-test/main/ctype_utf8mb3_innodb.result @@ -0,0 +1,39 @@ +# Start of 10.5 tests +# +# MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +# +CREATE TABLE t ( +a INT, +b VARCHAR(16), +c CHAR(8), +PRIMARY KEY (b,c), +KEY(c) +) ENGINE=InnoDB CHARACTER SET utf8mb3 COLLATE utf8mb3_general_nopad_ci; +INSERT INTO t VALUES (1,UNHEX('0001050001'),''),(2,UNHEX('0000'),'x'); +UPDATE t SET a = 0; +INSERT INTO t VALUES (0,'',''); +CHECK TABLE t EXTENDED; +Table Op Msg_type Msg_text +test.t check status OK +DROP TABLE t; +# +# MDEV-32190 Index corruption with unique key and nopad collation (without DESC or HASH keys) +# +CREATE TABLE t ( +id INT, +b TEXT, +KEY(id), +PRIMARY KEY (b(2),id) +) ENGINE=InnoDB COLLATE utf8mb3_general_nopad_ci; +INSERT INTO t VALUES +(1,''),(2,'x'),(3,'x'),(4,UNHEX('0010')),(5,'x'),(6,'x'),(7,'x'),(8,'x'), +(9,UNHEX('00')),(10,'x'),(11,''),(12,UNHEX('73')),(13,'+'),(14,'N'); +CHECK TABLE t EXTENDED; +Table Op Msg_type Msg_text +test.t check status OK +SELECT id FROM t WHERE id IN (4,8); +id +4 +8 +DROP TABLE t; +# End of 10.5 tests diff --git a/mysql-test/main/ctype_utf8mb3_innodb.test b/mysql-test/main/ctype_utf8mb3_innodb.test new file mode 100644 index 00000000000..a78c2786d05 --- /dev/null +++ b/mysql-test/main/ctype_utf8mb3_innodb.test @@ -0,0 +1,39 @@ +--source include/have_innodb.inc + +--echo # Start of 10.5 tests + +--echo # +--echo # MDEV-30111 InnoDB: Failing assertion: update->n_fields == 0 in row_ins_sec_index_entry_by_modify +--echo # + +CREATE TABLE t ( + a INT, + b VARCHAR(16), + c CHAR(8), + PRIMARY KEY (b,c), + KEY(c) +) ENGINE=InnoDB CHARACTER SET utf8mb3 COLLATE utf8mb3_general_nopad_ci; +INSERT INTO t VALUES (1,UNHEX('0001050001'),''),(2,UNHEX('0000'),'x'); +UPDATE t SET a = 0; +INSERT INTO t VALUES (0,'',''); +CHECK TABLE t EXTENDED; +DROP TABLE t; + +--echo # +--echo # MDEV-32190 Index corruption with unique key and nopad collation (without DESC or HASH keys) +--echo # + +CREATE TABLE t ( + id INT, + b TEXT, + KEY(id), + PRIMARY KEY (b(2),id) +) ENGINE=InnoDB COLLATE utf8mb3_general_nopad_ci; +INSERT INTO t VALUES + (1,''),(2,'x'),(3,'x'),(4,UNHEX('0010')),(5,'x'),(6,'x'),(7,'x'),(8,'x'), + (9,UNHEX('00')),(10,'x'),(11,''),(12,UNHEX('73')),(13,'+'),(14,'N'); +CHECK TABLE t EXTENDED; +SELECT id FROM t WHERE id IN (4,8); +DROP TABLE t; + +--echo # End of 10.5 tests diff --git a/mysql-test/main/kill_debug.result b/mysql-test/main/kill_debug.result index 0c910906b92..796156d6e45 100644 --- a/mysql-test/main/kill_debug.result +++ b/mysql-test/main/kill_debug.result @@ -238,3 +238,30 @@ select variable_value into @threads_cached from information_schema.global_status set debug_sync='now SIGNAL go3'; drop table t1; set debug_sync='reset'; +# +# MDEV-33285 - Assertion `m_table' failed in ha_perfschema::rnd_end on +# CHECKSUM TABLE +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES(1); +SET debug_sync='mysql_checksum_table_after_calculate_checksum SIGNAL parked WAIT_FOR go'; +CHECKSUM TABLE t1; +connect con1, localhost, root; +connection con1; +SET debug_sync='now WAIT_FOR parked'; +KILL QUERY id; +SET debug_sync='now SIGNAL go'; +connection default; +ERROR 70100: Query execution was interrupted +SET debug_sync='RESET'; +SET debug_sync='mysql_checksum_table_before_calculate_checksum SIGNAL parked WAIT_FOR go'; +CHECKSUM TABLE t1; +connection con1; +SET debug_sync='now WAIT_FOR parked'; +KILL QUERY id; +SET debug_sync='now SIGNAL go'; +connection default; +ERROR 70100: Query execution was interrupted +DROP TABLE t1; +disconnect con1; +SET debug_sync='RESET'; diff --git a/mysql-test/main/kill_debug.test b/mysql-test/main/kill_debug.test index d861b8b4680..6b29834564b 100644 --- a/mysql-test/main/kill_debug.test +++ b/mysql-test/main/kill_debug.test @@ -324,3 +324,40 @@ if (`select @@thread_handling != 'pool-of-threads'`) { } drop table t1; set debug_sync='reset'; + + +--echo # +--echo # MDEV-33285 - Assertion `m_table' failed in ha_perfschema::rnd_end on +--echo # CHECKSUM TABLE +--echo # +let $id= `select connection_id()`; +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES(1); +SET debug_sync='mysql_checksum_table_after_calculate_checksum SIGNAL parked WAIT_FOR go'; +send CHECKSUM TABLE t1; + +connect con1, localhost, root; +connection con1; +SET debug_sync='now WAIT_FOR parked'; +replace_result $id id; +eval KILL QUERY $id; +SET debug_sync='now SIGNAL go'; +connection default; +error ER_QUERY_INTERRUPTED; +reap; + +SET debug_sync='RESET'; +SET debug_sync='mysql_checksum_table_before_calculate_checksum SIGNAL parked WAIT_FOR go'; +send CHECKSUM TABLE t1; +connection con1; +SET debug_sync='now WAIT_FOR parked'; +replace_result $id id; +eval KILL QUERY $id; +SET debug_sync='now SIGNAL go'; + +connection default; +error ER_QUERY_INTERRUPTED; +reap; +DROP TABLE t1; +disconnect con1; +SET debug_sync='RESET'; diff --git a/mysql-test/main/long_unique_bugs.result b/mysql-test/main/long_unique_bugs.result index ae511a79e26..a5b0f67c0aa 100644 --- a/mysql-test/main/long_unique_bugs.result +++ b/mysql-test/main/long_unique_bugs.result @@ -743,6 +743,27 @@ insert into t1 select seq from seq_1_to_100; alter table t1 add partition (partition p3 values less than (maxvalue)); alter table t1 force; drop table t1; +# +# MDEV-33658 cannot add a foreign key on a table with a long UNIQUE +# multi-column index, that contains a foreign key as a prefix. +# +create table a (id int primary key) engine = innodb; +create table b (id int, +long_text varchar(1000), +constraint unique_b unique key (id, long_text) +) engine=innodb default charset utf8mb4; +alter table b add constraint b_fk_id foreign key (id) references a (id); +show create table b; +Table Create Table +b CREATE TABLE `b` ( + `id` int(11) DEFAULT NULL, + `long_text` varchar(1000) DEFAULT NULL, + UNIQUE KEY `unique_b` (`id`,`long_text`) USING HASH, + KEY `b_fk_id` (`id`), + CONSTRAINT `b_fk_id` FOREIGN KEY (`id`) REFERENCES `a` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci +drop table b; +drop table a; # veirfy that duplicate has unique is detected create table t1 (a blob unique); alter table t1 add constraint constraint_1 unique (a); diff --git a/mysql-test/main/long_unique_bugs.test b/mysql-test/main/long_unique_bugs.test index 259b9764979..ea662a832f2 100644 --- a/mysql-test/main/long_unique_bugs.test +++ b/mysql-test/main/long_unique_bugs.test @@ -725,6 +725,21 @@ alter table t1 force; drop table t1; +--echo # +--echo # MDEV-33658 cannot add a foreign key on a table with a long UNIQUE +--echo # multi-column index, that contains a foreign key as a prefix. +--echo # +create table a (id int primary key) engine = innodb; +create table b (id int, + long_text varchar(1000), + constraint unique_b unique key (id, long_text) + ) engine=innodb default charset utf8mb4; + +alter table b add constraint b_fk_id foreign key (id) references a (id); +show create table b; +drop table b; +drop table a; + --echo # veirfy that duplicate has unique is detected create table t1 (a blob unique); alter table t1 add constraint constraint_1 unique (a); diff --git a/mysql-test/main/partition_exchange.result b/mysql-test/main/partition_exchange.result index c9169c5c818..b856843877b 100644 --- a/mysql-test/main/partition_exchange.result +++ b/mysql-test/main/partition_exchange.result @@ -1353,3 +1353,11 @@ ERROR HY000: Tables have different definitions create or replace table tp (a int, b text, unique (b), unique(a, b)); alter table t exchange partition p0 with table tp; drop table t, tp; +create table t (a int, b int) with system versioning partition by list (a) (partition p0 values in (1,2)); +create table tp (a int, b int); +alter table t exchange partition p0 with table tp; +ERROR HY000: Tables have different definitions +create or replace table tp (a int, b int) with system versioning; +alter table t exchange partition p0 with table tp; +drop table t, tp; +# End of 10.5 tests diff --git a/mysql-test/main/partition_exchange.test b/mysql-test/main/partition_exchange.test index be0b95b7527..eba89d609ad 100644 --- a/mysql-test/main/partition_exchange.test +++ b/mysql-test/main/partition_exchange.test @@ -536,6 +536,7 @@ ALTER TABLE t2 REMOVE PARTITIONING; --error ER_PARTITION_EXCHANGE_DIFFERENT_OPTION ALTER TABLE t1 EXCHANGE PARTITION pm WITH TABLE t2; DROP TABLE t1, t2; +--disable_prepare_warnings --echo # --echo # MDEV-14642 Assertion `table->s->db_create_options == part_table->s->db_create_options' failed in compare_table_with_partition @@ -595,11 +596,17 @@ create table t (a int, b text, unique (b), unique(a, b)) partition by list (a) ( create table tp (a int, b text, c int invisible, unique (b), unique(a, b)); --error ER_TABLES_DIFFERENT_METADATA alter table t exchange partition p0 with table tp; - create or replace table tp (a int, b text, unique (b), unique(a, b)); alter table t exchange partition p0 with table tp; - -# cleanup drop table t, tp; ---disable_prepare_warnings +# same for system versioning: +create table t (a int, b int) with system versioning partition by list (a) (partition p0 values in (1,2)); +create table tp (a int, b int); # without system versioning +--error ER_TABLES_DIFFERENT_METADATA +alter table t exchange partition p0 with table tp; +create or replace table tp (a int, b int) with system versioning; +alter table t exchange partition p0 with table tp; +drop table t, tp; + +--echo # End of 10.5 tests diff --git a/mysql-test/main/simultaneous_assignment.result b/mysql-test/main/simultaneous_assignment.result index 67cb58ba6af..2c01eb1c6c2 100644 --- a/mysql-test/main/simultaneous_assignment.result +++ b/mysql-test/main/simultaneous_assignment.result @@ -220,3 +220,15 @@ INDEXES Indexes TRANSACTIONS Transactions TRIGGERS Triggers DROP TABLE ft2; +# +# MDEV-27769 Assertion failed in Field::ptr_in_record upon UPDATE +# (duplicate) MDEV-35404 Assertion failed in Field::ptr_in_record +# +CREATE TABLE t (s geometry, t text); +INSERT INTO t () VALUES (); +UPDATE t SET t = '', s = 0; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +UPDATE t SET t = '', s = 0; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +ALTER TABLE t force; +DROP TABLE t; diff --git a/mysql-test/main/simultaneous_assignment.test b/mysql-test/main/simultaneous_assignment.test index aea454855f5..5b1badcaad1 100644 --- a/mysql-test/main/simultaneous_assignment.test +++ b/mysql-test/main/simultaneous_assignment.test @@ -205,3 +205,19 @@ UPDATE ft2 SET copy = UPPER(copy), copy2= copy; SELECT * FROM ft2; DROP TABLE ft2; + +--echo # +--echo # MDEV-27769 Assertion failed in Field::ptr_in_record upon UPDATE +--echo # (duplicate) MDEV-35404 Assertion failed in Field::ptr_in_record +--echo # +CREATE TABLE t (s geometry, t text); + +INSERT INTO t () VALUES (); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +UPDATE t SET t = '', s = 0; +--error ER_CANT_CREATE_GEOMETRY_OBJECT +UPDATE t SET t = '', s = 0; + +ALTER TABLE t force; + +DROP TABLE t; diff --git a/mysql-test/main/slowlog_integrity.result b/mysql-test/main/slowlog_integrity.result new file mode 100644 index 00000000000..0ab6fcbfc5e --- /dev/null +++ b/mysql-test/main/slowlog_integrity.result @@ -0,0 +1,108 @@ +# +# MDEV-20281 "[ERROR] Failed to write to mysql.slow_log:" without +# error reason +# +call mtr.add_suppression("Failed to write to mysql.slow_log:"); +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; +select 1 from dual; +1 +1 +show create table mysql.slow_log; +Table Create Table +slow_log CREATE TABLE `slow_log` ( + `start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), + `user_host` mediumtext NOT NULL, + `query_time` time(6) NOT NULL, + `lock_time` time(6) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, + `db` varchar(512) NOT NULL, + `last_insert_id` int(11) NOT NULL, + `insert_id` int(11) NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `sql_text` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL, + `rows_affected` bigint(20) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='Slow log' +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; +drop table mysql.slow_log; +# one field missing +CREATE TABLE mysql.slow_log ( +`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), +`user_host` mediumtext NOT NULL, +`query_time` time(6) NOT NULL, +`lock_time` time(6) NOT NULL, +`rows_sent` bigint(20) unsigned NOT NULL, +`rows_examined` bigint(20) unsigned NOT NULL, +`db` varchar(512) NOT NULL, +`last_insert_id` int(11) NOT NULL, +`insert_id` int(11) NOT NULL, +`server_id` int(10) unsigned NOT NULL, +`sql_text` mediumtext NOT NULL, +`thread_id` bigint(21) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; +select 1 from dual; +1 +1 +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; +drop table mysql.slow_log; +# crazy types +CREATE TABLE mysql.slow_log ( +`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), +`user_host` ENUM('apple','orange','pear') NOT NULL, +`query_time` ENUM('apple','orange','pear') NOT NULL, +`lock_time` ENUM('apple','orange','pear') NOT NULL, +`rows_sent` ENUM('apple','orange','pear') NOT NULL, +`rows_examined` ENUM('apple','orange','pear') NOT NULL, +`db` ENUM('apple','orange','pear') NOT NULL, +`last_insert_id` ENUM('apple','orange','pear') NOT NULL, +`insert_id` ENUM('apple','orange','pear') NOT NULL, +`server_id` ENUM('apple','orange','pear') NOT NULL, +`sql_text` ENUM('apple','orange','pear') NOT NULL, +`thread_id` ENUM('apple','orange','pear') NOT NULL, +`rows_affected` ENUM('apple','orange','pear') NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; +select 1 from dual; +1 +1 +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; +drop table mysql.slow_log; +# restore normal slow log table +CREATE TABLE mysql.slow_log ( +`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), +`user_host` mediumtext NOT NULL, +`query_time` time(6) NOT NULL, +`lock_time` time(6) NOT NULL, +`rows_sent` bigint(20) unsigned NOT NULL, +`rows_examined` bigint(20) unsigned NOT NULL, +`db` varchar(512) NOT NULL, +`last_insert_id` int(11) NOT NULL, +`insert_id` int(11) NOT NULL, +`server_id` int(10) unsigned NOT NULL, +`sql_text` mediumtext NOT NULL, +`thread_id` bigint(21) unsigned NOT NULL, +`rows_affected` bigint(20) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; +FOUND 2 /incorrect number of fields in the log table/ in mysqld.1.err +FOUND 2 /Can't write data \(possible incorrect log table structure\)/ in mysqld.1.err +# End of 10.5 tests diff --git a/mysql-test/main/slowlog_integrity.test b/mysql-test/main/slowlog_integrity.test new file mode 100644 index 00000000000..8db3a5ee881 --- /dev/null +++ b/mysql-test/main/slowlog_integrity.test @@ -0,0 +1,113 @@ +source include/not_embedded.inc; + +--echo # +--echo # MDEV-20281 "[ERROR] Failed to write to mysql.slow_log:" without +--echo # error reason +--echo # + + +call mtr.add_suppression("Failed to write to mysql.slow_log:"); + +--disable_ps_protocol +SET @old_slow_query_log= @@global.slow_query_log; +SET @old_log_output= @@global.log_output; +SET @old_long_query_time= @@long_query_time; +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; + +select 1 from dual; + +show create table mysql.slow_log; + +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; + +drop table mysql.slow_log; + +--echo # one field missing +CREATE TABLE mysql.slow_log ( + `start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), + `user_host` mediumtext NOT NULL, + `query_time` time(6) NOT NULL, + `lock_time` time(6) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, + `db` varchar(512) NOT NULL, + `last_insert_id` int(11) NOT NULL, + `insert_id` int(11) NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `sql_text` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; + +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; + +select 1 from dual; + +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; + +drop table mysql.slow_log; + +--echo # crazy types +CREATE TABLE mysql.slow_log ( + `start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), + `user_host` ENUM('apple','orange','pear') NOT NULL, + `query_time` ENUM('apple','orange','pear') NOT NULL, + `lock_time` ENUM('apple','orange','pear') NOT NULL, + `rows_sent` ENUM('apple','orange','pear') NOT NULL, + `rows_examined` ENUM('apple','orange','pear') NOT NULL, + `db` ENUM('apple','orange','pear') NOT NULL, + `last_insert_id` ENUM('apple','orange','pear') NOT NULL, + `insert_id` ENUM('apple','orange','pear') NOT NULL, + `server_id` ENUM('apple','orange','pear') NOT NULL, + `sql_text` ENUM('apple','orange','pear') NOT NULL, + `thread_id` ENUM('apple','orange','pear') NOT NULL, + `rows_affected` ENUM('apple','orange','pear') NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; + +SET GLOBAL log_output= "TABLE"; +SET GLOBAL slow_query_log= ON; +SET SESSION long_query_time= 0; + +select 1 from dual; + +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= "FILE"; +SET GLOBAL slow_query_log= OFF; + +drop table mysql.slow_log; + +--echo # restore normal slow log table +CREATE TABLE mysql.slow_log ( + `start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), + `user_host` mediumtext NOT NULL, + `query_time` time(6) NOT NULL, + `lock_time` time(6) NOT NULL, + `rows_sent` bigint(20) unsigned NOT NULL, + `rows_examined` bigint(20) unsigned NOT NULL, + `db` varchar(512) NOT NULL, + `last_insert_id` int(11) NOT NULL, + `insert_id` int(11) NOT NULL, + `server_id` int(10) unsigned NOT NULL, + `sql_text` mediumtext NOT NULL, + `thread_id` bigint(21) unsigned NOT NULL, + `rows_affected` bigint(20) unsigned NOT NULL +) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'; +SET @@long_query_time= @old_long_query_time; +SET @@global.log_output= @old_log_output; +SET @@global.slow_query_log= @old_slow_query_log; +--enable_ps_protocol + +--let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err +--let SEARCH_PATTERN=incorrect number of fields in the log table +--source include/search_pattern_in_file.inc +--let SEARCH_PATTERN=Can't write data \(possible incorrect log table structure\) +--source include/search_pattern_in_file.inc + +--echo # End of 10.5 tests diff --git a/mysql-test/main/sp-bugs.result b/mysql-test/main/sp-bugs.result index a166a5a0a9a..14619165e53 100644 --- a/mysql-test/main/sp-bugs.result +++ b/mysql-test/main/sp-bugs.result @@ -363,3 +363,30 @@ ERROR HY000: Unknown thread id: 0 # # End of 10.4 tests # +# +# MDEV-24935: Server crashes in Field_iterator_natural_join::next or Field_iterator_table_ref::set_field_iterator upon 2nd execution of SP +# +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b INT, c INT); +CREATE TABLE t3 (d INT); +CREATE PROCEDURE sp() SELECT * FROM t1 JOIN t2 JOIN t3 USING (x); +CALL sp; +ERROR 42S22: Unknown column 'x' in 'FROM' +CALL sp; +ERROR 42S22: Unknown column 'x' in 'FROM' +# Clean up +DROP PROCEDURE sp; +DROP TABLE t1, t2, t3; +CREATE TABLE t1 (c1 INT,c2 INT); +CREATE TABLE t2 (c INT,c2 INT); +CREATE PROCEDURE p2 (OUT i INT,OUT o INT) READS SQL DATA DELETE a2,a3 FROM t1 AS a1 JOIN t2 AS a2 NATURAL JOIN t2 AS a3; +CALL p2 (@c,@a); +ERROR 23000: Column 'c2' in FROM is ambiguous +CALL p2 (@a,@c); +ERROR 23000: Column 'c2' in FROM is ambiguous +# Clean up +DROP PROCEDURE p2; +DROP TABLE t1, t2; +# +# End of 10.5 tests +# diff --git a/mysql-test/main/sp-bugs.test b/mysql-test/main/sp-bugs.test index 18fe14dc8bc..f44216fbf46 100644 --- a/mysql-test/main/sp-bugs.test +++ b/mysql-test/main/sp-bugs.test @@ -386,3 +386,34 @@ KILL (('x' IN ( SELECT 1)) MOD 44); --echo # --echo # End of 10.4 tests --echo # + +--echo # +--echo # MDEV-24935: Server crashes in Field_iterator_natural_join::next or Field_iterator_table_ref::set_field_iterator upon 2nd execution of SP +--echo # +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b INT, c INT); +CREATE TABLE t3 (d INT); +CREATE PROCEDURE sp() SELECT * FROM t1 JOIN t2 JOIN t3 USING (x); +--error ER_BAD_FIELD_ERROR +CALL sp; +--error ER_BAD_FIELD_ERROR +CALL sp; +--echo # Clean up +DROP PROCEDURE sp; +DROP TABLE t1, t2, t3; + +CREATE TABLE t1 (c1 INT,c2 INT); +CREATE TABLE t2 (c INT,c2 INT); +CREATE PROCEDURE p2 (OUT i INT,OUT o INT) READS SQL DATA DELETE a2,a3 FROM t1 AS a1 JOIN t2 AS a2 NATURAL JOIN t2 AS a3; + +--error ER_NON_UNIQ_ERROR +CALL p2 (@c,@a); +--error ER_NON_UNIQ_ERROR +CALL p2 (@a,@c); +--echo # Clean up +DROP PROCEDURE p2; +DROP TABLE t1, t2; + +--echo # +--echo # End of 10.5 tests +--echo # diff --git a/mysql-test/main/sp.result b/mysql-test/main/sp.result index 20152586ee4..b57c5a17572 100644 --- a/mysql-test/main/sp.result +++ b/mysql-test/main/sp.result @@ -8971,6 +8971,181 @@ DROP PROCEDURE p1; DROP PROCEDURE p2; # End of 10.4 tests # +# MDEV-35910: Pushdown of conditions with local SP variables +# into materialized derived table +# Pushdown of conditions with local variables from HAVING +# into WHERE +# +CREATE TABLE t1( +pk INT PRIMARY KEY AUTO_INCREMENT, +a INT, +b INT +); +INSERT INTO t1(a,b) VALUES (1, 2), (3, 2), (4, 5); +INSERT INTO t1(a,b) VALUES (3, 7), (4, 1), (3, 4); +CREATE PROCEDURE pushdownDerivedSp() +BEGIN +DECLARE localA INT DEFAULT 1; +DECLARE localB INT DEFAULT 2; +SELECT dt.a +FROM ( +SELECT t1.a, MIN(t1.b) as minB +FROM t1 +GROUP BY t1.a +) AS dt +WHERE dt.minB = localB AND dt.a = localA + localB; +END$$ +CREATE PROCEDURE explainPushdownDerivedSp() +BEGIN +DECLARE localA INT DEFAULT 1; +DECLARE localB INT DEFAULT 2; +EXPLAIN format=json SELECT dt.a +FROM ( +SELECT t1.a, MIN(t1.b) as minB +FROM t1 +GROUP BY t1.a +) AS dt +WHERE dt.minB = localB AND dt.a = localA + localB; +END$$ +CREATE PROCEDURE pushdownFromHavingSp() +BEGIN +DECLARE localA INT DEFAULT 1; +DECLARE localB INT DEFAULT 2; +SELECT t1.a, SUM(b) +FROM t1 +GROUP BY t1.a +HAVING t1.a > localA AND SUM(b) > 10 OR t1.a <= localB AND SUM(b) <= 2; +END$$ +CREATE PROCEDURE explainPushdownFromHavingSp() +BEGIN +DECLARE localA INT DEFAULT 1; +DECLARE localB INT DEFAULT 2; +EXPLAIN format=json +SELECT t1.a, SUM(b) +FROM t1 +GROUP BY t1.a +HAVING t1.a > localA AND SUM(b) > 10 OR t1.a <= localB AND SUM(b) <= 2; +END$$ +CALL pushdownDerivedSp(); +a +3 +set statement optimizer_switch='condition_pushdown_for_derived=off' +for CALL pushdownDerivedSp(); +a +3 +CALL explainPushdownDerivedSp(); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "table": { + "table_name": "", + "access_type": "ALL", + "rows": 6, + "filtered": 100, + "attached_condition": "dt.minB = (localB@1) and dt.a = (localA@0 + localB@1)", + "materialized": { + "query_block": { + "select_id": 2, + "having_condition": "minB = (localB@1)", + "table": { + "table_name": "t1", + "access_type": "ALL", + "rows": 6, + "filtered": 100, + "attached_condition": "t1.a = (localA@0 + localB@1)" + } + } + } + } + } +} +set statement optimizer_switch='condition_pushdown_for_derived=off' for +CALL explainPushdownDerivedSp(); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "table": { + "table_name": "", + "access_type": "ALL", + "rows": 6, + "filtered": 100, + "attached_condition": "dt.minB = (localB@1) and dt.a = (localA@0 + localB@1)", + "materialized": { + "query_block": { + "select_id": 2, + "filesort": { + "sort_key": "t1.a", + "temporary_table": { + "table": { + "table_name": "t1", + "access_type": "ALL", + "rows": 6, + "filtered": 100 + } + } + } + } + } + } + } +} +CALL pushdownFromHavingSp(); +a SUM(b) +1 2 +3 13 +set statement optimizer_switch='condition_pushdown_from_having=off' for +CALL pushdownFromHavingSp(); +a SUM(b) +1 2 +3 13 +CALL explainPushdownFromHavingSp(); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "having_condition": "t1.a > (localA@0) and sum(t1.b) > 10 or t1.a <= (localB@1) and sum(t1.b) <= 2", + "filesort": { + "sort_key": "t1.a", + "temporary_table": { + "table": { + "table_name": "t1", + "access_type": "ALL", + "rows": 6, + "filtered": 100, + "attached_condition": "t1.a > (localA@0) or t1.a <= (localB@1)" + } + } + } + } +} +set statement optimizer_switch='condition_pushdown_from_having=off' for +CALL explainPushdownFromHavingSp(); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "having_condition": "t1.a > (localA@0) and sum(t1.b) > 10 or t1.a <= (localB@1) and sum(t1.b) <= 2", + "filesort": { + "sort_key": "t1.a", + "temporary_table": { + "table": { + "table_name": "t1", + "access_type": "ALL", + "rows": 6, + "filtered": 100 + } + } + } + } +} +DROP PROCEDURE pushdownDerivedSp; +DROP PROCEDURE explainPushdownDerivedSp; +DROP PROCEDURE pushdownFromHavingSp; +DROP PROCEDURE explainPushdownFromHavingSp; +DROP TABLE t1; +# End of 10.5 tests # # MDEV-29129: Performance regression starting in 10.6: unlimited "select order by limit" # @@ -9096,3 +9271,4 @@ database() test DROP FUNCTION database; DROP TABLE t1; +# End of 10.6 tests diff --git a/mysql-test/main/sp.test b/mysql-test/main/sp.test index 48cfaeef110..704cc9e3dd3 100644 --- a/mysql-test/main/sp.test +++ b/mysql-test/main/sp.test @@ -10591,7 +10591,95 @@ DROP PROCEDURE p1; DROP PROCEDURE p2; --echo # End of 10.4 tests + --echo # +--echo # MDEV-35910: Pushdown of conditions with local SP variables +--echo # into materialized derived table +--echo # Pushdown of conditions with local variables from HAVING +--echo # into WHERE +--echo # + +CREATE TABLE t1( + pk INT PRIMARY KEY AUTO_INCREMENT, + a INT, + b INT +); +INSERT INTO t1(a,b) VALUES (1, 2), (3, 2), (4, 5); +INSERT INTO t1(a,b) VALUES (3, 7), (4, 1), (3, 4); + +DELIMITER $$; +CREATE PROCEDURE pushdownDerivedSp() +BEGIN + DECLARE localA INT DEFAULT 1; + DECLARE localB INT DEFAULT 2; + SELECT dt.a + FROM ( + SELECT t1.a, MIN(t1.b) as minB + FROM t1 + GROUP BY t1.a + ) AS dt + WHERE dt.minB = localB AND dt.a = localA + localB; +END$$ + +CREATE PROCEDURE explainPushdownDerivedSp() +BEGIN + DECLARE localA INT DEFAULT 1; + DECLARE localB INT DEFAULT 2; + EXPLAIN format=json SELECT dt.a + FROM ( + SELECT t1.a, MIN(t1.b) as minB + FROM t1 + GROUP BY t1.a + ) AS dt + WHERE dt.minB = localB AND dt.a = localA + localB; +END$$ + +CREATE PROCEDURE pushdownFromHavingSp() +BEGIN + DECLARE localA INT DEFAULT 1; + DECLARE localB INT DEFAULT 2; + SELECT t1.a, SUM(b) + FROM t1 + GROUP BY t1.a + HAVING t1.a > localA AND SUM(b) > 10 OR t1.a <= localB AND SUM(b) <= 2; +END$$ + +CREATE PROCEDURE explainPushdownFromHavingSp() +BEGIN + DECLARE localA INT DEFAULT 1; + DECLARE localB INT DEFAULT 2; + EXPLAIN format=json + SELECT t1.a, SUM(b) + FROM t1 + GROUP BY t1.a + HAVING t1.a > localA AND SUM(b) > 10 OR t1.a <= localB AND SUM(b) <= 2; +END$$ + +DELIMITER ;$$ + +CALL pushdownDerivedSp(); +set statement optimizer_switch='condition_pushdown_for_derived=off' +for CALL pushdownDerivedSp(); + +CALL explainPushdownDerivedSp(); +set statement optimizer_switch='condition_pushdown_for_derived=off' for +CALL explainPushdownDerivedSp(); + +CALL pushdownFromHavingSp(); +set statement optimizer_switch='condition_pushdown_from_having=off' for +CALL pushdownFromHavingSp(); + +CALL explainPushdownFromHavingSp(); +set statement optimizer_switch='condition_pushdown_from_having=off' for +CALL explainPushdownFromHavingSp(); + +DROP PROCEDURE pushdownDerivedSp; +DROP PROCEDURE explainPushdownDerivedSp; +DROP PROCEDURE pushdownFromHavingSp; +DROP PROCEDURE explainPushdownFromHavingSp; +DROP TABLE t1; + +--echo # End of 10.5 tests --echo # --echo # MDEV-29129: Performance regression starting in 10.6: unlimited "select order by limit" @@ -10679,7 +10767,6 @@ CREATE OR REPLACE FUNCTION database() RETURNS int RETURN 333; SELECT database(); DROP FUNCTION database; - -# Cleanup DROP TABLE t1; +--echo # End of 10.6 tests diff --git a/mysql-test/main/trigger_null-8605.result b/mysql-test/main/trigger_null.result similarity index 96% rename from mysql-test/main/trigger_null-8605.result rename to mysql-test/main/trigger_null.result index 6480fbf9a7e..91bae7e3b0e 100644 --- a/mysql-test/main/trigger_null-8605.result +++ b/mysql-test/main/trigger_null.result @@ -388,4 +388,15 @@ id rate 3 15 4 5 drop table t1; +# +# MDEV-35911 Assertion `marked_for_write_or_computed()' failed in bool Field_new_decimal::store_value(const my_decimal*, int*) +# +set sql_mode=''; +create table t1 (c fixed,c2 binary (1),c5 fixed not null); +create trigger tr1 before update on t1 for each row set @a=0; +insert into t1 (c) values (1); +Warnings: +Warning 1364 Field 'c5' doesn't have a default value +drop table t1; +set sql_mode=default; # End of 10.5 tests diff --git a/mysql-test/main/trigger_null-8605.test b/mysql-test/main/trigger_null.test similarity index 97% rename from mysql-test/main/trigger_null-8605.test rename to mysql-test/main/trigger_null.test index e33f17151bf..d3b74af49b3 100644 --- a/mysql-test/main/trigger_null-8605.test +++ b/mysql-test/main/trigger_null.test @@ -415,4 +415,14 @@ select * from t1; drop table t1; +--echo # +--echo # MDEV-35911 Assertion `marked_for_write_or_computed()' failed in bool Field_new_decimal::store_value(const my_decimal*, int*) +--echo # +set sql_mode=''; +create table t1 (c fixed,c2 binary (1),c5 fixed not null); +create trigger tr1 before update on t1 for each row set @a=0; +insert into t1 (c) values (1); +drop table t1; +set sql_mode=default; + --echo # End of 10.5 tests diff --git a/mysql-test/main/view.result b/mysql-test/main/view.result index 6d4900e6cf5..7c6587b6c0c 100644 --- a/mysql-test/main/view.result +++ b/mysql-test/main/view.result @@ -6994,6 +6994,17 @@ View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1` from `t1` union (select 1 AS `1` from DUAL where 1 group by 1 having 1 for update) latin1 latin1_swedish_ci DROP VIEW v1; DROP TABLE t1; +# +# MDEV-35090: (Item_func_current_user) Assertion +# `typeid(*copy) == typeid(*this)' failed in +# Item_func_or_sum::do_build_clone +# +CREATE VIEW v AS SELECT 1; +SELECT * FROM v WHERE UpdateXML('N/A','/a',CURRENT_USER()); +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'N/A' +DROP VIEW v; # End of 10.5 tests # # MDEV-13115: SELECT .. SKIP LOCKED - ensure SHOW CREATE VIEW is correct diff --git a/mysql-test/main/view.test b/mysql-test/main/view.test index 490d7ea2117..0581acbec63 100644 --- a/mysql-test/main/view.test +++ b/mysql-test/main/view.test @@ -6768,6 +6768,19 @@ SHOW CREATE VIEW v1; DROP VIEW v1; DROP TABLE t1; +--echo # +--echo # MDEV-35090: (Item_func_current_user) Assertion +--echo # `typeid(*copy) == typeid(*this)' failed in +--echo # Item_func_or_sum::do_build_clone +--echo # + +CREATE VIEW v AS SELECT 1; + +SELECT * FROM v WHERE UpdateXML('N/A','/a',CURRENT_USER()); + +# Cleanup +DROP VIEW v; + --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/win.result b/mysql-test/main/win.result index 520fc104c91..626f04df274 100644 --- a/mysql-test/main/win.result +++ b/mysql-test/main/win.result @@ -4603,6 +4603,29 @@ w2_total w1_total u 200 200 2 DROP VIEW v1; DROP TABLE t1; +# +# MDEV-35869: degenerated subquery with window function +# +CREATE TABLE t1 (a int DEFAULT 10); +INSERT INTO t1 VALUES (7), (2), (3); +SELECT * FROM t1 WHERE (SELECT AVG(3)) > 2; +a +7 +2 +3 +SELECT * FROM t1 WHERE (SELECT AVG(3) OVER ()) > 2; +a +7 +2 +3 +INSERT INTO t1 VALUES((SELECT avg(4) OVER ())); +SELECT * FROM t1; +a +7 +2 +3 +4 +DROP TABLE t1; # End of 10.5 tests # # MDEV-28206 SIGSEGV in Item_field::fix_fields when using LEAD...OVER diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index 99efc4e8672..23f14bad573 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -3001,6 +3001,18 @@ eval $q3; DROP VIEW v1; DROP TABLE t1; +--echo # +--echo # MDEV-35869: degenerated subquery with window function +--echo # + +CREATE TABLE t1 (a int DEFAULT 10); +INSERT INTO t1 VALUES (7), (2), (3); +SELECT * FROM t1 WHERE (SELECT AVG(3)) > 2; +SELECT * FROM t1 WHERE (SELECT AVG(3) OVER ()) > 2; +INSERT INTO t1 VALUES((SELECT avg(4) OVER ())); +SELECT * FROM t1; +DROP TABLE t1; + --echo # End of 10.5 tests --echo # diff --git a/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result b/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result index 798bd8ab853..39c0bd52fac 100644 --- a/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result +++ b/mysql-test/suite/binlog/r/binlog_spurious_ddl_errors.result @@ -38,7 +38,7 @@ CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE; ALTER TABLE t_stmt ADD COLUMN b INT; CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1); CREATE INDEX i ON t_stmt(a); -ERROR 42000: Too many key parts specified; max 0 parts allowed +ERROR 42000: Specified key was too long; max key length is 0 bytes CREATE TABLE t_stmt_new ENGINE = EXAMPLE SELECT * FROM t_stmt; ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging DROP TABLE t_stmt; diff --git a/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test b/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test index 29a860764a9..5a015c2b8eb 100644 --- a/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test +++ b/mysql-test/suite/binlog/t/binlog_spurious_ddl_errors.test @@ -75,7 +75,7 @@ ALTER TABLE t_stmt ADD COLUMN b INT; CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1); ---error ER_TOO_MANY_KEY_PARTS +--error ER_TOO_LONG_KEY CREATE INDEX i ON t_stmt(a); --error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE diff --git a/mysql-test/suite/compat/oracle/r/update.result b/mysql-test/suite/compat/oracle/r/update.result new file mode 100644 index 00000000000..d7585e8e61d --- /dev/null +++ b/mysql-test/suite/compat/oracle/r/update.result @@ -0,0 +1,16 @@ +SET @save_sql_mode=@@global.sql_mode; +SET sql_mode=ORACLE; +SET GLOBAL sql_mode='ORACLE'; +# MDEV-27769 Assertion failed in Field::ptr_in_record upon UPDATE +CREATE TABLE t (s geometry, t text) engine innodb; +Warnings: +Warning 1286 Unknown storage engine 'innodb' +Warning 1266 Using storage engine MyISAM for table 't' +INSERT IGNORE INTO t () VALUES (); +UPDATE IGNORE t SET t= '', s = 0; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +UPDATE IGNORE t SET t= '', s = 0; +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +ALTER TABLE t force; +DROP TABLE t; +SET GLOBAL sql_mode=@save_sql_mode; diff --git a/mysql-test/suite/compat/oracle/t/update.test b/mysql-test/suite/compat/oracle/t/update.test new file mode 100644 index 00000000000..389a27f3dbd --- /dev/null +++ b/mysql-test/suite/compat/oracle/t/update.test @@ -0,0 +1,19 @@ +SET @save_sql_mode=@@global.sql_mode; +SET sql_mode=ORACLE; +SET GLOBAL sql_mode='ORACLE'; + + +--echo # MDEV-27769 Assertion failed in Field::ptr_in_record upon UPDATE +CREATE TABLE t (s geometry, t text) engine innodb; +INSERT IGNORE INTO t () VALUES (); +--error ER_CANT_CREATE_GEOMETRY_OBJECT +UPDATE IGNORE t SET t= '', s = 0; +--error ER_CANT_CREATE_GEOMETRY_OBJECT +UPDATE IGNORE t SET t= '', s = 0; + +ALTER TABLE t force; + +DROP TABLE t; + +# Test cleanup +SET GLOBAL sql_mode=@save_sql_mode; diff --git a/mysql-test/suite/encryption/r/tempfiles_encrypted.result b/mysql-test/suite/encryption/r/tempfiles_encrypted.result index 029e5b49738..15ae71cf160 100644 --- a/mysql-test/suite/encryption/r/tempfiles_encrypted.result +++ b/mysql-test/suite/encryption/r/tempfiles_encrypted.result @@ -4609,6 +4609,29 @@ w2_total w1_total u 200 200 2 DROP VIEW v1; DROP TABLE t1; +# +# MDEV-35869: degenerated subquery with window function +# +CREATE TABLE t1 (a int DEFAULT 10); +INSERT INTO t1 VALUES (7), (2), (3); +SELECT * FROM t1 WHERE (SELECT AVG(3)) > 2; +a +7 +2 +3 +SELECT * FROM t1 WHERE (SELECT AVG(3) OVER ()) > 2; +a +7 +2 +3 +INSERT INTO t1 VALUES((SELECT avg(4) OVER ())); +SELECT * FROM t1; +a +7 +2 +3 +4 +DROP TABLE t1; # End of 10.5 tests # # MDEV-28206 SIGSEGV in Item_field::fix_fields when using LEAD...OVER diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 5b92b282ece..3d3ef86f04a 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -10,5 +10,4 @@ # ############################################################################## -galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback() -galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback() +galera_sequences : MDEV-35934/MDEV-33850 For Galera, create sequence with low cache got signal 6 error: [ERROR] WSREP: FSM: no such a transition REPLICATING -> COMMITTED diff --git a/mysql-test/suite/galera/r/MDEV-35018.result b/mysql-test/suite/galera/r/MDEV-35018.result new file mode 100644 index 00000000000..2afa7c4d397 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-35018.result @@ -0,0 +1,38 @@ +connection node_2; +connection node_1; +connection node_2; +SET GLOBAL wsrep_slave_threads=2; +CREATE TABLE t1 ( +id INTEGER PRIMARY KEY, +f2 INTEGER); +CREATE TABLE t2 ( +f1 INT PRIMARY KEY, +t1_id INT NOT NULL, +f2 INTEGER NOT NULL, +KEY key_t1_id(t1_id), +CONSTRAINT key_t1_id FOREIGN KEY (t1_id) REFERENCES t1 (id) ON UPDATE CASCADE ON DELETE CASCADE); +INSERT INTO t1 VALUES (1,0); +INSERT INTO t1 VALUES (2,0); +INSERT INTO t2 VALUES (1,1,1234); +INSERT INTO t2 VALUES (2,2,1234); +connection node_2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_toi"; +connection node_1; +DROP TABLE t2; +connection node_2; +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_toi_reached"; +SET SESSION wsrep_sync_wait = 0; +1 +connection node_1; +UPDATE t1 SET f2 = 1 WHERE id=2; +connection node_2; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_toi"; +SET SESSION wsrep_sync_wait = DEFAULT; +SELECT * FROM t1; +id f2 +1 0 +2 1 +SET DEBUG_SYNC = 'RESET'; +SET GLOBAL DEBUG_DBUG = ''; +SET GLOBAL wsrep_slave_threads = DEFAULT; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-35852.result b/mysql-test/suite/galera/r/MDEV-35852.result new file mode 100644 index 00000000000..f9d07043cf9 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-35852.result @@ -0,0 +1,8 @@ +connection node_2; +connection node_1; +CREATE TABLE t (a INT) ENGINE=InnoDB; +INSERT DELAYED INTO t VALUES (); +ERROR HY000: DELAYED option not supported for table 't' +DROP TABLE t; +INSERT DELAYED t1 () VALUES (); +ERROR 42S02: Table 'test.t1' doesn't exist diff --git a/mysql-test/suite/galera/r/MW-369.result b/mysql-test/suite/galera/r/MW-369.result index b4fb8668e74..4c487c57030 100644 --- a/mysql-test/suite/galera/r/MW-369.result +++ b/mysql-test/suite/galera/r/MW-369.result @@ -18,12 +18,12 @@ INSERT INTO c VALUES (1, 1); connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -58,12 +58,12 @@ UPDATE c SET f2 = 1 WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -96,12 +96,12 @@ DELETE FROM c WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -130,12 +130,12 @@ INSERT INTO c VALUES (1, 0);; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -168,12 +168,12 @@ UPDATE c SET f2 = 1 WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -211,12 +211,12 @@ INSERT INTO cf (f1, p_id) VALUES (20, 1); connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; @@ -249,12 +249,12 @@ INSERT INTO cg VALUES (1, 1, 0); connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; diff --git a/mysql-test/suite/galera/r/MW-402.result b/mysql-test/suite/galera/r/MW-402.result index e936b83553d..925d208f5c6 100644 --- a/mysql-test/suite/galera/r/MW-402.result +++ b/mysql-test/suite/galera/r/MW-402.result @@ -21,16 +21,17 @@ DELETE FROM p WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p; f1 f2 @@ -59,16 +60,17 @@ UPDATE p set f1=11 WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p; f1 f2 @@ -99,16 +101,17 @@ UPDATE p set f1=11 WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p; f1 f2 @@ -130,16 +133,17 @@ UPDATE c SET p_id=2 where f1=1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p; f1 f2 @@ -174,15 +178,16 @@ DELETE FROM p1 WHERE f1 = 1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p1; f1 f2 @@ -219,16 +224,17 @@ DELETE FROM p1 WHERE f1=1; connection node_1a; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; connection node_1; -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; COMMIT; connection node_1a; -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; connection node_1; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'RESET'; connection node_2; SELECT * FROM p1; f1 f2 diff --git a/mysql-test/suite/galera/r/galera_ddl_fk_conflict.result b/mysql-test/suite/galera/r/galera_ddl_fk_conflict.result index 03e84f9facd..226aebde69e 100644 --- a/mysql-test/suite/galera/r/galera_ddl_fk_conflict.result +++ b/mysql-test/suite/galera/r/galera_ddl_fk_conflict.result @@ -3,11 +3,12 @@ connection node_1; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1a; SET SESSION wsrep_sync_wait=0; +FLUSH STATUS; connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1b; SET SESSION wsrep_sync_wait=0; ###################################################################### -# Test for ALTER ENGINE=INNODB +# Test for ALTER TABLE ENGINE=INNODB ###################################################################### ###################################################################### # @@ -17,6 +18,7 @@ SET SESSION wsrep_sync_wait=0; ###################################################################### connection node_1; SET SESSION wsrep_sync_wait=0; +FLUSH STATUS; CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); CREATE TABLE p2 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); @@ -49,6 +51,9 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); ###################################################################### # # Scenario #2: DML working on FK parent table tries to replicate, but @@ -87,6 +92,9 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); ###################################################################### # # Scenario #3: 2 DMLs working on two FK parent tables try to replicate, @@ -137,10 +145,10 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 -DROP TABLE c1, c2; +DROP TABLE IF EXISTS c1, c2; DROP TABLE p1, p2; ###################################################################### -# Test for TRUNCATE +# Test for TRUNCATE TABLE ###################################################################### ###################################################################### # @@ -150,6 +158,7 @@ DROP TABLE p1, p2; ###################################################################### connection node_1; SET SESSION wsrep_sync_wait=0; +FLUSH STATUS; CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); CREATE TABLE p2 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); @@ -182,6 +191,9 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); ###################################################################### # # Scenario #2: DML working on FK parent table tries to replicate, but @@ -220,6 +232,9 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); ###################################################################### # # Scenario #3: 2 DMLs working on two FK parent tables try to replicate, @@ -270,5 +285,592 @@ EXPECT_1 SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; EXPECT_2 2 -DROP TABLE c1, c2; +DROP TABLE IF EXISTS c1, c2; DROP TABLE p1, p2; +###################################################################### +# Test for DROP TABLE +###################################################################### +###################################################################### +# +# Scenario #1: DML working on FK parent table BF aborted by DDL +# over child table +# +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE p2 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p2 VALUES (1, 'INITIAL VALUE'); +INSERT INTO p2 VALUES (2, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +CREATE TABLE c2 (pk INTEGER PRIMARY KEY, fk1 INTEGER, fk2 INTEGER, FOREIGN KEY (fk1) REFERENCES p1(pk), FOREIGN KEY (fk2) REFERENCES p2(pk)); +INSERT INTO c2 VALUES (1,1,1), (2,1,2); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +connection node_2; +SET SESSION wsrep_sync_wait=0; +DROP TABLE c1 ; +connection node_1; +COMMIT; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #2: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE c1 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #3: 2 DMLs working on two FK parent tables try to replicate, +# but fails in certification for earlier DDL on child table +# which is child to both FK parents +# +###################################################################### +connection node_1; +BEGIN; +connection node_1b; +BEGIN; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE c2 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1b; +UPDATE p2 SET f2 = 'TO DEADLOCK' WHERE pk = 2; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +connection node_1b; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +DROP TABLE IF EXISTS c1, c2; +Warnings: +Note 1051 Unknown table 'test.c2' +DROP TABLE p1, p2; +###################################################################### +# Test for DROP TABLE +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #4: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# and another temporary table. TMP table should be skipped +# but FK child table should be replicated with proper keys +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +CREATE TEMPORARY TABLE tmp1 (i int); +CREATE TEMPORARY TABLE tmp2 (i int); +DROP TABLE tmp1, c1, tmp2 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +INSERT INTO p1 VALUES (10, 'TO DEADLOCK'); +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +DROP TABLE IF EXISTS c1; +Warnings: +Note 1051 Unknown table 'test.c1' +DROP TABLE p1; +DROP TABLE IF EXISTS tmp1, tmp2; +Warnings: +Note 1051 Unknown table 'test.tmp1,test.tmp2' +###################################################################### +# Test for DROP TABLE IF EXISTS +###################################################################### +###################################################################### +# +# Scenario #1: DML working on FK parent table BF aborted by DDL +# over child table +# +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE p2 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p2 VALUES (1, 'INITIAL VALUE'); +INSERT INTO p2 VALUES (2, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +CREATE TABLE c2 (pk INTEGER PRIMARY KEY, fk1 INTEGER, fk2 INTEGER, FOREIGN KEY (fk1) REFERENCES p1(pk), FOREIGN KEY (fk2) REFERENCES p2(pk)); +INSERT INTO c2 VALUES (1,1,1), (2,1,2); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +connection node_2; +SET SESSION wsrep_sync_wait=0; +DROP TABLE IF EXISTS c1 ; +connection node_1; +COMMIT; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #2: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE IF EXISTS c1 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #3: 2 DMLs working on two FK parent tables try to replicate, +# but fails in certification for earlier DDL on child table +# which is child to both FK parents +# +###################################################################### +connection node_1; +BEGIN; +connection node_1b; +BEGIN; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE IF EXISTS c2 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1b; +UPDATE p2 SET f2 = 'TO DEADLOCK' WHERE pk = 2; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +connection node_1b; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +DROP TABLE IF EXISTS c1, c2; +Warnings: +Note 1051 Unknown table 'test.c2' +DROP TABLE p1, p2; +###################################################################### +# Test for DROP TABLE IF EXISTS +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #4: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# and another temporary table. TMP table should be skipped +# but FK child table should be replicated with proper keys +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +CREATE TEMPORARY TABLE tmp1 (i int); +CREATE TEMPORARY TABLE tmp2 (i int); +DROP TABLE IF EXISTS tmp1, c1, tmp2 ; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +INSERT INTO p1 VALUES (10, 'TO DEADLOCK'); +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +DROP TABLE IF EXISTS c1; +Warnings: +Note 1051 Unknown table 'test.c1' +DROP TABLE p1; +DROP TABLE IF EXISTS tmp1, tmp2; +Warnings: +Note 1051 Unknown table 'test.tmp1,test.tmp2' +###################################################################### +# Test for DROP TABLE IF EXISTS nonexisting, +###################################################################### +###################################################################### +# +# Scenario #1: DML working on FK parent table BF aborted by DDL +# over child table +# +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE p2 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p2 VALUES (1, 'INITIAL VALUE'); +INSERT INTO p2 VALUES (2, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +CREATE TABLE c2 (pk INTEGER PRIMARY KEY, fk1 INTEGER, fk2 INTEGER, FOREIGN KEY (fk1) REFERENCES p1(pk), FOREIGN KEY (fk2) REFERENCES p2(pk)); +INSERT INTO c2 VALUES (1,1,1), (2,1,2); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +connection node_2; +SET SESSION wsrep_sync_wait=0; +DROP TABLE IF EXISTS nonexisting, c1 ; +Warnings: +Note 1051 Unknown table 'test.nonexisting' +connection node_1; +COMMIT; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #2: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE IF EXISTS nonexisting, c1 ; +Warnings: +Note 1051 Unknown table 'test.nonexisting' +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_1; +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #3: 2 DMLs working on two FK parent tables try to replicate, +# but fails in certification for earlier DDL on child table +# which is child to both FK parents +# +###################################################################### +connection node_1; +BEGIN; +connection node_1b; +BEGIN; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DROP TABLE IF EXISTS nonexisting, c2 ; +Warnings: +Note 1051 Unknown table 'test.nonexisting' +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +COMMIT; +connection node_1b; +UPDATE p2 SET f2 = 'TO DEADLOCK' WHERE pk = 2; +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +connection node_1b; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +EXPECT_2 +2 +DROP TABLE IF EXISTS c1, c2; +Warnings: +Note 1051 Unknown table 'test.c2' +DROP TABLE p1, p2; +###################################################################### +# Test for DROP TABLE IF EXISTS nonexisting, +###################################################################### +connection node_1; +SET SESSION wsrep_sync_wait=0; +CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); +INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); +CREATE TABLE c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT INTO c1 VALUES (1,1); +###################################################################### +# +# Scenario #4: DML working on FK parent table tries to replicate, but +# fails in certification for earlier DDL on child table +# and another temporary table. TMP table should be skipped +# but FK child table should be replicated with proper keys +# +###################################################################### +connection node_1; +BEGIN; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +CREATE TEMPORARY TABLE tmp1 (i int); +CREATE TEMPORARY TABLE tmp2 (i int); +DROP TABLE IF EXISTS nonexisting, tmp1, c1, tmp2 ; +Warnings: +Note 1051 Unknown table 'test.nonexisting' +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +INSERT INTO p1 VALUES (10, 'TO DEADLOCK'); +COMMIT; +connection node_1a; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SELECT 'I deadlocked'; +I deadlocked +I deadlocked +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +connection node_2; +SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; +EXPECT_1 +1 +DROP TABLE IF EXISTS c1; +Warnings: +Note 1051 Unknown table 'test.c1' +DROP TABLE p1; +DROP TABLE IF EXISTS tmp1, tmp2; +Warnings: +Note 1051 Unknown table 'test.tmp1,test.tmp2' diff --git a/mysql-test/suite/galera/r/galera_query_cache_invalidate.result b/mysql-test/suite/galera/r/galera_query_cache_invalidate.result index 078920da3f2..b45f8ee01b7 100644 --- a/mysql-test/suite/galera/r/galera_query_cache_invalidate.result +++ b/mysql-test/suite/galera/r/galera_query_cache_invalidate.result @@ -7,7 +7,6 @@ call mtr.add_suppression("WSREP: Ignoring server id .* for non bootstrap node"); connection node_4; call mtr.add_suppression("WSREP: Ignoring server id .* for non bootstrap node"); connection node_3; -CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_port=NODE_MYPORT_1, master_use_gtid=current_pos;; START SLAVE; include/wait_for_slave_to_start.inc connection node_1; diff --git a/mysql-test/suite/galera/r/galera_slave_replay.result b/mysql-test/suite/galera/r/galera_slave_replay.result index 8fb7e1ab099..263e1a675d5 100644 --- a/mysql-test/suite/galera/r/galera_slave_replay.result +++ b/mysql-test/suite/galera/r/galera_slave_replay.result @@ -94,3 +94,6 @@ DROP TABLE t1; connection node_3; DROP TABLE t1; RESET MASTER; +connection node_1; +disconnect node_2a; +disconnect node_3; diff --git a/mysql-test/suite/galera/r/galera_threadpool.result b/mysql-test/suite/galera/r/galera_threadpool.result new file mode 100644 index 00000000000..e89e243621a --- /dev/null +++ b/mysql-test/suite/galera/r/galera_threadpool.result @@ -0,0 +1,36 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connect node_2c, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connect node_2d, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connect node_2e, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY, f2 char) ENGINE=InnoDB; +INSERT INTO t1 VALUES (0,'a'); +INSERT INTO t1 VALUES (1,'a'); +connection node_2b; +SELECT * FROM t1; +f1 f2 +0 a +1 a +connection node_2c; +INSERT INTO t1 VALUES (2,'c'); +connection node_2d; +BEGIN; +SELECT * FROM t1; +f1 f2 +0 a +1 a +2 c +connection node_2e; +BEGIN; +UPDATE t1 SET f2='e' WHERE f1=0; +connection node_2; +connection node_1; +connection node_2; +connection node_1; +connection node_2; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-26266.cnf b/mysql-test/suite/galera/t/MDEV-26266.cnf new file mode 100644 index 00000000000..53eeb9c82bc --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-26266.cnf @@ -0,0 +1,6 @@ +!include ../galera_2nodes.cnf + +[mysqld] +# We want both nodes to restart before this test, +# so let's add a dummy parameter here: +loose-MDEV-26266 diff --git a/mysql-test/suite/galera/t/MDEV-26266.test b/mysql-test/suite/galera/t/MDEV-26266.test index 7167e029cb5..8560cb3c7b6 100644 --- a/mysql-test/suite/galera/t/MDEV-26266.test +++ b/mysql-test/suite/galera/t/MDEV-26266.test @@ -10,6 +10,8 @@ # --source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/force_restart.inc SET SESSION query_prealloc_size=8192; SET max_session_mem_used=50000; diff --git a/mysql-test/suite/galera/t/MDEV-28053.test b/mysql-test/suite/galera/t/MDEV-28053.test index 85cb20c7e10..f3d7a775454 100644 --- a/mysql-test/suite/galera/t/MDEV-28053.test +++ b/mysql-test/suite/galera/t/MDEV-28053.test @@ -37,7 +37,7 @@ while ($counter) { --connection node_2 --disable_query_log --disable_result_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; START SLAVE; --eval SELECT MASTER_GTID_WAIT('$gtid', 600) --enable_result_log diff --git a/mysql-test/suite/galera/t/MDEV-35018.test b/mysql-test/suite/galera/t/MDEV-35018.test new file mode 100644 index 00000000000..490b542bcc0 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-35018.test @@ -0,0 +1,83 @@ +# +# BF-BF conflict on MDL locks between: DROP TABLE t2 and UPDATE on t1 +# with t2 referencing t1 +# + +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + +# +# Setup +# +--connection node_2 +SET GLOBAL wsrep_slave_threads=2; + +CREATE TABLE t1 ( + id INTEGER PRIMARY KEY, + f2 INTEGER); + +CREATE TABLE t2 ( + f1 INT PRIMARY KEY, + t1_id INT NOT NULL, + f2 INTEGER NOT NULL, + KEY key_t1_id(t1_id), + CONSTRAINT key_t1_id FOREIGN KEY (t1_id) REFERENCES t1 (id) ON UPDATE CASCADE ON DELETE CASCADE); + +INSERT INTO t1 VALUES (1,0); +INSERT INTO t1 VALUES (2,0); + +INSERT INTO t2 VALUES (1,1,1234); +INSERT INTO t2 VALUES (2,2,1234); + +# +# DROP TABLE t2 and wait for it to reach node_2 +# +--connection node_2 +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_toi"; + +--connection node_1 +DROP TABLE t2; + +--connection node_2 +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_toi_reached"; + +SET SESSION wsrep_sync_wait = 0; +--let $expected_apply_waits = `SELECT VARIABLE_VALUE+1 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_apply_waits'` +--echo $expected_apply_waits + +# +# Issue a UPDATE to table that references t1 +# Notice that we update field f2, not the primary key, +# and not foreign key. Bug does not manifest if we update +# one of those fields (because FK keys appended in those cases). +# +--connection node_1 +UPDATE t1 SET f2 = 1 WHERE id=2; + + +# +# Expect the UPDATE to depend on the DROP, +# therefore it should wait for the DROP to +# finish before it can be applied. +# If bug is present, expect the wait condition +# to timeout and when the UPDATE applies, it +# will be granted a MDL lock of type SHARED_READ +# for table t1. When resumed, the DROP TABLE will +# also try to MDL lock t1, causing a BF-BF conflict +# on that MDL lock. +# +--connection node_2 +--let $wait_condition = SELECT VARIABLE_VALUE = $expected_apply_waits FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_apply_waits' +--source include/wait_condition.inc +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_toi"; + +SET SESSION wsrep_sync_wait = DEFAULT; +SELECT * FROM t1; + +# +# Cleanup +# +SET DEBUG_SYNC = 'RESET'; +SET GLOBAL DEBUG_DBUG = ''; +SET GLOBAL wsrep_slave_threads = DEFAULT; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-35852.cnf b/mysql-test/suite/galera/t/MDEV-35852.cnf new file mode 100644 index 00000000000..ebd79612b81 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-35852.cnf @@ -0,0 +1,4 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep-debug=1 diff --git a/mysql-test/suite/galera/t/MDEV-35852.test b/mysql-test/suite/galera/t/MDEV-35852.test new file mode 100644 index 00000000000..6dce2974dd4 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-35852.test @@ -0,0 +1,9 @@ +--source include/galera_cluster.inc + +CREATE TABLE t (a INT) ENGINE=InnoDB; +--error ER_DELAYED_NOT_SUPPORTED +INSERT DELAYED INTO t VALUES (); +DROP TABLE t; + +--error ER_NO_SUCH_TABLE +INSERT DELAYED t1 () VALUES (); diff --git a/mysql-test/suite/galera/t/MDEV-6860.test b/mysql-test/suite/galera/t/MDEV-6860.test index 3a8c98f317f..e254dbceeeb 100644 --- a/mysql-test/suite/galera/t/MDEV-6860.test +++ b/mysql-test/suite/galera/t/MDEV-6860.test @@ -4,7 +4,7 @@ --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3, MASTER_USE_GTID=slave_pos; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3, MASTER_USE_GTID=slave_pos; --enable_query_log START SLAVE; diff --git a/mysql-test/suite/galera/t/MW-369.inc b/mysql-test/suite/galera/t/MW-369.inc index f080d99fe7e..3b0a32bdd9d 100644 --- a/mysql-test/suite/galera/t/MW-369.inc +++ b/mysql-test/suite/galera/t/MW-369.inc @@ -14,7 +14,7 @@ # node_2 # $mw_369_child_query - will be blocked on node_1 in wsrep_apply_cb # node_1: -# COMMIT; - will be blocked on node_1 in wsrep_after_certification +# COMMIT; - will be blocked on node_1 in after_wsrep_before_prepare # # The $mw_369_child_query is always expected to succeed. The caller is # responsible for checking if the final COMMIT on connection node_1 @@ -49,14 +49,14 @@ SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; --connection node_1 -SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification"; +SET SESSION DEBUG_SYNC = "wsrep_before_certification SIGNAL before_certification_reached WAIT_FOR continue_before_certification"; --send COMMIT # # Wait until both sync points have been reached # --connection node_1a -SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; +SET SESSION DEBUG_SYNC = "now WAIT_FOR before_certification_reached"; # # both threads are now parked in sync points, signal them to continue @@ -66,13 +66,13 @@ SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached"; --let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST --source include/wait_condition_with_debug.inc -SET DEBUG_SYNC = 'now SIGNAL continue_after_certification'; +SET SESSION DEBUG_SYNC = 'now SIGNAL continue_before_certification'; --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'debug sync point:%' --let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST --source include/wait_condition_with_debug.inc -SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; +SET SESSION DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'debug sync point:%' --let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST @@ -80,3 +80,5 @@ SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb'; SET GLOBAL DEBUG_DBUG = ""; SET DEBUG_SYNC = 'RESET'; + + diff --git a/mysql-test/suite/galera/t/MW-402.combinations b/mysql-test/suite/galera/t/MW-402.combinations new file mode 100644 index 00000000000..def4dda7def --- /dev/null +++ b/mysql-test/suite/galera/t/MW-402.combinations @@ -0,0 +1,5 @@ +[binlogon] +log-bin +log-slave-updates=ON + +[binlogoff] diff --git a/mysql-test/suite/galera/t/MW-402.test b/mysql-test/suite/galera/t/MW-402.test index f84752e1b25..8b954a19405 100644 --- a/mysql-test/suite/galera/t/MW-402.test +++ b/mysql-test/suite/galera/t/MW-402.test @@ -2,7 +2,6 @@ --source include/have_innodb.inc --source include/have_debug.inc --source include/have_debug_sync.inc ---source include/galera_have_debug_sync.inc # # we must open connection node_1a here, MW-369.inc will use it later @@ -36,6 +35,7 @@ INSERT INTO c VALUES (1, 1, 0); --connection node_1 --error ER_LOCK_DEADLOCK --reap +SET DEBUG_SYNC = 'RESET'; --connection node_2 SELECT * FROM p; @@ -72,6 +72,7 @@ INSERT INTO c VALUES (1, 1, 0); --connection node_1 --error ER_LOCK_DEADLOCK --reap +SET DEBUG_SYNC = 'RESET'; --connection node_2 SELECT * FROM p; @@ -112,6 +113,7 @@ INSERT INTO c VALUES (1, 1, 0); --connection node_1 --error ER_LOCK_DEADLOCK --reap +SET DEBUG_SYNC = 'RESET'; # same as previous, but statements in different order --connection node_2 @@ -128,7 +130,7 @@ SELECT * FROM c; --connection node_1 --error ER_LOCK_DEADLOCK --reap - +SET DEBUG_SYNC = 'RESET'; --connection node_2 SELECT * FROM p; @@ -172,6 +174,7 @@ INSERT INTO c VALUES (1, 1, 1, 0); # Commit succeeds --connection node_1 --reap +SET DEBUG_SYNC = 'RESET'; --connection node_2 SELECT * FROM p1; @@ -217,6 +220,7 @@ INSERT INTO c VALUES (1, 1, 1, 0); --connection node_1 --error ER_LOCK_DEADLOCK --reap +SET DEBUG_SYNC = 'RESET'; --connection node_2 SELECT * FROM p1; diff --git a/mysql-test/suite/galera/t/galera_as_master.test b/mysql-test/suite/galera/t/galera_as_master.test index a5554a735fe..4bdbc24635a 100644 --- a/mysql-test/suite/galera/t/galera_as_master.test +++ b/mysql-test/suite/galera/t/galera_as_master.test @@ -9,7 +9,7 @@ --connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; --enable_query_log START SLAVE; diff --git a/mysql-test/suite/galera/t/galera_as_slave.test b/mysql-test/suite/galera/t/galera_as_slave.test index da92437b118..1e2e5b2ea7b 100644 --- a/mysql-test/suite/galera/t/galera_as_slave.test +++ b/mysql-test/suite/galera/t/galera_as_slave.test @@ -13,7 +13,7 @@ --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; diff --git a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test index ce4c87e2bee..69c16baeb08 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test +++ b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test @@ -13,7 +13,7 @@ --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; diff --git a/mysql-test/suite/galera/t/galera_as_slave_ctas.test b/mysql-test/suite/galera/t/galera_as_slave_ctas.test index eced636c600..32301a3d0d3 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_ctas.test +++ b/mysql-test/suite/galera/t/galera_as_slave_ctas.test @@ -16,7 +16,7 @@ SELECT @@wsrep_on; --connection node_1 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; @@ -34,11 +34,13 @@ CREATE TABLE target AS SELECT * FROM source; --connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'target'; ---source include/wait_condition.inc +--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.TABLES +--source include/wait_condition_with_debug.inc --connection node_2 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'target'; ---source include/wait_condition.inc +--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.TABLES +--source include/wait_condition_with_debug.inc # # test phase two, issue CTAS with populated source table diff --git a/mysql-test/suite/galera/t/galera_as_slave_nonprim.test b/mysql-test/suite/galera/t/galera_as_slave_nonprim.test index e22f0240a59..600d64e5a81 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_nonprim.test +++ b/mysql-test/suite/galera/t/galera_as_slave_nonprim.test @@ -15,7 +15,6 @@ # we open the node_4 connection here --connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4 - --connection node_2 --disable_query_log --eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$NODE_MYPORT_4, MASTER_USER='root'; diff --git a/mysql-test/suite/galera/t/galera_as_slave_parallel_retry.test b/mysql-test/suite/galera/t/galera_as_slave_parallel_retry.test index 0d499f22fcd..e106c5f08c3 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_parallel_retry.test +++ b/mysql-test/suite/galera/t/galera_as_slave_parallel_retry.test @@ -38,7 +38,6 @@ SET debug_sync = 'now SIGNAL signal.wsrep_retry_event_group'; --let $wait_condition = SELECT COUNT(*) = 1 FROM t1; --source include/wait_condition.inc - --connection node_1 SET debug_sync = 'RESET'; diff --git a/mysql-test/suite/galera/t/galera_as_slave_replay.cnf b/mysql-test/suite/galera/t/galera_as_slave_replay.cnf index c20c65f86d9..5ae8b0b1ba7 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_replay.cnf +++ b/mysql-test/suite/galera/t/galera_as_slave_replay.cnf @@ -10,4 +10,3 @@ wsrep-debug=1 [mysqld.2] wsrep_restart_slave=1 wsrep-debug=1 - diff --git a/mysql-test/suite/galera/t/galera_as_slave_replay.test b/mysql-test/suite/galera/t/galera_as_slave_replay.test index 73fd7b3ff29..20455f2843c 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_replay.test +++ b/mysql-test/suite/galera/t/galera_as_slave_replay.test @@ -10,12 +10,12 @@ --source include/have_debug.inc --source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc +--source include/log_bin.inc --connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --connection node_2a --source include/galera_cluster.inc -#--source suite/galera/include/galera_have_debug_sync.inc ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB; @@ -32,12 +32,11 @@ RESET MASTER; # --let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` - # -# nodes 1 and 2 form a galera cluster, node 2 operates as slave for native MariaDB naster in node 3 +# nodes 1 and 2 form a galera cluster, node 2 operates as slave for native MariaDB master in node 3 # --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; @@ -80,14 +79,14 @@ SET SESSION wsrep_sync_wait = 0; SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; # -# now inject a conflicting insert from node 3, it will replicate with +# now inject a conflicting insert from node 1, it will replicate with # earlier seqno (than async transaction) and pause before applying in node 2 # --connection node_1 INSERT INTO test.t1 VALUES (2, 'b'); # -# send the update from master, this will succeed here, beceuase of async replication. +# send the update from master, this will succeed here, because of async replication. # async replication will apply this in node 2 and pause before commit phase, --connection node_3 --error 0 diff --git a/mysql-test/suite/galera/t/galera_ddl_fk_conflict.cnf b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.cnf new file mode 100644 index 00000000000..2975070498e --- /dev/null +++ b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.cnf @@ -0,0 +1,11 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=1 +loose-galera-ddl-fk-conflict=1 + +[mysqld.2] +wsrep-debug=1 +loose-galera-ddl-fk-conflict=1 + + diff --git a/mysql-test/suite/galera/t/galera_ddl_fk_conflict.inc b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.inc index 06b7bbe41c4..f9fad92ac62 100644 --- a/mysql-test/suite/galera/t/galera_ddl_fk_conflict.inc +++ b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.inc @@ -39,6 +39,7 @@ --connection node_1 SET SESSION wsrep_sync_wait=0; +FLUSH STATUS; CREATE TABLE p1 (pk INTEGER PRIMARY KEY, f2 CHAR(30)); INSERT INTO p1 VALUES (1, 'INITIAL VALUE'); @@ -69,7 +70,7 @@ SET SESSION wsrep_sync_wait=0; --source include/wait_condition.inc # replicate the DDL to be tested ---eval $table_admin_command TABLE c1 $table_admin_command_end +--eval $table_admin_command c1 $table_admin_command_end --connection node_1 --error ER_LOCK_DEADLOCK @@ -82,6 +83,12 @@ SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +--connection node_1 +--disable_warnings +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +--enable_warnings + --echo ###################################################################### --echo # --echo # Scenario #2: DML working on FK parent table tries to replicate, but @@ -97,11 +104,12 @@ BEGIN; --source include/galera_set_sync_point.inc --connection node_2 ---eval $table_admin_command TABLE c1 $table_admin_command_end +--eval $table_admin_command c1 $table_admin_command_end --connection node_1a --source include/galera_wait_sync_point.inc --source include/galera_clear_sync_point.inc + --let $expected_cert_failures = `SELECT VARIABLE_VALUE+1 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` --connection node_1 @@ -110,7 +118,8 @@ UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; --connection node_1a --let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' ---source include/wait_condition.inc +--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition_with_debug.inc --let $galera_sync_point = apply_monitor_slave_enter_sync --source include/galera_signal_sync_point.inc @@ -128,6 +137,11 @@ SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; +--connection node_1 +--disable_warnings +CREATE TABLE IF NOT EXISTS c1 (pk INTEGER PRIMARY KEY, fk INTEGER, FOREIGN KEY (fk) REFERENCES p1(pk)); +INSERT IGNORE INTO c1 VALUES (1,1); +--enable_warnings --echo ###################################################################### --echo # @@ -149,12 +163,14 @@ BEGIN; --source include/galera_set_sync_point.inc --connection node_2 ---eval $table_admin_command TABLE c2 $table_admin_command_end +--eval $table_admin_command c2 $table_admin_command_end --connection node_1a --source include/galera_wait_sync_point.inc --source include/galera_clear_sync_point.inc --let $expected_cert_failures = `SELECT VARIABLE_VALUE+2 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` +--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition_with_debug.inc --connection node_1 UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; @@ -166,7 +182,8 @@ UPDATE p2 SET f2 = 'TO DEADLOCK' WHERE pk = 2; --connection node_1a --let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' ---source include/wait_condition.inc +--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition_with_debug.inc --let $galera_sync_point = apply_monitor_slave_enter_sync --source include/galera_signal_sync_point.inc @@ -188,5 +205,5 @@ SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; SELECT COUNT(*) AS EXPECT_2 FROM p2 WHERE f2 = 'INITIAL VALUE'; -DROP TABLE c1, c2; +DROP TABLE IF EXISTS c1, c2; DROP TABLE p1, p2; diff --git a/mysql-test/suite/galera/t/galera_ddl_fk_conflict.test b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.test index 4ec866a9f74..a8fb6614e41 100644 --- a/mysql-test/suite/galera/t/galera_ddl_fk_conflict.test +++ b/mysql-test/suite/galera/t/galera_ddl_fk_conflict.test @@ -6,24 +6,41 @@ --source include/have_innodb.inc --source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc +--source include/force_restart.inc # sync point controlling session --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 --connection node_1a SET SESSION wsrep_sync_wait=0; +FLUSH STATUS; # secondary conflicting DML victim session --connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1 --connection node_1b SET SESSION wsrep_sync_wait=0; ---let $table_admin_command = ALTER +--let $table_admin_command = ALTER TABLE --let $table_admin_command_end = ENGINE=INNODB --source galera_ddl_fk_conflict.inc ---let $table_admin_command = TRUNCATE ---let $table_admin_command_end = +--let $table_admin_command = TRUNCATE TABLE +--let $table_admin_command_end = --source galera_ddl_fk_conflict.inc +--let $table_admin_command = DROP TABLE +--let $table_admin_command_end = +--source galera_ddl_fk_conflict.inc +--source galera_ddl_fk_conflict_with_tmp.inc + +--let $table_admin_command = DROP TABLE IF EXISTS +--let $table_admin_command_end = +--source galera_ddl_fk_conflict.inc +--source galera_ddl_fk_conflict_with_tmp.inc + +--let $table_admin_command = DROP TABLE IF EXISTS nonexisting, +--let $table_admin_command_end = +--source galera_ddl_fk_conflict.inc +--source galera_ddl_fk_conflict_with_tmp.inc + # CHECK and ANALYZE are not affected diff --git a/mysql-test/suite/galera/t/galera_ddl_fk_conflict_with_tmp.inc b/mysql-test/suite/galera/t/galera_ddl_fk_conflict_with_tmp.inc index acf3c54180b..cc6542b96b0 100644 --- a/mysql-test/suite/galera/t/galera_ddl_fk_conflict_with_tmp.inc +++ b/mysql-test/suite/galera/t/galera_ddl_fk_conflict_with_tmp.inc @@ -35,9 +35,9 @@ BEGIN; --source include/wait_condition.inc --let $wait_condition = SELECT COUNT(*) = 1 FROM c1 --source include/wait_condition.inc -CREATE TEMPORARY TABLE tmp (i int); ---eval $table_admin_command TABLE c1, tmp $table_admin_command_end -DROP TABLE tmp; +CREATE TEMPORARY TABLE tmp1 (i int); +CREATE TEMPORARY TABLE tmp2 (i int); +--eval $table_admin_command tmp1, c1, tmp2 $table_admin_command_end --connection node_1a --source include/galera_wait_sync_point.inc @@ -45,7 +45,7 @@ DROP TABLE tmp; --let $expected_cert_failures = `SELECT VARIABLE_VALUE+1 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` --connection node_1 -UPDATE p1 SET f2 = 'TO DEADLOCK' WHERE pk = 1; +INSERT INTO p1 VALUES (10, 'TO DEADLOCK'); --send COMMIT --connection node_1a @@ -65,5 +65,6 @@ SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; --connection node_2 SELECT COUNT(*) AS EXPECT_1 FROM p1 WHERE f2 = 'INITIAL VALUE'; -DROP TABLE c1; +DROP TABLE IF EXISTS c1; DROP TABLE p1; +DROP TABLE IF EXISTS tmp1, tmp2; diff --git a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test index 148bbc2b460..0f68a02426e 100644 --- a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test +++ b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test @@ -16,7 +16,7 @@ --echo #Connection 2 --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3,master_use_gtid=slave_pos; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3, master_use_gtid=slave_pos; --enable_query_log START SLAVE; --sleep 1 diff --git a/mysql-test/suite/galera/t/galera_performance_schema.test b/mysql-test/suite/galera/t/galera_performance_schema.test index d54555ea301..531c45ea3c5 100644 --- a/mysql-test/suite/galera/t/galera_performance_schema.test +++ b/mysql-test/suite/galera/t/galera_performance_schema.test @@ -5,6 +5,9 @@ --source include/galera_cluster.inc --source include/have_perfschema.inc +--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + use performance_schema; --vertical_results @@ -22,6 +25,7 @@ insert into t1 values (1),(2); use performance_schema; select name from mutex_instances where name like 'wait/synch/mutex/sql/LOCK_wsrep%' order by name; select name from cond_instances where name like 'wait/synch/cond/sql/COND_wsrep%' order by name; + # Whenever a node fails to apply an event on a slave node, the database server creates a # special binary log file of the event in the data directory. The naming convention the # node uses for the filename is GRA_*.log. @@ -55,4 +59,3 @@ CALL mtr.add_suppression("Slave SQL: Error 'Table 't2' already exists' on query" use test; drop table t1; drop table t2; - diff --git a/mysql-test/suite/galera/t/galera_query_cache_invalidate.test b/mysql-test/suite/galera/t/galera_query_cache_invalidate.test index c5c5f69dc27..b5560c54253 100644 --- a/mysql-test/suite/galera/t/galera_query_cache_invalidate.test +++ b/mysql-test/suite/galera/t/galera_query_cache_invalidate.test @@ -28,8 +28,9 @@ call mtr.add_suppression("WSREP: Ignoring server id .* for non bootstrap node"); --connection node_3 ---replace_result $NODE_MYPORT_1 NODE_MYPORT_1 ---eval CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_port=$NODE_MYPORT_1, master_use_gtid=current_pos; +--disable_query_log +--eval CHANGE MASTER TO master_host='127.0.0.1', master_user='root', MASTER_PORT=$NODE_MYPORT_1, master_use_gtid=current_pos +--enable_query_log START SLAVE; --source include/wait_for_slave_to_start.inc diff --git a/mysql-test/suite/galera/t/galera_slave_replay.test b/mysql-test/suite/galera/t/galera_slave_replay.test index 6680e66ffa1..d289cfb3bd2 100644 --- a/mysql-test/suite/galera/t/galera_slave_replay.test +++ b/mysql-test/suite/galera/t/galera_slave_replay.test @@ -32,7 +32,6 @@ RESET MASTER; # --let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` - # # nodes 1 and 2 form a galera cluster, node 2 operates as slave for native MariaDB master in node 3 # @@ -134,7 +133,7 @@ SELECT * FROM t1; SET DEBUG_SYNC = "RESET"; #******************************************************************************** -# test phase 2 +# test phase 2 #******************************************************************************** --echo # @@ -197,3 +196,7 @@ DROP TABLE t1; --connection node_3 DROP TABLE t1; RESET MASTER; + +--connection node_1 +--disconnect node_2a +--disconnect node_3 diff --git a/mysql-test/suite/galera/t/galera_threadpool.cnf b/mysql-test/suite/galera/t/galera_threadpool.cnf new file mode 100644 index 00000000000..c1a1e6a81aa --- /dev/null +++ b/mysql-test/suite/galera/t/galera_threadpool.cnf @@ -0,0 +1,17 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-node-name="node1" +log_bin=binlog +log_slave_updates=ON +wsrep_sst_method=rsync +thread_handling = pool-of-threads + +[mysqld.2] +wsrep-node-name="node2" +log_bin=binlog +log_slave_updates=ON +wsrep_sst_method=rsync +thread_handling = pool-of-threads + + diff --git a/mysql-test/suite/galera/t/galera_threadpool.test b/mysql-test/suite/galera/t/galera_threadpool.test new file mode 100644 index 00000000000..78b26e6e89f --- /dev/null +++ b/mysql-test/suite/galera/t/galera_threadpool.test @@ -0,0 +1,67 @@ +# +# Tests for threadpool support +# +--source include/galera_cluster.inc + +--let $node_1 = node_1 +--let $node_2 = node_2 + +--source ../galera/include/auto_increment_offset_save.inc + +# +# start connections in node 2, and execute some SQL statements +# leave also open transactions in the node +# +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connect node_2c, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connect node_2d, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connect node_2e, 127.0.0.1, root, , test, $NODE_MYPORT_2 + +--connection node_2a +CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY, f2 char) ENGINE=InnoDB; +INSERT INTO t1 VALUES (0,'a'); +INSERT INTO t1 VALUES (1,'a'); + +--connection node_2b +SELECT * FROM t1; + +--connection node_2c +INSERT INTO t1 VALUES (2,'c'); + +--connection node_2d +BEGIN; +SELECT * FROM t1; + +--connection node_2e +BEGIN; +UPDATE t1 SET f2='e' WHERE f1=0; + +# +# Shut down node 2, all open connections should be closed +# +--connection node_2 +--source include/shutdown_mysqld.inc + +--connection node_1 +--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + +# And restart the node +--connection node_2 +let $restart_noprint=2; +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.2.expect +--source include/start_mysqld.inc + +--connection node_1 +--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + +--connection node_2 + +DROP TABLE t1; + +# +# Restore auto increment variables. +# +--source ../galera/include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera_3nodes/disabled.def b/mysql-test/suite/galera_3nodes/disabled.def index c52df019c65..bb9d7cbd7b8 100644 --- a/mysql-test/suite/galera_3nodes/disabled.def +++ b/mysql-test/suite/galera_3nodes/disabled.def @@ -11,6 +11,4 @@ ############################################################################## galera_2_cluster : MDEV-32631 galera_2_cluster: before_rollback(): Assertion `0' failed -galera_ipv6_rsync : MDEV-34842 Can't connect to server on '::1' (115) -galera_ipv6_rsync_section : MDEV-34842 Can't connect to server on '::1' (115) -galera_ipv6_mariabackup_section : MDEV-34842 Can't connect to server on '::1' (115) +galera_nbo_master_phase_two_crash : MENT-2215 Test failure on galera_3nodes.galera_nbo_master_non_prim_failure diff --git a/mysql-test/suite/galera_sr/r/MENT-2038.result b/mysql-test/suite/galera_sr/r/MENT-2038.result new file mode 100644 index 00000000000..bbd7c568925 --- /dev/null +++ b/mysql-test/suite/galera_sr/r/MENT-2038.result @@ -0,0 +1,7 @@ +connection node_2; +connection node_1; +SET SESSION wsrep_on=OFF; +BEGIN; +BEGIN; +COMMIT; +SET SESSION wsrep_on=ON; diff --git a/mysql-test/suite/galera_sr/t/MDEV-25718.test b/mysql-test/suite/galera_sr/t/MDEV-25718.test index 037cd300709..147b62fe145 100644 --- a/mysql-test/suite/galera_sr/t/MDEV-25718.test +++ b/mysql-test/suite/galera_sr/t/MDEV-25718.test @@ -43,7 +43,7 @@ SET SESSION wsrep_sync_wait = 0; SET debug_sync = "now SIGNAL write_row_continue"; # Let's give the INSERT some time, to make sure it does rollback ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = "INSERT INTO t1 VALUES (1)" AND (STATE = "Freeing items" OR STATE = 'Rollback'); +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = "INSERT INTO t1 VALUES (1)" AND (STATE = 'Freeing items' OR STATE = 'Rollback' OR STATE = 'Query end'); --let $wait_condition_on_error_output = SELECT INFO, STATE FROM INFORMATION_SCHEMA.PROCESSLIST --source include/wait_condition_with_debug.inc diff --git a/mysql-test/suite/galera_sr/t/MENT-2038.test b/mysql-test/suite/galera_sr/t/MENT-2038.test new file mode 100644 index 00000000000..311b0d3a36f --- /dev/null +++ b/mysql-test/suite/galera_sr/t/MENT-2038.test @@ -0,0 +1,12 @@ +# +# MENT-2038: Assertion `(thd && (WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on))' +# failed in void wsrep_restore_kill_after_commit(THD*) +# + +--source include/galera_cluster.inc + +SET SESSION wsrep_on=OFF; +BEGIN; +BEGIN; # If bug is present, assertion triggers during implicit commit +COMMIT; +SET SESSION wsrep_on=ON; diff --git a/mysql-test/suite/innodb/r/foreign_key.result b/mysql-test/suite/innodb/r/foreign_key.result index 6c17504b5e0..e7d0454df6e 100644 --- a/mysql-test/suite/innodb/r/foreign_key.result +++ b/mysql-test/suite/innodb/r/foreign_key.result @@ -1020,6 +1020,23 @@ t2 CREATE TABLE `t2` ( CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop tables t2, t1; +# +# MDEV-29182 Assertion fld->field_no < table->n_v_def failed on cascade +# +CREATE TABLE t1(a INT PRIMARY KEY, b VARCHAR(3), c INT AS (LENGTH(b)) VIRTUAL, +INDEX(c)) ENGINE=InnoDB; +CREATE TABLE t2(a INT REFERENCES t1(a) ON UPDATE CASCADE, +b INT GENERATED ALWAYS AS(a) VIRTUAL, INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1,b='fu'; +INSERT INTO t2 SET a=1; +UPDATE t1 SET a=2,b='bar'; +SELECT * FROM t1; +a b c +2 bar 3 +SELECT * FROM t2; +a b +2 2 +DROP TABLE t2,t1; # End of 10.5 tests # # MDEV-26554 Table-rebuilding DDL on parent table causes crash diff --git a/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NON-STRICT.rdiff b/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NON-STRICT.rdiff new file mode 100644 index 00000000000..66e39ca633e --- /dev/null +++ b/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NON-STRICT.rdiff @@ -0,0 +1,57 @@ +--- foreign_sql_mode.result ++++ foreign_sql_mode,COPY,NON-STRICT.rdiff +@@ -3,14 +3,14 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL + INSERT INTO t1 VALUES(1, 1); + INSERT INTO t2 VALUES(1); + UPDATE t1 SET f2= NULL; ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE) + DELETE FROM t2; + SELECT * FROM t1; + f1 f2 +-1 NULL ++1 1 + UPDATE t1 SET f2 = NULL; + SELECT * FROM t1; + f1 f2 +@@ -20,7 +20,7 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL ++ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed") + INSERT INTO t1 VALUES(1, 1); + INSERT INTO t2 VALUES(1, 1); + UPDATE t1 SET f1= 2; +@@ -32,7 +32,7 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL; +-ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL ++ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed") + DROP TABLE t2, t1; + # modify parent column NULL ON UPDATE CASCADE child column NOT NULL + CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +@@ -40,11 +40,10 @@ + FOREIGN KEY(f1) REFERENCES `t#1`(f2) + ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE `t#1` MODIFY COLUMN f2 INT; +-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2' + INSERT INTO `t#1` VALUES(1, 1); + INSERT INTO `t#2` VALUES(1); + UPDATE `t#1` SET f2= NULL; +-ERROR 23000: Column 'f2' cannot be null ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE) + DELETE FROM `t#2`; + SELECT * FROM `t#1`; + f1 f2 +@@ -60,6 +59,5 @@ + PRIMARY KEY(f1, f2), + FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1) + ON UPDATE CASCADE)ENGINE=InnoDB; +-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") + DROP TABLE IF EXISTS t2; + DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NOSTRICT.rdiff b/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NOSTRICT.rdiff new file mode 100644 index 00000000000..95df1bfa7d3 --- /dev/null +++ b/mysql-test/suite/innodb/r/foreign_sql_mode,COPY,NOSTRICT.rdiff @@ -0,0 +1,55 @@ +--- foreign_sql_mode.result 2025-01-21 17:23:46.014938931 +0530 ++++ foreign_sql_mode.reject 2025-01-21 17:24:11.783981181 +0530 +@@ -3,20 +3,20 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL + INSERT INTO t1 VALUES(1, 1); + INSERT INTO t2 VALUES(1); + UPDATE t1 SET f2= NULL; ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE) + DELETE FROM t2; + SELECT * FROM t1; + f1 f2 +-1 NULL ++1 1 + DROP TABLE t2, t1; + # modify child column NOT NULL ON UPDATE SET NULL + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL ++ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed") + INSERT INTO t1 VALUES(1, 1); + INSERT INTO t2 VALUES(1, 1); + UPDATE t1 SET f1= 2; +@@ -28,7 +28,7 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL; +-ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL ++ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed") + DROP TABLE t2, t1; + # modify parent column NULL ON UPDATE CASCADE child column NOT NULL + CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +@@ -36,11 +36,10 @@ + FOREIGN KEY(f1) REFERENCES `t#1`(f2) + ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE `t#1` MODIFY COLUMN f2 INT; +-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2' + INSERT INTO `t#1` VALUES(1, 1); + INSERT INTO `t#2` VALUES(1); + UPDATE `t#1` SET f2= NULL; +-ERROR 23000: Column 'f2' cannot be null ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE) + DELETE FROM `t#2`; + SELECT * FROM `t#1`; + f1 f2 +@@ -56,6 +55,5 @@ + PRIMARY KEY(f1, f2), + FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1) + ON UPDATE CASCADE)ENGINE=InnoDB; +-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") + DROP TABLE IF EXISTS t2; + DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/innodb/r/foreign_sql_mode,INPLACE,NON-STRICT.rdiff b/mysql-test/suite/innodb/r/foreign_sql_mode,INPLACE,NON-STRICT.rdiff new file mode 100644 index 00000000000..8919244e810 --- /dev/null +++ b/mysql-test/suite/innodb/r/foreign_sql_mode,INPLACE,NON-STRICT.rdiff @@ -0,0 +1,39 @@ +--- foreign_sql_mode.result ++++ foreign_sql_mode,INPLACE,NON-STRICT.rdiff +@@ -3,14 +3,14 @@ + CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; + CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL + INSERT INTO t1 VALUES(1, 1); + INSERT INTO t2 VALUES(1); + UPDATE t1 SET f2= NULL; ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE) + DELETE FROM t2; + SELECT * FROM t1; + f1 f2 +-1 NULL ++1 1 + UPDATE t1 SET f2 = NULL; + SELECT * FROM t1; + f1 f2 +@@ -40,11 +40,10 @@ + FOREIGN KEY(f1) REFERENCES `t#1`(f2) + ON UPDATE CASCADE)ENGINE=InnoDB; + ALTER TABLE `t#1` MODIFY COLUMN f2 INT; +-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2' + INSERT INTO `t#1` VALUES(1, 1); + INSERT INTO `t#2` VALUES(1); + UPDATE `t#1` SET f2= NULL; +-ERROR 23000: Column 'f2' cannot be null ++ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE) + DELETE FROM `t#2`; + SELECT * FROM `t#1`; + f1 f2 +@@ -60,6 +59,5 @@ + PRIMARY KEY(f1, f2), + FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1) + ON UPDATE CASCADE)ENGINE=InnoDB; +-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") + DROP TABLE IF EXISTS t2; + DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/innodb/r/foreign_sql_mode.result b/mysql-test/suite/innodb/r/foreign_sql_mode.result new file mode 100644 index 00000000000..7044e402745 --- /dev/null +++ b/mysql-test/suite/innodb/r/foreign_sql_mode.result @@ -0,0 +1,65 @@ +call mtr.add_suppression("InnoDB: In ALTER TABLE .* has or is referenced in foreign key constraints which are not compatible with the new table definition."); +# modify child column NOT NULL on UPDATE CASCADE..parent column NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB; +ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t2 VALUES(1); +UPDATE t1 SET f2= NULL; +DELETE FROM t2; +SELECT * FROM t1; +f1 f2 +1 NULL +UPDATE t1 SET f2 = NULL; +SELECT * FROM t1; +f1 f2 +1 NULL +DROP TABLE t2, t1; +# modify child column NOT NULL ON UPDATE SET NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB; +ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL; +ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t2 VALUES(1, 1); +UPDATE t1 SET f1= 2; +SELECT * FROM t2; +f1 f2 +NULL 1 +DROP TABLE t2, t1; +# modify child column NOT NULL ON DELETE SET NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB; +ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL; +ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL +DROP TABLE t2, t1; +# modify parent column NULL ON UPDATE CASCADE child column NOT NULL +CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE `t#2`(f1 INT NOT NULL, +FOREIGN KEY(f1) REFERENCES `t#1`(f2) +ON UPDATE CASCADE)ENGINE=InnoDB; +ALTER TABLE `t#1` MODIFY COLUMN f2 INT; +ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2' +INSERT INTO `t#1` VALUES(1, 1); +INSERT INTO `t#2` VALUES(1); +UPDATE `t#1` SET f2= NULL; +ERROR 23000: Column 'f2' cannot be null +DELETE FROM `t#2`; +SELECT * FROM `t#1`; +f1 f2 +1 1 +DROP TABLE `t#2`, `t#1`; +CREATE TABLE t1(f1 INT NOT NULL AUTO_INCREMENT, +f2 INT DEFAULT NULL, +PRIMARY KEY(f1), +FOREIGN KEY(f2) REFERENCES t1(f1))ENGINE=InnoDB; +CREATE TABLE t2 (f1 INT NOT NULL, +f2 INT NOT NULL, +f3 INT DEFAULT NULL, +PRIMARY KEY(f1, f2), +FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1) +ON UPDATE CASCADE)ENGINE=InnoDB; +ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-1.result b/mysql-test/suite/innodb/r/innodb-wl5522-1.result index 42c0631dd29..72d7268244f 100644 --- a/mysql-test/suite/innodb/r/innodb-wl5522-1.result +++ b/mysql-test/suite/innodb/r/innodb-wl5522-1.result @@ -659,6 +659,8 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 16000 ALTER TABLE testdb_wl5522.t1 ADD INDEX idx1 (col_1); ALTER TABLE testdb_wl5522.t1 ADD INDEX idx6 (col_1(255)); +Warnings: +Note 1831 Duplicate index `idx6`. This is deprecated and will be disallowed in a future release ALTER TABLE testdb_wl5522.t1 ADD INDEX idx10 (col_10(255)); SELECT col_1 = REPEAT("col1_00001",10), diff --git a/mysql-test/suite/innodb/t/foreign_key.test b/mysql-test/suite/innodb/t/foreign_key.test index 23e9bf8fc82..6a65de0e9b0 100644 --- a/mysql-test/suite/innodb/t/foreign_key.test +++ b/mysql-test/suite/innodb/t/foreign_key.test @@ -1065,6 +1065,21 @@ alter table t2 add foreign key(a) references t1; show create table t2; drop tables t2, t1; + +--echo # +--echo # MDEV-29182 Assertion fld->field_no < table->n_v_def failed on cascade +--echo # +CREATE TABLE t1(a INT PRIMARY KEY, b VARCHAR(3), c INT AS (LENGTH(b)) VIRTUAL, + INDEX(c)) ENGINE=InnoDB; +CREATE TABLE t2(a INT REFERENCES t1(a) ON UPDATE CASCADE, + b INT GENERATED ALWAYS AS(a) VIRTUAL, INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1,b='fu'; +INSERT INTO t2 SET a=1; +UPDATE t1 SET a=2,b='bar'; +SELECT * FROM t1; +SELECT * FROM t2; +DROP TABLE t2,t1; + --echo # End of 10.5 tests --echo # diff --git a/mysql-test/suite/innodb/t/foreign_sql_mode.combinations b/mysql-test/suite/innodb/t/foreign_sql_mode.combinations new file mode 100644 index 00000000000..e84e17b06ac --- /dev/null +++ b/mysql-test/suite/innodb/t/foreign_sql_mode.combinations @@ -0,0 +1,2 @@ +[COPY] +[INPLACE] diff --git a/mysql-test/suite/innodb/t/foreign_sql_mode.test b/mysql-test/suite/innodb/t/foreign_sql_mode.test new file mode 100644 index 00000000000..1569348df07 --- /dev/null +++ b/mysql-test/suite/innodb/t/foreign_sql_mode.test @@ -0,0 +1,129 @@ +--source include/have_innodb.inc +--source alter_sql_mode.inc +call mtr.add_suppression("InnoDB: In ALTER TABLE .* has or is referenced in foreign key constraints which are not compatible with the new table definition."); + +let $combination=`select regexp_replace('$MTR_COMBINATIONS', 'innodb,\|,innodb', '')`; + +let $copy_algo=`select ((strcmp(substring_index('$combination', ",", 1), "COPY") = 0) or (strcmp(substring_index('$combination', ",", -1), "COPY") = 0))`; + +let $inplace_algo=`select ((strcmp(substring_index('$combination', ",", 1), "INPLACE") = 0) or (strcmp(substring_index('$combination', ",", -1), "INPLACE") = 0))`; + +let $algorithm=COPY; +if ($inplace_algo) +{ + let $algorithm=INPLACE; +} +let $sql_mode = `SELECT @@SQL_MODE`; +let $error_code = 0; +if ($sql_mode == "STRICT_TRANS_TABLES") { + let $error_code = ER_FK_COLUMN_NOT_NULL; +} + +--echo # modify child column NOT NULL on UPDATE CASCADE..parent column NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB; +replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE ''; +--error $error_code +eval ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm; +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t2 VALUES(1); + +let $dml_error_code = ER_ROW_IS_REFERENCED_2; +if ($sql_mode == "STRICT_TRANS_TABLES") +{ + let $dml_error_code = 0; +} + +--error $dml_error_code +UPDATE t1 SET f2= NULL; +DELETE FROM t2; +SELECT * FROM t1; +UPDATE t1 SET f2 = NULL; +SELECT * FROM t1; +DROP TABLE t2, t1; + +let $error_code= ER_ERROR_ON_RENAME; +if ($algorithm == "INPLACE") +{ + let $error_code= ER_FK_COLUMN_NOT_NULL; +} + +if ($sql_mode == "STRICT_TRANS_TABLES") +{ + let $error_code = ER_FK_COLUMN_NOT_NULL; +} + +# Modifying referenced column from NULL to NOT NULL fails when foreign +# clause is ON UPDATE SET NULL or ON DELETE SET NULL irrespective +# of SQL_MODE variable. This is the behaviour even before MDEV-34392 + +--echo # modify child column NOT NULL ON UPDATE SET NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB; +replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE ''; +--replace_regex /Error on rename of '.*' to '.*'/Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME'/ +--error $error_code +eval ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm; +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t2 VALUES(1, 1); +UPDATE t1 SET f1= 2; +SELECT * FROM t2; +DROP TABLE t2, t1; + +--echo # modify child column NOT NULL ON DELETE SET NULL +CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB; +replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE ''; +--replace_regex /Error on rename of '.*' to '.*'/Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME'/ +--error $error_code +eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm; +DROP TABLE t2, t1; + +if ($sql_mode == "STRICT_TRANS_TABLES") +{ + let $dml_error_code = ER_BAD_NULL_ERROR; +} + +let $error_code= 0; +if ($sql_mode == "STRICT_TRANS_TABLES") +{ + let $error_code = ER_FK_COLUMN_CANNOT_CHANGE_CHILD; +} + +--echo # modify parent column NULL ON UPDATE CASCADE child column NOT NULL +CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB; +CREATE TABLE `t#2`(f1 INT NOT NULL, + FOREIGN KEY(f1) REFERENCES `t#1`(f2) + ON UPDATE CASCADE)ENGINE=InnoDB; +replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE ''; +--error $error_code +eval ALTER TABLE `t#1` MODIFY COLUMN f2 INT,ALGORITHM=$algorithm; +INSERT INTO `t#1` VALUES(1, 1); +INSERT INTO `t#2` VALUES(1); +--error $dml_error_code +UPDATE `t#1` SET f2= NULL; +DELETE FROM `t#2`; +SELECT * FROM `t#1`; +DROP TABLE `t#2`, `t#1`; + +let $error_code= 0; +if ($sql_mode == "STRICT_TRANS_TABLES") +{ + let $error_code = ER_CANT_CREATE_TABLE; +} + +CREATE TABLE t1(f1 INT NOT NULL AUTO_INCREMENT, + f2 INT DEFAULT NULL, + PRIMARY KEY(f1), + FOREIGN KEY(f2) REFERENCES t1(f1))ENGINE=InnoDB; +--error $error_code +CREATE TABLE t2 (f1 INT NOT NULL, + f2 INT NOT NULL, + f3 INT DEFAULT NULL, + PRIMARY KEY(f1, f2), + FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1) + ON UPDATE CASCADE)ENGINE=InnoDB; +--disable_warnings +DROP TABLE IF EXISTS t2; +--enable_warnings +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/innodb_gis/r/1.result b/mysql-test/suite/innodb_gis/r/1.result index 4d84a5fb7a3..c1804aa66f8 100644 --- a/mysql-test/suite/innodb_gis/r/1.result +++ b/mysql-test/suite/innodb_gis/r/1.result @@ -1075,6 +1075,8 @@ col1 POINT, col2 POINT ); CREATE SPATIAL INDEX idx0 ON t2 (col1, col2); +ERROR 42000: Key column 'col1' doesn't exist in table +CREATE SPATIAL INDEX idx0 ON t2 (col0, col2); ERROR HY000: Incorrect arguments to SPATIAL INDEX CREATE TABLE t4 ( col0 INTEGER NOT NULL, diff --git a/mysql-test/suite/innodb_gis/r/point_basic.result b/mysql-test/suite/innodb_gis/r/point_basic.result index f58198395e4..00921c122a7 100644 --- a/mysql-test/suite/innodb_gis/r/point_basic.result +++ b/mysql-test/suite/innodb_gis/r/point_basic.result @@ -1562,7 +1562,7 @@ ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); ERROR HY000: Can't create table `test`.`child` (errno: 150 "Foreign key constraint is incorrectly formed") show warnings; Level Code Message -Warning 150 Alter table `test`.`child` with foreign key (p) constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns. +Warning 150 Alter table `test`.`child` with foreign key (p) constraint failed. There is only prefix index in the referenced table where the referenced columns appear as the first columns. Error 1005 Can't create table `test`.`child` (errno: 150 "Foreign key constraint is incorrectly formed") Warning 1215 Cannot add foreign key constraint for `child` ALTER TABLE parent DROP INDEX idx1; @@ -1570,7 +1570,7 @@ ALTER TABLE child ADD FOREIGN KEY(p) REFERENCES parent(p); Got one of the listed errors show warnings; Level Code Message -Warning 150 Alter table `test`.`child` with foreign key (p) constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns. +Warning 150 Alter table `test`.`child` with foreign key (p) constraint failed. There is only prefix index in the referenced table where the referenced columns appear as the first columns. Error 1005 Can't create table `test`.`child` (errno: 150 "Foreign key constraint is incorrectly formed") Warning 1215 Cannot add foreign key constraint for `child` ALTER TABLE child DROP INDEX idx2; diff --git a/mysql-test/suite/innodb_gis/t/1.test b/mysql-test/suite/innodb_gis/t/1.test index f2df35a39b1..1ba48e6a3ae 100644 --- a/mysql-test/suite/innodb_gis/t/1.test +++ b/mysql-test/suite/innodb_gis/t/1.test @@ -839,8 +839,10 @@ CREATE TABLE t3 ( ); # --error ER_TOO_MANY_KEY_PARTS ---error ER_WRONG_ARGUMENTS +--error ER_KEY_COLUMN_DOES_NOT_EXITS CREATE SPATIAL INDEX idx0 ON t2 (col1, col2); +--error ER_WRONG_ARGUMENTS +CREATE SPATIAL INDEX idx0 ON t2 (col0, col2); CREATE TABLE t4 ( diff --git a/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result b/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result index 925bd3f8f9c..4451b149406 100644 --- a/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result +++ b/mysql-test/suite/innodb_zip/r/index_large_prefix_8k.result @@ -171,9 +171,11 @@ Note 1071 Specified key was too long; max key length is 1536 bytes create index idx3 on worklog5743_8(a2(3072)); Warnings: Note 1071 Specified key was too long; max key length is 1536 bytes +Note 1831 Duplicate index `idx3`. This is deprecated and will be disallowed in a future release show warnings; Level Code Message Note 1071 Specified key was too long; max key length is 1536 bytes +Note 1831 Duplicate index `idx3`. This is deprecated and will be disallowed in a future release create index idx4 on worklog5743_8(a1, a2(1533)); ERROR 42000: Specified key was too long; max key length is 1536 bytes show warnings; @@ -355,6 +357,7 @@ Note 1071 Specified key was too long; max key length is 1536 bytes create index idx2 on worklog5743(a(3072)); Warnings: Note 1071 Specified key was too long; max key length is 1536 bytes +Note 1831 Duplicate index `idx2`. This is deprecated and will be disallowed in a future release SET sql_mode= default; show create table worklog5743; Table Create Table diff --git a/mysql-test/suite/parts/r/alter_table.result b/mysql-test/suite/parts/r/alter_table.result index ac8eba12f1b..5f532455219 100644 --- a/mysql-test/suite/parts/r/alter_table.result +++ b/mysql-test/suite/parts/r/alter_table.result @@ -59,4 +59,18 @@ index_name comment PRIMARY i2 disabled drop table t1; +# +# MDEV-34813 ALGORITHM=INSTANT does not work for partitioned tables on indexed column +# +CREATE TABLE `t1` ( +`f1` datetime , +`f2` VARCHAR(2) , +`f3` VARCHAR(200) , +`f4` VARCHAR(100) , +INDEX `i3` (`f4`) ) +PARTITION BY RANGE COLUMNS(`f2`) +(PARTITION `p_01` VALUES LESS THAN ('02') ENGINE = InnoDB, +PARTITION `p_31` VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB); +ALTER online TABLE t1 MODIFY COLUMN `f4` VARCHAR(500) , ALGORITHM=INSTANT, LOCK=NONE; +drop table t1; # End of 10.5 tests diff --git a/mysql-test/suite/parts/t/alter_table.test b/mysql-test/suite/parts/t/alter_table.test index 37adb424d75..00ac3f0265e 100644 --- a/mysql-test/suite/parts/t/alter_table.test +++ b/mysql-test/suite/parts/t/alter_table.test @@ -52,4 +52,23 @@ alter table t1 add partition (partition p4); select index_name, comment from information_schema.statistics where table_schema='test' and table_name='t1'; drop table t1; +--echo # +--echo # MDEV-34813 ALGORITHM=INSTANT does not work for partitioned tables on indexed column +--echo # + +--source include/have_innodb.inc +CREATE TABLE `t1` ( + `f1` datetime , + `f2` VARCHAR(2) , + `f3` VARCHAR(200) , + `f4` VARCHAR(100) , + INDEX `i3` (`f4`) ) + PARTITION BY RANGE COLUMNS(`f2`) + (PARTITION `p_01` VALUES LESS THAN ('02') ENGINE = InnoDB, + PARTITION `p_31` VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB); + +ALTER online TABLE t1 MODIFY COLUMN `f4` VARCHAR(500) , ALGORITHM=INSTANT, LOCK=NONE; + +drop table t1; + --echo # End of 10.5 tests diff --git a/mysql-test/suite/rpl/t/rpl_parallel_gco_wait_kill.test b/mysql-test/suite/rpl/t/rpl_parallel_gco_wait_kill.test index c34c4f20dc0..8414b31947a 100644 --- a/mysql-test/suite/rpl/t/rpl_parallel_gco_wait_kill.test +++ b/mysql-test/suite/rpl/t/rpl_parallel_gco_wait_kill.test @@ -300,7 +300,7 @@ SET GLOBAL slave_parallel_threads=10; # Find the thread id of the driver SQL thread that we want to kill. --let $wait_condition= SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%Slave has read all relay log%' --source include/wait_condition.inc ---let $thd_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%relay log%'` +--let $thd_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND LIKE 'Slave_SQL'` SET @old_max_queued= @@GLOBAL.slave_parallel_max_queued; SET GLOBAL slave_parallel_max_queued=9000; diff --git a/mysql-test/suite/wsrep/disabled.def b/mysql-test/suite/wsrep/disabled.def index f4145211680..fcaf38a3d7b 100644 --- a/mysql-test/suite/wsrep/disabled.def +++ b/mysql-test/suite/wsrep/disabled.def @@ -9,5 +9,3 @@ # Do not use any TAB characters for whitespace. # ############################################################################## - - diff --git a/mysql-test/suite/wsrep/t/MDEV-23081.test b/mysql-test/suite/wsrep/t/MDEV-23081.test index 04305b22b24..6cd7d6dd037 100644 --- a/mysql-test/suite/wsrep/t/MDEV-23081.test +++ b/mysql-test/suite/wsrep/t/MDEV-23081.test @@ -7,6 +7,11 @@ --source include/have_wsrep_provider.inc --source include/have_debug_sync.inc +--let $log_bin=1 +if (`select not @@log_bin`) { +--let $log_bin=0 +} + CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; # @@ -40,7 +45,14 @@ SET DEBUG_SYNC = "now WAIT_FOR before_commit_order_reached_1"; # and restart it with wsrep-on=OFF # let $restart_noprint=2; ---let $restart_parameters=--wsrep-on=OFF +if ($log_bin == 0) { +# The database could have been created with --log-bin +# and so let's add this parameter explicitly: +--let $restart_parameters=--wsrep-on=OFF --loose-innodb --loose-log-bin +} +if ($log_bin == 1) { +--let $restart_parameters=--wsrep-on=OFF --loose-innodb +} --source include/start_mysqld.inc # diff --git a/sql-common/client.c b/sql-common/client.c index d7167077037..cbe1fada936 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -4236,3 +4236,28 @@ int STDCALL mysql_cancel(MYSQL *mysql) return vio_shutdown(mysql->net.vio, SHUT_RDWR); return -1; } + + +MYSQL_RES *STDCALL mysql_use_result(MYSQL *mysql) +{ + return (*mysql->methods->use_result)(mysql); +} + + +MYSQL_FIELD *STDCALL mysql_fetch_fields(MYSQL_RES *res) +{ + return (res)->fields; +} + + +ulong STDCALL +mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, + ulong length) +{ + my_bool overflow; + if (mysql->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) + return (ulong) escape_quotes_for_mysql(mysql->charset, to, 0, from, length, + &overflow); + return (ulong) escape_string_for_mysql(mysql->charset, to, 0, from, length, + &overflow); +} diff --git a/sql/field_conv.cc b/sql/field_conv.cc index fca0f0256b7..6e90d92fcf8 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -172,7 +172,9 @@ int convert_null_to_field_value_or_error(Field *field, uint err) return 0; } + MY_BITMAP *old_map= dbug_tmp_use_all_columns(field->table, &field->table->write_set); field->reset(); // Note: we ignore any potential failure of reset() here. + dbug_tmp_restore_column_map(&field->table->write_set, old_map); if (field == field->table->next_number_field) { diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 293e0f5cec4..a0ce6f0206d 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3198,6 +3198,24 @@ err1: DBUG_RETURN(2); } +Compare_keys ha_partition::compare_key_parts( + const Field &old_field, + const Column_definition &new_field, + const KEY_PART_INFO &old_part, + const KEY_PART_INFO &new_part) const +{ + Compare_keys res= m_file[0]->compare_key_parts(old_field, new_field, + old_part, new_part); + /* + Partitions have the same storage engine (until MDEV-22168) so the + calls should all return the same value for now. + */ + for (uint i= 1; i < m_tot_parts; i++) + if (res != m_file[i]->compare_key_parts(old_field, new_field, + old_part, new_part)) + return Compare_keys::NotEqual; + return res; +} /** Setup m_engine_array diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 8cc00784b70..0bad10b91bf 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -484,6 +484,11 @@ public: m_part_info= part_info; m_is_sub_partitioned= part_info->is_sub_partitioned(); } + Compare_keys compare_key_parts( + const Field &old_field, + const Column_definition &new_field, + const KEY_PART_INFO &old_part, + const KEY_PART_INFO &new_part) const override; void return_record_by_parent() override; diff --git a/sql/handler.cc b/sql/handler.cc index 004d7d55467..6182bb46b62 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1756,7 +1756,7 @@ int ha_commit_trans(THD *thd, bool all) thd->m_transaction_psi= NULL; } #ifdef WITH_WSREP - if (wsrep_is_active(thd) && is_real_trans && !error) + if (WSREP(thd) && wsrep_is_active(thd) && is_real_trans && !error) wsrep_commit_empty(thd, all); #endif /* WITH_WSREP */ @@ -2286,9 +2286,14 @@ int ha_rollback_trans(THD *thd, bool all) my_error(ER_ERROR_DURING_ROLLBACK, MYF(0), err); error=1; #ifdef WITH_WSREP - WSREP_WARN("handlerton rollback failed, thd %lld %lld conf %d SQL %s", - thd->thread_id, thd->query_id, thd->wsrep_trx().state(), - thd->query()); + if (WSREP(thd)) + { + WSREP_WARN("handlerton rollback failed, thd %lld %lld " + "conf %d wsrep_err %s SQL %s", + thd->thread_id, thd->query_id, thd->wsrep_trx().state(), + wsrep::to_c_string(thd->wsrep_cs().current_error()), + thd->query()); + } #endif /* WITH_WSREP */ } status_var_increment(thd->status_var.ha_rollback_count); @@ -2300,11 +2305,12 @@ int ha_rollback_trans(THD *thd, bool all) } #ifdef WITH_WSREP - if (thd->is_error()) + if (WSREP(thd) && thd->is_error()) { - WSREP_DEBUG("ha_rollback_trans(%lld, %s) rolled back: %s: %s; is_real %d", - thd->thread_id, all?"TRUE":"FALSE", wsrep_thd_query(thd), - thd->get_stmt_da()->message(), is_real_trans); + WSREP_DEBUG("ha_rollback_trans(%lld, %s) rolled back: msg %s is_real %d wsrep_err %s", + thd->thread_id, all? "TRUE" : "FALSE", + thd->get_stmt_da()->message(), is_real_trans, + wsrep::to_c_string(thd->wsrep_cs().current_error())); } // REPLACE|INSERT INTO ... SELECT uses TOI in consistency check @@ -5935,7 +5941,10 @@ int handler::calculate_checksum() for (;;) { if (thd->killed) - return HA_ERR_ABORTED_BY_USER; + { + error= HA_ERR_ABORTED_BY_USER; + break; + } ha_checksum row_crc= 0; error= ha_rnd_next(table->record[0]); @@ -7759,6 +7768,7 @@ int handler::ha_write_row(const uchar *buf) ht->flags & HTON_WSREP_REPLICATION && !error && (error= wsrep_after_row(ha_thd()))) { + DEBUG_SYNC_C("ha_write_row_end"); DBUG_RETURN(error); } #endif /* WITH_WSREP */ diff --git a/sql/item.h b/sql/item.h index 4a758a55fc2..91e0dc02e13 100644 --- a/sql/item.h +++ b/sql/item.h @@ -3255,8 +3255,9 @@ public: bool append_for_log(THD *thd, String *str) override; - Item *do_get_copy(THD *) const override { return nullptr; } - Item *do_build_clone(THD *thd) const override { return nullptr; } + Item *do_get_copy(THD *thd) const override + { return get_item_copy(thd, this); } + Item *do_build_clone(THD *thd) const override { return get_copy(thd); } /* Override the inherited create_field_for_create_select(), diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index c3dca213219..5d778445d20 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -5380,7 +5380,7 @@ String *Item_func_wsrep_last_written_gtid::val_str_ascii(String *str) { if (gtid_str.alloc(WSREP_MAX_WSREP_SERVER_GTID_STR_LEN+1)) { - my_error(ER_OUTOFMEMORY, WSREP_MAX_WSREP_SERVER_GTID_STR_LEN); + my_error(ER_OUTOFMEMORY, MYF(0), WSREP_MAX_WSREP_SERVER_GTID_STR_LEN); null_value= TRUE; return 0; } @@ -5405,7 +5405,7 @@ String *Item_func_wsrep_last_seen_gtid::val_str_ascii(String *str) { if (gtid_str.alloc(WSREP_MAX_WSREP_SERVER_GTID_STR_LEN+1)) { - my_error(ER_OUTOFMEMORY, WSREP_MAX_WSREP_SERVER_GTID_STR_LEN); + my_error(ER_OUTOFMEMORY, MYF(0), WSREP_MAX_WSREP_SERVER_GTID_STR_LEN); null_value= TRUE; return 0; } @@ -5450,7 +5450,7 @@ longlong Item_func_wsrep_sync_wait_upto::val_int() if (!(gtid_list= gtid_parse_string_to_list(gtid_str->ptr(), gtid_str->length(), &count))) { - my_error(ER_INCORRECT_GTID_STATE, MYF(0), func_name()); + my_error(ER_INCORRECT_GTID_STATE, MYF(0)); null_value= TRUE; return 0; } @@ -5462,12 +5462,12 @@ longlong Item_func_wsrep_sync_wait_upto::val_int() wait_gtid_ret= wsrep_gtid_server.wait_gtid_upto(gtid_list[0].seq_no, timeout); if ((wait_gtid_ret == ETIMEDOUT) || (wait_gtid_ret == ETIME)) { - my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), func_name()); + my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0)); ret= 0; } else if (wait_gtid_ret == ENOMEM) { - my_error(ER_OUTOFMEMORY, MYF(0), func_name()); + my_error(ER_OUTOFMEMORY, MYF(0), sizeof(std::pair)); ret= 0; } } diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 3da743531b9..8bb8b3ddfe7 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -1179,6 +1179,8 @@ public: return mark_unsupported_function(fully_qualified_func_name(), arg, VCOL_SESSION_FUNC); } + Item *do_get_copy(THD *thd) const override + { return get_item_copy(thd, this); } }; diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 85f5211e991..bfdd4e60c52 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1240,6 +1240,7 @@ Item_singlerow_subselect::select_transformer(JOIN *join) Item *item) { return !item->with_sum_func() && + !item->with_window_func() && /* We can't change name of Item_field or Item_ref, because it will prevent its correct resolving, but we should save name of diff --git a/sql/log.cc b/sql/log.cc index ce98843b2ad..d2a38192e5f 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -698,6 +698,7 @@ bool Log_to_csv_event_handler:: { TABLE_LIST table_list; TABLE *table; + const char *cause= 0; bool result= TRUE; bool need_close= FALSE; bool need_pop= FALSE; @@ -732,13 +733,19 @@ bool Log_to_csv_event_handler:: need_pop= TRUE; if (!(table= open_log_table(thd, &table_list, &open_tables_backup))) + { + cause= "can't open file"; goto err; + } need_close= TRUE; if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) || table->file->ha_rnd_init_with_error(0)) + { + cause= "can't initialize table handler"; goto err; + } need_rnd_end= TRUE; @@ -757,12 +764,20 @@ bool Log_to_csv_event_handler:: /* check that all columns exist */ if (table->s->fields < 6) + { + cause= "incorrect number of fields in the log table"; goto err; + } DBUG_ASSERT(table->field[0]->type() == MYSQL_TYPE_TIMESTAMP); - table->field[0]->store_timestamp( - hrtime_to_my_time(event_time), hrtime_sec_part(event_time)); + if (table->field[0]->store_timestamp(hrtime_to_my_time(event_time), + hrtime_sec_part(event_time))) + { + cause= "Can't write data (possible incorrect log table structure)"; + goto err; + } + /* do a write */ if (table->field[1]->store(user_host, user_host_len, client_cs) || @@ -770,7 +785,10 @@ bool Log_to_csv_event_handler:: table->field[3]->store((longlong) global_system_variables.server_id, TRUE) || table->field[4]->store(command_type, command_type_len, client_cs)) + { + cause= "Can't write data (possible incorrect log table structure)"; goto err; + } /* A positive return value in store() means truncation. @@ -778,7 +796,10 @@ bool Log_to_csv_event_handler:: */ table->field[5]->flags|= FIELDFLAG_HEX_ESCAPE; if (table->field[5]->store(sql_text, sql_text_len, client_cs) < 0) + { + cause= "Can't write data (possible incorrect log table structure)"; goto err; + } /* mark all fields as not null */ table->field[1]->set_notnull(); @@ -794,14 +815,22 @@ bool Log_to_csv_event_handler:: } if (table->file->ha_write_row(table->record[0])) + { + cause= "Can't write record"; goto err; + } result= FALSE; err: if (result && !thd->killed) + { + const char *msg= error_handler.message(); + if (!msg || !msg[0]) + msg= cause; sql_print_error("Failed to write to mysql.general_log: %s", - error_handler.message()); + msg); + } if (need_rnd_end) { @@ -854,6 +883,8 @@ bool Log_to_csv_event_handler:: { TABLE_LIST table_list; TABLE *table; + const char *cause= 0; + const char *msg; bool result= TRUE; bool need_close= FALSE; bool need_rnd_end= FALSE; @@ -878,13 +909,19 @@ bool Log_to_csv_event_handler:: TL_WRITE_CONCURRENT_INSERT); if (!(table= open_log_table(thd, &table_list, &open_tables_backup))) + { + cause= "can't open file"; goto err; + } need_close= TRUE; if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) || table->file->ha_rnd_init_with_error(0)) + { + cause= "can't initialize table handler"; goto err; + } need_rnd_end= TRUE; @@ -895,12 +932,19 @@ bool Log_to_csv_event_handler:: /* check that all columns exist */ if (table->s->fields < 13) + { + cause= "incorrect number of fields in the log table"; goto err; + } + + // It can be used in 13 places below so assign it here + cause= "Can't write data (possible incorrect log table structure)"; /* store the time and user values */ DBUG_ASSERT(table->field[0]->type() == MYSQL_TYPE_TIMESTAMP); - table->field[0]->store_timestamp( - hrtime_to_my_time(current_time), hrtime_sec_part(current_time)); + if(table->field[0]->store_timestamp(hrtime_to_my_time(current_time), + hrtime_sec_part(current_time))) + goto err; if (table->field[1]->store(user_host, user_host_len, client_cs)) goto err; @@ -980,9 +1024,13 @@ bool Log_to_csv_event_handler:: (longlong) thd->get_stmt_da()->affected_rows() : 0, TRUE)) goto err; + cause= 0; // just for safety if (table->file->ha_write_row(table->record[0])) + { + cause= "Can't write record"; goto err; + } result= FALSE; @@ -990,8 +1038,13 @@ err: thd->pop_internal_handler(); if (result && !thd->killed) + { + msg= error_handler.message(); + if (!msg || !msg[0]) + msg= cause; sql_print_error("Failed to write to mysql.slow_log: %s", - error_handler.message()); + msg); + } if (need_rnd_end) { diff --git a/sql/log_event_server.cc b/sql/log_event_server.cc index 8b740195b24..61ba45a7ea3 100644 --- a/sql/log_event_server.cc +++ b/sql/log_event_server.cc @@ -1738,8 +1738,11 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi, DBUG_PRINT("query",("%s", thd->query())); #ifdef WITH_WSREP - WSREP_DEBUG("Query_log_event thread=%llu for query=%s", - thd_get_thread_id(thd), wsrep_thd_query(thd)); + if (WSREP(thd)) + { + WSREP_DEBUG("Query_log_event thread=%llu for query=%s", + thd_get_thread_id(thd), wsrep_thd_query(thd)); + } #endif if (unlikely(!(expected_error= error_code)) || diff --git a/sql/service_wsrep.cc b/sql/service_wsrep.cc index d58a05b3eb5..9d04849aadb 100644 --- a/sql/service_wsrep.cc +++ b/sql/service_wsrep.cc @@ -1,4 +1,4 @@ -/* Copyright 2018-2024 Codership Oy +/* Copyright 2018-2025 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -82,11 +82,12 @@ extern "C" const char *wsrep_thd_query(const THD *thd) case SQLCOM_REVOKE: return "REVOKE"; case SQLCOM_SET_OPTION: - if (thd->lex->definer) - return "SET PASSWORD"; + return "SET OPTION"; /* fallthrough */ default: + { return (thd->query() ? thd->query() : "NULL"); + } } return "NULL"; } diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 686e8e12d87..0c0f94eed0c 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -3367,7 +3367,7 @@ end: switch (result) { case ER_INVALID_CURRENT_USER: - my_error(ER_INVALID_CURRENT_USER, MYF(0), rolename); + my_error(ER_INVALID_CURRENT_USER, MYF(0)); break; case ER_INVALID_ROLE: /* Role doesn't exist at all */ diff --git a/sql/sql_alter.cc b/sql/sql_alter.cc index eeff246794f..9e4bc4c2d34 100644 --- a/sql/sql_alter.cc +++ b/sql/sql_alter.cc @@ -610,7 +610,7 @@ bool Sql_cmd_alter_table::execute(THD *thd) DBUG_RETURN(TRUE); /* purecov: inspected */ #ifdef WITH_WSREP - if (WSREP(thd) && + if (WSREP(thd) && wsrep_thd_is_local(thd) && (!thd->is_current_stmt_binlog_format_row() || !thd->find_temporary_table(first_table))) { diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 2ecd2af8ab2..7d9acef85f3 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -782,6 +782,22 @@ close_all_tables_for_name(THD *thd, TABLE_SHARE *share, } } +static inline bool check_field_pointers(const TABLE *table) +{ + for (Field **pf= table->field; *pf; pf++) + { + Field *f= *pf; + if (f->ptr < table->record[0] || f->ptr > table->record[0] + + table->s->reclength) + return false; + if (f->null_ptr && + (f->null_ptr < table->record[0] || f->null_ptr > table->record[0] + + table->s->reclength)) + return false; + } + return true; +} + /* Close all tables used by the current substatement, or all tables @@ -833,6 +849,8 @@ int close_thread_tables(THD *thd) DBUG_PRINT("tcache", ("table: '%s' query_id: %lu", table->s->table_name.str, (ulong) table->query_id)); + DBUG_SLOW_ASSERT(check_field_pointers(table)); + if (thd->locked_tables_mode) { #ifdef WITH_PARTITION_STORAGE_ENGINE @@ -8571,6 +8589,24 @@ err_no_arena: } +static void unwind_stored_field_offsets(const List &fields, Field *end) +{ + for (Item &item_field: fields) + { + Field *f= item_field.field_for_view_update()->field; + if (f == end) + break; + + if (f->stored_in_db()) + { + TABLE *table= f->table; + f->move_field_offset((my_ptrdiff_t) (table->record[0] - + table->record[1])); + } + } +} + + /****************************************************************************** ** Fill a record with data (for INSERT or UPDATE) ** Returns : 1 if some field has wrong type @@ -8626,7 +8662,7 @@ fill_record(THD *thd, TABLE *table_arg, List &fields, List &values, if (!(field= fld->field_for_view_update())) { my_error(ER_NONUPDATEABLE_COLUMN, MYF(0), fld->name.str); - goto err; + goto err_unwind_fields; } value=v++; DBUG_ASSERT(value); @@ -8654,7 +8690,7 @@ fill_record(THD *thd, TABLE *table_arg, List &fields, List &values, unlikely(value->save_in_field(rfield, 0) < 0) && !ignore_errors) { my_message(ER_UNKNOWN_ERROR, ER_THD(thd, ER_UNKNOWN_ERROR), MYF(0)); - goto err; + goto err_unwind_fields; } /* In sql MODE_SIMULTANEOUS_ASSIGNMENT, @@ -8669,20 +8705,7 @@ fill_record(THD *thd, TABLE *table_arg, List &fields, List &values, } if (update && thd->variables.sql_mode & MODE_SIMULTANEOUS_ASSIGNMENT) - { - // restore fields pointers on record[0] - f.rewind(); - while ((fld= f++)) - { - rfield= fld->field_for_view_update()->field; - if (rfield->stored_in_db()) - { - table= rfield->table; - rfield->move_field_offset((my_ptrdiff_t) (table->record[0] - - table->record[1])); - } - } - } + unwind_stored_field_offsets(fields, NULL); if (update) table_arg->evaluate_update_default_function(); @@ -8700,6 +8723,9 @@ fill_record(THD *thd, TABLE *table_arg, List &fields, List &values, thd->abort_on_warning= save_abort_on_warning; thd->no_errors= save_no_errors; DBUG_RETURN(thd->is_error()); +err_unwind_fields: + if (update && thd->variables.sql_mode & MODE_SIMULTANEOUS_ASSIGNMENT) + unwind_stored_field_offsets(fields, rfield); err: DBUG_PRINT("error",("got error")); thd->abort_on_warning= save_abort_on_warning; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 890d2e3a156..b20e1052e30 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -174,7 +174,8 @@ Key::Key(const Key &rhs, MEM_ROOT *mem_root) name(rhs.name), option_list(rhs.option_list), generated(rhs.generated), invisible(false), - without_overlaps(rhs.without_overlaps), old(rhs.old), period(rhs.period) + without_overlaps(rhs.without_overlaps), old(rhs.old), length(rhs.length), + period(rhs.period) { list_copy_and_replace_each_value(columns, mem_root); } @@ -201,7 +202,7 @@ Foreign_key::Foreign_key(const Foreign_key &rhs, MEM_ROOT *mem_root) /* Test if a foreign key (= generated key) is a prefix of the given key - (ignoring key name, key type and order of columns) + (ignoring key name and type, but minding the algorithm) NOTES: This is only used to test if an index for a FOREIGN KEY exists @@ -216,6 +217,16 @@ Foreign_key::Foreign_key(const Foreign_key &rhs, MEM_ROOT *mem_root) bool is_foreign_key_prefix(Key *a, Key *b) { + ha_key_alg a_alg= a->key_create_info.algorithm; + ha_key_alg b_alg= b->key_create_info.algorithm; + + // The real algorithm in InnoDB will be BTREE if none was given by user. + a_alg= a_alg == HA_KEY_ALG_UNDEF ? HA_KEY_ALG_BTREE : a_alg; + b_alg= b_alg == HA_KEY_ALG_UNDEF ? HA_KEY_ALG_BTREE : b_alg; + + if (a_alg != b_alg) + return false; + /* Ensure that 'a' is the generated key */ if (a->generated) { diff --git a/sql/sql_class.h b/sql/sql_class.h index f0835248a36..4cee31b296e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -456,6 +456,7 @@ public: bool invisible; bool without_overlaps; bool old; + uint length; Lex_ident period; Key(enum Keytype type_par, const LEX_CSTRING *name_arg, @@ -463,7 +464,7 @@ public: :DDL_options(ddl_options), type(type_par), key_create_info(default_key_create_info), name(*name_arg), option_list(NULL), generated(generated_arg), - invisible(false), without_overlaps(false), old(false) + invisible(false), without_overlaps(false), old(false), length(0) { key_create_info.algorithm= algorithm_arg; } @@ -474,7 +475,7 @@ public: :DDL_options(ddl_options), type(type_par), key_create_info(*key_info_arg), columns(*cols), name(*name_arg), option_list(create_opt), generated(generated_arg), - invisible(false), without_overlaps(false), old(false) + invisible(false), without_overlaps(false), old(false), length(0) {} Key(const Key &rhs, MEM_ROOT *mem_root); virtual ~Key() = default; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index df7f75a8623..e667d325160 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -952,8 +952,7 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list, if (fields.elements || !value_count || table_list->view != 0) { - if (table->triggers && - table->triggers->has_triggers(TRG_EVENT_INSERT, TRG_ACTION_BEFORE)) + if (table->field != table->field_to_fill()) { /* BEFORE INSERT triggers exist, the check will be done later, per row */ } @@ -2432,6 +2431,7 @@ public: delayed_insert_threads--; my_free(thd.query()); + thd.reset_query_inner(); thd.security_ctx->user= 0; thd.security_ctx->host= 0; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ae081d84394..416e78a9f77 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5053,17 +5053,18 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt) lex->create_info.set(DDL_options_st::OPT_IF_EXISTS); #ifdef WITH_WSREP - if (WSREP(thd)) + if (WSREP(thd) && !lex->tmp_table() && wsrep_thd_is_local(thd) && + (!thd->is_current_stmt_binlog_format_row() || + wsrep_table_list_has_non_temp_tables(thd, all_tables))) { - for (TABLE_LIST *table= all_tables; table; table= table->next_global) + wsrep::key_array keys; + if (wsrep_append_fk_parent_table(thd, all_tables, &keys)) { - if (!lex->tmp_table() && - (!thd->is_current_stmt_binlog_format_row() || - !is_temporary_table(table))) - { - WSREP_TO_ISOLATION_BEGIN(NULL, NULL, all_tables); - break; - } + goto wsrep_error_label; + } + if (wsrep_to_isolation_begin(thd, NULL, NULL, all_tables, NULL, &keys)) + { + goto wsrep_error_label; } } #endif /* WITH_WSREP */ diff --git a/sql/sql_plugin_services.inl b/sql/sql_plugin_services.inl index 263d840bc29..9acd34190e4 100644 --- a/sql/sql_plugin_services.inl +++ b/sql/sql_plugin_services.inl @@ -254,6 +254,9 @@ struct sql_service_st sql_service_handler= mysql_set_character_set, mysql_num_fields, mysql_select_db, + mysql_use_result, + mysql_fetch_fields, + mysql_real_escape_string, mysql_ssl_set }; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index fccdde8a4bc..5408414599f 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2604,6 +2604,307 @@ key_add_part_check_null(const handler *file, KEY *key_info, } +static +my_bool key_check_without_overlaps(THD *thd, HA_CREATE_INFO *create_info, + Alter_info *alter_info, + Key &key) +{ + DBUG_ENTER("key_check_without_overlaps"); + if (!key.without_overlaps) + DBUG_RETURN(FALSE); + // append_system_key_parts is already called, so we should check all the + // columns except the last two. + const auto &period_start= create_info->period_info.period.start; + const auto &period_end= create_info->period_info.period.end; + List_iterator part_it_forwarded(key.columns); + List_iterator part_it(key.columns); + part_it_forwarded++; + part_it_forwarded++; + while (part_it_forwarded++) + { + Key_part_spec *key_part= part_it++; + + if (period_start.streq(key_part->field_name) + || period_end.streq(key_part->field_name)) + { + my_error(ER_KEY_CONTAINS_PERIOD_FIELDS, MYF(0), key.name.str, + key_part->field_name.str); + DBUG_RETURN(TRUE); + } + } + + if (key.key_create_info.algorithm == HA_KEY_ALG_HASH || + key.key_create_info.algorithm == HA_KEY_ALG_LONG_HASH) + + { + my_error(ER_KEY_CANT_HAVE_WITHOUT_OVERLAPS, MYF(0), key.name.str); + DBUG_RETURN(TRUE); + } + for (Key &key2: alter_info->key_list) + { + if (key2.type != Key::FOREIGN_KEY) + continue; + DBUG_ASSERT(&key != &key2); + const Foreign_key &fk= (Foreign_key&)key2; + if (fk.update_opt != FK_OPTION_CASCADE) + continue; + for (Key_part_spec& kp: key.columns) + { + for (Key_part_spec& kp2: fk.columns) + { + if (kp.field_name.streq(kp2.field_name)) + { + my_error(ER_KEY_CANT_HAVE_WITHOUT_OVERLAPS, MYF(0), key.name.str); + DBUG_RETURN(TRUE); + } + } + } + } + create_info->period_info.unique_keys++; + + DBUG_RETURN(FALSE); +} + +static +my_bool init_key_part_spec(THD *thd, Alter_info *alter_info, + const handler *file, + const Key &key, Key_part_spec &kp, + uint max_key_length, uint max_key_part_length, + bool *is_hash_field_needed) +{ + DBUG_ENTER("init_key_part_spec"); + + const Lex_ident &field_name= kp.field_name; + Create_field *column= NULL; + + for (Create_field &c: alter_info->create_list) + if (c.field_name.streq(field_name)) + column= &c; + + /* + Either field is not present or field visibility is > INVISIBLE_USER + */ + if (!column || (column->invisible > INVISIBLE_USER && !kp.generated)) + { + my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), field_name.str); + DBUG_RETURN(TRUE); + } + + if (DBUG_EVALUATE_IF("test_invisible_index", 0, 1) + && column->invisible > INVISIBLE_USER + && !(column->flags & VERS_SYSTEM_FIELD) && !key.invisible) + { + my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), column->field_name.str); + DBUG_RETURN(TRUE); + } + + const Type_handler *type_handler= column->type_handler(); + switch(key.type) + { + case Key::FULLTEXT: + if (type_handler->Key_part_spec_init_ft(&kp, *column)) + { + my_error(ER_BAD_FT_COLUMN, MYF(0), field_name.str); + DBUG_RETURN(-1); + } + break; + + case Key::SPATIAL: + if (type_handler->Key_part_spec_init_spatial(&kp, *column)) + DBUG_RETURN(TRUE); + break; + + case Key::PRIMARY: + if (column->vcol_info) + { + my_error(ER_PRIMARY_KEY_BASED_ON_GENERATED_COLUMN, MYF(0)); + DBUG_RETURN(TRUE); + } + if (type_handler->Key_part_spec_init_primary(&kp, *column, file)) + DBUG_RETURN(TRUE); + break; + + case Key::MULTIPLE: + if (type_handler->Key_part_spec_init_multiple(&kp, *column, file)) + DBUG_RETURN(TRUE); + break; + + case Key::FOREIGN_KEY: + if (type_handler->Key_part_spec_init_foreign(&kp, *column, file)) + DBUG_RETURN(TRUE); + break; + + case Key::UNIQUE: + if (type_handler->Key_part_spec_init_unique(&kp, *column, file, + is_hash_field_needed)) + DBUG_RETURN(TRUE); + break; + + case Key::IGNORE_KEY: + DBUG_ASSERT(0); + break; + } + + uint key_part_length= type_handler->calc_key_length(*column); + + if (kp.length) + { + if (f_is_blob(column->pack_flag)) + { + key_part_length= MY_MIN(kp.length, + blob_length_by_type(column->real_field_type()) + * column->charset->mbmaxlen); + if (key_part_length > max_key_length || + key_part_length > max_key_part_length) + { + if (key.type == Key::MULTIPLE) + { + key_part_length= MY_MIN(max_key_length, max_key_part_length); + /* not a critical problem */ + push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, + ER_TOO_LONG_KEY, ER_THD(thd, ER_TOO_LONG_KEY), + key_part_length); + /* Align key length to multibyte char boundary */ + key_part_length-= key_part_length % column->charset->mbmaxlen; + } + } + } + // Catch invalid use of partial keys + else if (!f_is_geom(column->pack_flag) && + // is the key partial? + kp.length != key_part_length && + // is prefix length bigger than field length? + (kp.length > key_part_length || + // can the field have a partial key? + !type_handler->type_can_have_key_part() || + // a packed field can't be used in a partial key + f_is_packed(column->pack_flag) || + // does the storage engine allow prefixed search? + ((file->ha_table_flags() & HA_NO_PREFIX_CHAR_KEYS) && + // and is this a 'unique' key? + (key.type == Key::PRIMARY || key.type == Key::UNIQUE)))) + { + my_message(ER_WRONG_SUB_KEY, ER_THD(thd, ER_WRONG_SUB_KEY), MYF(0)); + DBUG_RETURN(TRUE); + } + else if (!(file->ha_table_flags() & HA_NO_PREFIX_CHAR_KEYS)) + key_part_length= kp.length; + } + else if (key_part_length == 0 && (column->flags & NOT_NULL_FLAG) && + !*is_hash_field_needed) + { + my_error(ER_WRONG_KEY_COLUMN, MYF(0), file->table_type(), field_name.str); + DBUG_RETURN(TRUE); + } + if (key_part_length > max_key_part_length && key.type != Key::FULLTEXT) + { + if (key.type == Key::MULTIPLE) + { + key_part_length= max_key_part_length; + /* not a critical problem */ + push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, + ER_TOO_LONG_KEY, ER_THD(thd, ER_TOO_LONG_KEY), + key_part_length); + /* Align key length to multibyte char boundary */ + key_part_length-= key_part_length % column->charset->mbmaxlen; + } + else if (key.type != Key::UNIQUE) + { + key_part_length= MY_MIN(max_key_length, max_key_part_length); + my_error(ER_TOO_LONG_KEY, MYF(0), key_part_length); + DBUG_RETURN(TRUE); + } + } + + if (key.type == Key::UNIQUE && key_part_length > MY_MIN(max_key_length, + max_key_part_length)) + *is_hash_field_needed= true; + + /* We can not store key_part_length more than 2^16 - 1 in frm. */ + if (*is_hash_field_needed && kp.length > UINT_MAX16) + { + my_error(ER_TOO_LONG_KEYPART, MYF(0), UINT_MAX16); + DBUG_RETURN(TRUE); + } + + kp.length= key_part_length; + + DBUG_RETURN(FALSE); +} + + +/** + @brief Initialize the key length and algorithm (if long hash). + + This function does: + 1. Append system key parts (versioning, periods) + 2. Call Type_handler key_part initialization function. + 3. Determine the length of each key_part. + 4. Calculate the total Key length. + 5. Determine if the key is long unique based on its length + smd result from type handler. It'll be saved in + key_create_info.algorithm as HA_KEY_ALG_LONG_HASH. + + @return FALSE OK + @return TRUE error + */ +static +my_bool init_key_info(THD *thd, Alter_info *alter_info, + HA_CREATE_INFO *create_info, + const handler *file) +{ + DBUG_ENTER("init_key_info"); + uint max_key_length= file->max_key_length(); + uint max_key_part_length= file->max_key_part_length(); + + for (Key &key: alter_info->key_list) + { + if (key.type == Key::FOREIGN_KEY) + continue; + + int parts_added= append_system_key_parts(thd, create_info, &key); + if (parts_added < 0) + DBUG_RETURN(true); + + bool is_hash_field_needed= false; + for (Key_part_spec &kp: key.columns) + { + if (init_key_part_spec(thd, alter_info, file, key, kp, + max_key_length, max_key_part_length, + &is_hash_field_needed)) + DBUG_RETURN(TRUE); + + key.length+= kp.length; + if (key.length > max_key_length && key.type == Key::UNIQUE) + is_hash_field_needed= true; // for case "a BLOB UNIQUE" + + if (key.length > max_key_length && key.type != Key::FULLTEXT && + !is_hash_field_needed) + { + my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length); + DBUG_RETURN(TRUE); + } + + KEY_CREATE_INFO *key_cinfo= &key.key_create_info; + + if (is_hash_field_needed) + { + if (key_cinfo->algorithm == HA_KEY_ALG_UNDEF) + key_cinfo->algorithm= HA_KEY_ALG_LONG_HASH; + + if (key_cinfo->algorithm != HA_KEY_ALG_HASH && + key_cinfo->algorithm != HA_KEY_ALG_LONG_HASH) + { + my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length); + DBUG_RETURN(TRUE); + } + } + } + } + DBUG_RETURN(FALSE); +} + + /* Preparation for table creation @@ -2638,7 +2939,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, { const char *key_name; Create_field *sql_field,*dup_field; - uint field,null_fields,max_key_length; + uint field,null_fields; ulong record_offset= 0; KEY_PART_INFO *key_part_info; int field_no,dup_no; @@ -2649,7 +2950,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, int select_field_count= C_CREATE_SELECT(create_table_mode); bool tmp_table= create_table_mode == C_ALTER_TABLE; const bool create_simple= thd->lex->create_simple(); - bool is_hash_field_needed= false; const Column_derived_attributes dattr(create_info->default_table_charset); const Column_bulk_alter_attributes battr(create_info->alter_table_convert_to_charset); @@ -2685,7 +2985,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, create_info->versioned()); null_fields= 0; create_info->varchar= 0; - max_key_length= file->max_key_length(); /* Handle creation of sequences */ if (create_info->sequence) @@ -2882,6 +3181,9 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, Key *key, *key2; uint tmp, key_number; + if (init_key_info(thd, alter_info, create_info, file)) + DBUG_RETURN(TRUE); + /* Calculate number of key segements */ *key_count= 0; @@ -3019,10 +3321,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, key_info->name.length= strlen(key_name); key->name= key_info->name; - int parts_added= append_system_key_parts(thd, create_info, key); - if (parts_added < 0) - DBUG_RETURN(true); - key_parts += parts_added; key_info++; } tmp=file->max_keys(); @@ -3041,11 +3339,11 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, key_number=0; for (; (key=key_iterator++) ; key_number++) { - uint key_length=0; Create_field *auto_increment_key= 0; Key_part_spec *column; - is_hash_field_needed= false; + bool is_hash_field_needed= key->key_create_info.algorithm + == HA_KEY_ALG_LONG_HASH; if (key->type == Key::IGNORE_KEY) { /* ignore redundant keys */ @@ -3056,6 +3354,9 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, break; } + if (key_check_without_overlaps(thd, create_info, alter_info, *key)) + DBUG_RETURN(true); + switch (key->type) { case Key::MULTIPLE: key_info->flags= 0; @@ -3089,10 +3390,12 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, if (key->generated) key_info->flags|= HA_GENERATED_KEY; + key_info->key_length= key->length; key_info->user_defined_key_parts=(uint8) key->columns.elements; key_info->key_part=key_part_info; key_info->usable_key_parts= key_number; key_info->algorithm= key->key_create_info.algorithm; + key_info->without_overlaps= key->without_overlaps; key_info->option_list= key->option_list; extend_option_list(thd, create_info->db_type, !key->old, &key_info->option_list, create_info->db_type->index_options); @@ -3176,37 +3479,11 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, CHARSET_INFO *ft_key_charset=0; // for FULLTEXT for (uint column_nr=0 ; (column=cols++) ; column_nr++) { - Key_part_spec *dup_column; - it.rewind(); field=0; while ((sql_field=it++) && lex_string_cmp(scs, &column->field_name, &sql_field->field_name)) field++; - /* - Either field is not present or field visibility is > INVISIBLE_USER - */ - if (!sql_field || (sql_field->invisible > INVISIBLE_USER && - !column->generated)) - { - my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), column->field_name.str); - DBUG_RETURN(TRUE); - } - if (sql_field->invisible > INVISIBLE_USER && - !(sql_field->flags & VERS_SYSTEM_FIELD) && - !key->invisible && DBUG_EVALUATE_IF("test_invisible_index", 0, 1)) - { - my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), column->field_name.str); - DBUG_RETURN(TRUE); - } - while ((dup_column= cols2++) != column) - { - if (!lex_string_cmp(scs, &column->field_name, &dup_column->field_name)) - { - my_error(ER_DUP_FIELDNAME, MYF(0), column->field_name.str); - DBUG_RETURN(TRUE); - } - } if (sql_field->compression_method()) { @@ -3216,12 +3493,10 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, } cols2.rewind(); - switch(key->type) { - + switch(key->type) + { case Key::FULLTEXT: - if (sql_field->type_handler()->Key_part_spec_init_ft(column, - *sql_field) || - (ft_key_charset && sql_field->charset != ft_key_charset)) + if (ft_key_charset && sql_field->charset != ft_key_charset) { my_error(ER_BAD_FT_COLUMN, MYF(0), column->field_name.str); DBUG_RETURN(-1); @@ -3229,66 +3504,49 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, ft_key_charset= sql_field->charset; break; - case Key::SPATIAL: - if (sql_field->type_handler()->Key_part_spec_init_spatial(column, - *sql_field) || - sql_field->check_vcol_for_key(thd)) - DBUG_RETURN(TRUE); - if (!(sql_field->flags & NOT_NULL_FLAG)) - { - my_message(ER_SPATIAL_CANT_HAVE_NULL, - ER_THD(thd, ER_SPATIAL_CANT_HAVE_NULL), MYF(0)); - DBUG_RETURN(TRUE); - } - break; - case Key::PRIMARY: - if (sql_field->vcol_info) - { - my_error(ER_PRIMARY_KEY_BASED_ON_GENERATED_COLUMN, MYF(0)); - DBUG_RETURN(TRUE); - } - if (sql_field->type_handler()->Key_part_spec_init_primary(column, - *sql_field, - file)) - DBUG_RETURN(TRUE); if (!(sql_field->flags & NOT_NULL_FLAG)) { - /* Implicitly set primary key fields to NOT NULL for ISO conf. */ + /* Implicitly set primary key fields to NOT NULL for ISO conformance. */ sql_field->flags|= NOT_NULL_FLAG; sql_field->pack_flag&= ~FIELDFLAG_MAYBE_NULL; null_fields--; } break; - case Key::MULTIPLE: - if (sql_field->type_handler()->Key_part_spec_init_multiple(column, - *sql_field, - file) || - sql_field->check_vcol_for_key(thd) || - key_add_part_check_null(file, key_info, sql_field, column)) - DBUG_RETURN(TRUE); - break; - - case Key::FOREIGN_KEY: - if (sql_field->type_handler()->Key_part_spec_init_foreign(column, - *sql_field, - file) || - sql_field->check_vcol_for_key(thd) || - key_add_part_check_null(file, key_info, sql_field, column)) - DBUG_RETURN(TRUE); - break; - case Key::UNIQUE: - if (sql_field->type_handler()->Key_part_spec_init_unique(column, - *sql_field, file, - &is_hash_field_needed) || - sql_field->check_vcol_for_key(thd) || - key_add_part_check_null(file, key_info, sql_field, column)) + case Key::MULTIPLE: + case Key::FOREIGN_KEY: + if (key_add_part_check_null(file, key_info, sql_field, column)) + DBUG_RETURN(TRUE); + if (sql_field->check_vcol_for_key(thd)) DBUG_RETURN(TRUE); break; + case Key::IGNORE_KEY: break; + + case Key::SPATIAL: + if (!(sql_field->flags & NOT_NULL_FLAG)) + { + my_message(ER_SPATIAL_CANT_HAVE_NULL, + ER_THD(thd, ER_SPATIAL_CANT_HAVE_NULL), MYF(0)); + DBUG_RETURN(TRUE); + } + if (sql_field->check_vcol_for_key(thd)) + DBUG_RETURN(TRUE); + break; + } + + for (const Key_part_spec &kp2: key->columns) + { + if (column == &kp2) + break; + if (kp2.field_name.streq(column->field_name)) + { + my_error(ER_DUP_FIELDNAME, MYF(0), column->field_name.str); + DBUG_RETURN(TRUE); + } } if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER) @@ -3303,111 +3561,21 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, key_part_info->fieldnr= field; key_part_info->offset= (uint16) sql_field->offset; key_part_info->key_type=sql_field->pack_flag; - uint key_part_length= sql_field->type_handler()-> - calc_key_length(*sql_field); - - if (column->length) - { - if (f_is_blob(sql_field->pack_flag)) - { - key_part_length= MY_MIN(column->length, - blob_length_by_type(sql_field->real_field_type()) - * sql_field->charset->mbmaxlen); - if (key_part_length > max_key_length || - key_part_length > file->max_key_part_length()) - { - if (key->type == Key::MULTIPLE) - { - key_part_length= MY_MIN(max_key_length, file->max_key_part_length()); - /* not a critical problem */ - push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, - ER_TOO_LONG_KEY, ER_THD(thd, ER_TOO_LONG_KEY), - key_part_length); - /* Align key length to multibyte char boundary */ - key_part_length-= key_part_length % sql_field->charset->mbmaxlen; - } - } - } - // Catch invalid use of partial keys - else if (!f_is_geom(sql_field->pack_flag) && - // is the key partial? - column->length != key_part_length && - // is prefix length bigger than field length? - (column->length > key_part_length || - // can the field have a partial key? - !sql_field->type_handler()->type_can_have_key_part() || - // a packed field can't be used in a partial key - f_is_packed(sql_field->pack_flag) || - // does the storage engine allow prefixed search? - ((file->ha_table_flags() & HA_NO_PREFIX_CHAR_KEYS) && - // and is this a 'unique' key? - (key_info->flags & HA_NOSAME)))) - { - my_message(ER_WRONG_SUB_KEY, ER_THD(thd, ER_WRONG_SUB_KEY), MYF(0)); - DBUG_RETURN(TRUE); - } - else if (!(file->ha_table_flags() & HA_NO_PREFIX_CHAR_KEYS)) - key_part_length= column->length; - } - else if (key_part_length == 0 && (sql_field->flags & NOT_NULL_FLAG) && - !is_hash_field_needed) - { - my_error(ER_WRONG_KEY_COLUMN, MYF(0), file->table_type(), - column->field_name.str); - DBUG_RETURN(TRUE); - } - if (key_part_length > file->max_key_part_length() && - key->type != Key::FULLTEXT) - { - if (key->type == Key::MULTIPLE) - { - key_part_length= file->max_key_part_length(); - /* not a critical problem */ - push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, - ER_TOO_LONG_KEY, ER_THD(thd, ER_TOO_LONG_KEY), - key_part_length); - /* Align key length to multibyte char boundary */ - key_part_length-= key_part_length % sql_field->charset->mbmaxlen; - } - else - { - if (key->type != Key::UNIQUE) - { - key_part_length= MY_MIN(max_key_length, file->max_key_part_length()); - my_error(ER_TOO_LONG_KEY, MYF(0), key_part_length); - DBUG_RETURN(TRUE); - } - } - } - - if (key->type == Key::UNIQUE - && key_part_length > MY_MIN(max_key_length, - file->max_key_part_length())) - is_hash_field_needed= true; - - /* We can not store key_part_length more then 2^16 - 1 in frm */ - if (is_hash_field_needed && column->length > UINT_MAX16) - { - my_error(ER_TOO_LONG_KEYPART, MYF(0), UINT_MAX16); - DBUG_RETURN(TRUE); - } - else - key_part_info->length= (uint16) key_part_length; + key_part_info->length= column->length; /* Use packed keys for long strings on the first column */ if (!((*db_options) & HA_OPTION_NO_PACK_KEYS) && !((create_info->table_options & HA_OPTION_NO_PACK_KEYS)) && - (key_part_length >= KEY_DEFAULT_PACK_LENGTH) && + (column->length >= KEY_DEFAULT_PACK_LENGTH) && !is_hash_field_needed) { key_info->flags|= sql_field->type_handler()->KEY_pack_flags(column_nr); } /* Check if the key segment is partial, set the key flag accordingly */ - if (key_part_length != sql_field->type_handler()-> + if (column->length != sql_field->type_handler()-> calc_key_length(*sql_field) && - key_part_length != sql_field->type_handler()->max_octet_length()) + column->length != sql_field->type_handler()->max_octet_length()) key_info->flags|= HA_KEY_HAS_PART_KEY_SEG; - key_length+= key_part_length; key_part_info++; } if (!key_info->name.str || check_column_name(key_info->name.str)) @@ -3417,15 +3585,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, } if (key->type == Key::UNIQUE && !(key_info->flags & HA_NULL_PART_KEY)) unique_key=1; - key_info->key_length=(uint16) key_length; - if (key_info->key_length > max_key_length && key->type == Key::UNIQUE) - is_hash_field_needed= true; // for case "a BLOB UNIQUE" - if (key_length > max_key_length && key->type != Key::FULLTEXT && - !is_hash_field_needed) - { - my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length); - DBUG_RETURN(TRUE); - } /* Check long unique keys */ if (is_hash_field_needed) @@ -3437,12 +3596,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, key_info->name.str); DBUG_RETURN(TRUE); } - if (key_info->algorithm != HA_KEY_ALG_UNDEF && - key_info->algorithm != HA_KEY_ALG_HASH ) - { - my_error(ER_TOO_LONG_KEY, MYF(0), max_key_length); - DBUG_RETURN(TRUE); - } } if (is_hash_field_needed || (key_info->algorithm == HA_KEY_ALG_HASH && @@ -3482,39 +3635,6 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info, // Check if a duplicate index is defined. check_duplicate_key(thd, key, key_info, &alter_info->key_list); - key_info->without_overlaps= key->without_overlaps; - if (key_info->without_overlaps) - { - if (key_info->algorithm == HA_KEY_ALG_HASH || - key_info->algorithm == HA_KEY_ALG_LONG_HASH) - - { -without_overlaps_err: - my_error(ER_KEY_CANT_HAVE_WITHOUT_OVERLAPS, MYF(0), key_info->name.str); - DBUG_RETURN(true); - } - key_iterator2.rewind(); - while ((key2 = key_iterator2++)) - { - if (key2->type != Key::FOREIGN_KEY) - continue; - DBUG_ASSERT(key != key2); - Foreign_key *fk= (Foreign_key*) key2; - if (fk->update_opt != FK_OPTION_CASCADE) - continue; - for (Key_part_spec& kp: key->columns) - { - for (Key_part_spec& kp2: fk->columns) - { - if (!lex_string_cmp(scs, &kp.field_name, &kp2.field_name)) - { - goto without_overlaps_err; - } - } - } - } - create_info->period_info.unique_keys++; - } key_info->is_ignored= key->key_create_info.is_ignored; key_info++; } @@ -3916,20 +4036,6 @@ static int append_system_key_parts(THD *thd, HA_CREATE_INFO *create_info, my_error(ER_PERIOD_NOT_FOUND, MYF(0), key->period.str); return -1; } - - const auto &period_start= create_info->period_info.period.start; - const auto &period_end= create_info->period_info.period.end; - List_iterator part_it(key->columns); - while (Key_part_spec *key_part= part_it++) - { - if (period_start.streq(key_part->field_name) - || period_end.streq(key_part->field_name)) - { - my_error(ER_KEY_CONTAINS_PERIOD_FIELDS, MYF(0), key->name.str, - key_part->field_name.str); - return -1; - } - } const auto &period= create_info->period_info.period; key->columns.push_back(new (thd->mem_root) Key_part_spec(&period.end, 0, true)); @@ -7089,10 +7195,10 @@ bool mysql_compare_tables(TABLE *table, Alter_info *alter_info, /* Some very basic checks. */ uint fields= table->s->fields; - /* There is no field count on system-invisible fields, count them. */ + /* There is no field count on fully-invisible fields, count them. */ for (Field **f_ptr= table->field; *f_ptr; f_ptr++) { - if ((*f_ptr)->invisible >= INVISIBLE_SYSTEM) + if ((*f_ptr)->invisible >= INVISIBLE_FULL) fields--; } @@ -9060,6 +9166,7 @@ fk_check_column_changes(THD *thd, const TABLE *table, *bad_column_name= NULL; enum fk_column_change_type result= FK_COLUMN_NO_CHANGE; + bool strict_mode= thd->is_strict_mode(); while ((column= column_it++)) { @@ -9105,7 +9212,7 @@ fk_check_column_changes(THD *thd, const TABLE *table, goto func_exit; } - if (old_field_not_null != new_field_not_null) + if (strict_mode && old_field_not_null != new_field_not_null) { if (referenced && !new_field_not_null) { @@ -11883,14 +11990,15 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables, protocol->store_null(); else { + DEBUG_SYNC(thd, "mysql_checksum_table_before_calculate_checksum"); int error= t->file->calculate_checksum(); + DEBUG_SYNC(thd, "mysql_checksum_table_after_calculate_checksum"); if (thd->killed) { /* we've been killed; let handler clean up, and remove the partial current row from the recordset (embedded lib) */ - t->file->ha_rnd_end(); thd->protocol->remove_last_row(); goto err; } diff --git a/sql/table.cc b/sql/table.cc index b78837ec237..b65338def12 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -7251,6 +7251,7 @@ void Field_iterator_natural_join::next() { cur_column_ref= column_ref_it++; DBUG_ASSERT(!cur_column_ref || ! cur_column_ref->table_field || + !cur_column_ref->table_field->field || cur_column_ref->table_ref->table == cur_column_ref->table_field->field->table); } diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 042d860bf5d..ddd0cdf12d8 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -1693,6 +1693,42 @@ static void wsrep_keys_free(wsrep_key_arr_t* key_arr) key_arr->keys_len= 0; } +class Unknown_storage_engine_handler : public Internal_error_handler +{ +public: + Unknown_storage_engine_handler() + : m_handled_errors(0), m_unhandled_errors(0) + {} + + bool handle_condition(THD *thd, + uint sql_errno, + const char* sqlstate, + Sql_condition::enum_warning_level *level, + const char* msg, + Sql_condition ** cond_hdl) override + { + *cond_hdl= NULL; + if (sql_errno == ER_UNKNOWN_STORAGE_ENGINE) + { + m_handled_errors++; + } + else if (*level == Sql_condition::WARN_LEVEL_ERROR) + { + m_unhandled_errors++; + } + return FALSE; + } + + bool safely_trapped_errors() + { + return ((m_handled_errors > 0) && (m_unhandled_errors == 0)); + } + +private: + int m_handled_errors; + int m_unhandled_errors; +}; + /*! * @param thd thread * @param tables list of tables @@ -1700,84 +1736,116 @@ static void wsrep_keys_free(wsrep_key_arr_t* key_arr) * @return 0 if parent table append was successful, non-zero otherwise. */ -bool -wsrep_append_fk_parent_table(THD* thd, TABLE_LIST* tables, wsrep::key_array* keys) +bool wsrep_append_fk_parent_table(THD *thd, TABLE_LIST *tables, + wsrep::key_array *keys) { - bool fail= false; - TABLE_LIST *table; + assert(wsrep_thd_is_local(thd)); - for (table= tables; table; table= table->next_local) + bool fail= false; + Open_table_context ot_ctx(thd, MYSQL_OPEN_FORCE_SHARED_HIGH_PRIO_MDL); + + for (TABLE_LIST *table= tables; table; table= table->next_local) + { + if (!table->table) { - if (is_temporary_table(table)) + TABLE_LIST *save_next_global= table->next_global; + TABLE_LIST::enum_open_strategy save_open_strategy= table->open_strategy; + table->open_strategy= TABLE_LIST::OPEN_IF_EXISTS; + + Unknown_storage_engine_handler no_storage_engine; + thd->push_internal_handler(&no_storage_engine); + + if (open_table(thd, table, &ot_ctx)) { - WSREP_DEBUG("Temporary table %s.%s already opened query=%s", table->db.str, - table->table_name.str, wsrep_thd_query(thd)); - return false; - } - } - - thd->release_transactional_locks(); - uint counter; - MDL_savepoint mdl_savepoint= thd->mdl_context.mdl_savepoint(); - - if (open_tables(thd, &tables, &counter, MYSQL_OPEN_FORCE_SHARED_HIGH_PRIO_MDL)) - { - WSREP_DEBUG("Unable to open table for FK checks for %s", wsrep_thd_query(thd)); - fail= true; - goto exit; - } - - for (table= tables; table; table= table->next_local) - { - if (!is_temporary_table(table) && table->table) - { - FOREIGN_KEY_INFO *f_key_info; - List f_key_list; - - table->table->file->get_foreign_key_list(thd, &f_key_list); - List_iterator_fast it(f_key_list); - while ((f_key_info=it++)) + if (no_storage_engine.safely_trapped_errors()) { - WSREP_DEBUG("appended fkey %s", f_key_info->referenced_table->str); - keys->push_back(wsrep_prepare_key_for_toi(f_key_info->referenced_db->str, - f_key_info->referenced_table->str, - wsrep::key::shared)); + Diagnostics_area *da= thd->get_stmt_da(); + da->reset_diagnostics_area(); + da->clear_warning_info(thd->query_id); + } + else + { + fail= true; } } + + thd->pop_internal_handler(); + + table->next_global= save_next_global; + table->open_strategy= save_open_strategy; + + if (fail) + { + WSREP_DEBUG("Unable to open table for FK checks for %s", + wsrep_thd_query(thd)); + goto exit; + } } + if (table->table && !is_temporary_table(table)) + { + FOREIGN_KEY_INFO *f_key_info; + List f_key_list; + + table->table->file->get_foreign_key_list(thd, &f_key_list); + List_iterator_fast it(f_key_list); + while ((f_key_info= it++)) + { + WSREP_DEBUG("appended fkey %s", f_key_info->referenced_table->str); + keys->push_back(wsrep_prepare_key_for_toi( + f_key_info->referenced_db->str, f_key_info->referenced_table->str, + wsrep::key::shared)); + } + } + } + exit: - DEBUG_SYNC(thd, "wsrep_append_fk_toi_keys_before_close_tables"); + DEBUG_SYNC(thd, "wsrep_append_fk_toi_keys_before_close_tables"); - /* close the table and release MDL locks */ - close_thread_tables(thd); - thd->mdl_context.rollback_to_savepoint(mdl_savepoint); - for (table= tables; table; table= table->next_local) + /* close the table and release MDL locks */ + close_thread_tables(thd); + thd->mdl_context.rollback_to_savepoint(ot_ctx.start_of_statement_svp()); + for (TABLE_LIST *table= tables; table; table= table->next_global) + { + table->table= NULL; + table->mdl_request.ticket= NULL; + } + + /* + Reopen temporary tables if necessary. + DROP TABLE pre-opens temporary tables, but the corresponding + command does not have the CF_PREOPEN_TMP_TABLES flag set. + */ + const bool preopen_tmp_tables= + thd->lex->sql_command == SQLCOM_DROP_TABLE || + (sql_command_flags[thd->lex->sql_command] & CF_PREOPEN_TMP_TABLES); + + if (preopen_tmp_tables && thd->open_temporary_tables(tables)) + { + WSREP_INFO("Unable to reopen temporary tables after FK checks"); + fail= true; + } + + /* + MDEV-32938: Check if DDL operation has been killed before. + + It may be that during collecting foreign keys this operation gets + BF-aborted by another already-running TOI operation because it got MDL + locks on the same table for checking foreign keys. After + `close_thread_tables()` has been called it's safe to assume that no-one can + BF-abort this operation as it's not holding any MDL locks any more. + */ + if (!fail) + { + mysql_mutex_lock(&thd->LOCK_thd_kill); + if (thd->killed) { - table->table= NULL; - table->next_global= NULL; - table->mdl_request.ticket= NULL; + fail= true; } + mysql_mutex_unlock(&thd->LOCK_thd_kill); + } - /* - MDEV-32938: Check if DDL operation has been killed before. - - It may be that during collecting foreign keys this operation gets BF-aborted - by another already-running TOI operation because it got MDL locks on the same - table for checking foreign keys. - After `close_thread_tables()` has been called it's safe to assume that no-one - can BF-abort this operation as it's not holding any MDL locks any more. - */ - if (!fail) - { - mysql_mutex_lock(&thd->LOCK_thd_kill); - if (thd->killed) - { - fail= true; - } - mysql_mutex_unlock(&thd->LOCK_thd_kill); - } - return fail; + return fail; } bool wsrep_reload_ssl() @@ -2159,11 +2227,18 @@ int wsrep_to_buf_helper( domain_id= wsrep_gtid_server.domain_id; server_id= wsrep_gtid_server.server_id; } - Gtid_log_event gtid_event(thd, seqno, domain_id, true, - LOG_EVENT_SUPPRESS_USE_F, true, 0); - gtid_event.server_id= server_id; - if (!gtid_event.is_valid()) ret= 0; - ret= writer.write(>id_event); + /* + * Ignore if both thd->variables.gtid_seq_no and + * thd->variables.wsrep_gtid_seq_no are not set. + */ + if (seqno) + { + Gtid_log_event gtid_event(thd, seqno, domain_id, true, + LOG_EVENT_SUPPRESS_USE_F, true, 0); + gtid_event.server_id= server_id; + if (!gtid_event.is_valid()) ret= 0; + ret= writer.write(>id_event); + } } /* It's local DDL so in case of possible gtid seqno (SET gtid_seq_no=X) @@ -2769,8 +2844,11 @@ static int wsrep_TOI_begin(THD *thd, const char *db, const char *table, if (!thd->is_error()) { - my_error(ER_LOCK_DEADLOCK, MYF(0), "WSREP replication failed. Check " - "your wsrep connection state and retry the query."); + push_warning_printf(thd, Sql_state_errno_level::WARN_LEVEL_ERROR, + ER_LOCK_DEADLOCK, + "WSREP replication failed. Check " + "your wsrep connection state and retry the query."); + my_error(ER_LOCK_DEADLOCK, MYF(0)); } } rc= -1; @@ -3258,8 +3336,6 @@ static inline bool is_committing_connection(THD *thd) static my_bool have_client_connections(THD *thd, void*) { - DBUG_PRINT("quit",("Informing thread %lld that it's time to die", - (longlong) thd->thread_id)); if (is_client_connection(thd)) { if (thd->killed == KILL_CONNECTION || @@ -3311,13 +3387,18 @@ static my_bool kill_all_threads(THD *thd, THD *caller_thd) /* We skip slave threads & scheduler on this first loop through. */ if (is_client_connection(thd) && thd != caller_thd) { - if (thd->get_stmt_da()->is_eof()) + /* the connection executing SHUTDOWN, should do clean exit, + not aborting here */ + if (thd->get_command() == COM_SHUTDOWN) { + WSREP_DEBUG("leaving SHUTDOWN executing connection alive, thread: %lld", + (longlong) thd->thread_id); return 0; } - + /* replaying connection is killed by signal */ if (is_replaying_connection(thd)) { + WSREP_DEBUG("closing connection is replaying %lld", (longlong) thd->thread_id); thd->set_killed(KILL_CONNECTION_HARD); return 0; } @@ -3326,7 +3407,7 @@ static my_bool kill_all_threads(THD *thd, THD *caller_thd) { /* replicated transactions must be skipped */ WSREP_DEBUG("closing connection %lld", (longlong) thd->thread_id); - /* instead of wsrep_close_thread() we do now soft kill by THD::awake */ + /* instead of wsrep_close_thread() we do now hard kill by THD::awake */ thd->awake(KILL_CONNECTION_HARD); return 0; } @@ -3367,8 +3448,10 @@ void wsrep_close_client_connections(my_bool wait_to_end, THD* except_caller_thd) */ server_threads.iterate(kill_remaining_threads, except_caller_thd); - DBUG_PRINT("quit", ("Waiting for threads to die (count=%u)", THD_count::value())); - WSREP_DEBUG("waiting for client connections to close: %u", THD_count::value()); + DBUG_PRINT("quit", ("Waiting for threads to die (count=%u)", + THD_count::value())); + WSREP_DEBUG("waiting for client connections to close: %u", + THD_count::value()); while (wait_to_end && server_threads.iterate(have_client_connections)) { @@ -3925,3 +4008,15 @@ void wsrep_commit_empty(THD* thd, bool all) } DBUG_VOID_RETURN; } + +bool wsrep_table_list_has_non_temp_tables(THD *thd, TABLE_LIST *tables) +{ + for (TABLE_LIST *table= tables; table; table= table->next_global) + { + if (!is_temporary_table(table)) + { + return true; + } + } + return false; +} diff --git a/sql/wsrep_mysqld.h b/sql/wsrep_mysqld.h index a2d0b71fba6..5d85d21fca1 100644 --- a/sql/wsrep_mysqld.h +++ b/sql/wsrep_mysqld.h @@ -592,6 +592,13 @@ wsrep::key wsrep_prepare_key_for_toi(const char* db, const char* table, void wsrep_wait_ready(THD *thd); void wsrep_ready_set(bool ready_value); + +/** + * Returns true if the given list of tables contains at least one + * non-temporary table. + */ +bool wsrep_table_list_has_non_temp_tables(THD *thd, TABLE_LIST *tables); + #else /* !WITH_WSREP */ /* These macros are needed to compile MariaDB without WSREP support diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc index 52c415e2bf4..8e83aa95538 100644 --- a/sql/wsrep_thd.cc +++ b/sql/wsrep_thd.cc @@ -497,7 +497,7 @@ void wsrep_backup_kill_for_commit(THD *thd) void wsrep_restore_kill_after_commit(THD *thd) { - DBUG_ASSERT(WSREP(thd)); + DBUG_ASSERT(wsrep_is_active(thd)); mysql_mutex_assert_owner(&thd->LOCK_thd_kill); thd->killed= thd->wsrep_abort_by_kill; my_free(thd->killed_err); diff --git a/storage/innobase/dict/dict0crea.cc b/storage/innobase/dict/dict0crea.cc index 371c50e57c2..ba12e41bab0 100644 --- a/storage/innobase/dict/dict0crea.cc +++ b/storage/innobase/dict/dict0crea.cc @@ -45,6 +45,7 @@ Created 1/8/1996 Heikki Tuuri #include "fts0priv.h" #include "srv0start.h" #include "log.h" +#include "ha_innodb.h" /*****************************************************************//** Based on a table object, this function builds the entry to be inserted @@ -1755,8 +1756,9 @@ dict_create_add_foreigns_to_dictionary( return DB_ERROR; } + bool strict_mode = thd_is_strict_mode(trx->mysql_thd); for (auto fk : local_fk_set) - if (!fk->check_fk_constraint_valid()) + if (strict_mode && !fk->check_fk_constraint_valid()) return DB_CANNOT_ADD_CONSTRAINT; else if (dberr_t error= dict_create_add_foreign_to_dictionary (table->name.m_name, fk, trx)) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 5188f5b511b..1f8744465a2 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -9709,8 +9709,7 @@ ha_innobase::ft_init_ext( /* If tablespace is discarded, we should return here */ if (!ft_table->space) { - my_error(ER_TABLESPACE_MISSING, MYF(0), table->s->db.str, - table->s->table_name.str); + my_error(ER_TABLESPACE_MISSING, MYF(0), ft_table->name.m_name); return(NULL); } @@ -14378,7 +14377,7 @@ ha_innobase::rename_table( my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to); error = DB_ERROR; } else if (error == DB_LOCK_WAIT_TIMEOUT) { - my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); + my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0)); error = DB_LOCK_WAIT; } diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 04e57c83f10..4bfecaab0c6 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -4445,13 +4445,15 @@ declared as NOT NULL @param n_drop_fk number of constraints that are being dropped @param col_name modified column name @param new_field_flags Modified field flags +@param strict_mode Whether the sql_mode is strict @retval true Not allowed (will call my_error()) @retval false Allowed */ static bool check_foreigns_nullability(const dict_table_t *user_table, dict_foreign_t **drop_fk, ulint n_drop_fk, - const char *col_name, uint32_t new_field_flags) + const char *col_name, uint32_t new_field_flags, + bool strict_mode) { ut_ad(dict_sys.locked()); @@ -4463,7 +4465,7 @@ bool check_foreigns_nullability(const dict_table_t *user_table, if (innobase_dropping_foreign(foreign, drop_fk, n_drop_fk)) continue; - if (foreign->on_update_cascade_null(col_name)) + if (strict_mode && foreign->on_update_cascade_null(col_name)) goto non_null_error; if (foreign->type & (foreign->DELETE_SET_NULL | @@ -4485,7 +4487,7 @@ non_null_error: { for (dict_foreign_t *foreign : user_table->referenced_set) { - if (foreign->on_update_cascade_not_null(col_name)) + if (strict_mode && foreign->on_update_cascade_not_null(col_name)) { char display_name[FN_REFLEN]; const int dblen= int(table_name_t(const_cast(foreign-> @@ -4587,6 +4589,7 @@ column that is being dropped or modified to NOT NULL. @param user_table InnoDB table as it is before the ALTER operation @param drop_fk constraints being dropped @param n_drop_fk number of constraints that are being dropped +@param strict_mode Whether the strict sql_mode is set @retval true Not allowed (will call my_error()) @retval false Allowed */ @@ -4598,7 +4601,8 @@ innobase_check_foreigns( const TABLE* old_table, const dict_table_t* user_table, dict_foreign_t** drop_fk, - ulint n_drop_fk) + ulint n_drop_fk, + bool strict_mode) { for (Field** fp = old_table->field; *fp; fp++) { ut_ad(!(*fp)->real_maybe_null() @@ -4623,7 +4627,8 @@ innobase_check_foreigns( if (check_foreigns_nullability(user_table, drop_fk, n_drop_fk, (*fp)->field_name.str, - it->flags)) { + it->flags, + strict_mode)) { return true; } } @@ -6654,7 +6659,8 @@ acquire_lock: if (new_clustered) { if (innobase_check_foreigns( ha_alter_info, old_table, - user_table, ctx->drop_fk, ctx->num_to_drop_fk)) { + user_table, ctx->drop_fk, ctx->num_to_drop_fk, + thd_is_strict_mode(ctx->trx->mysql_thd))) { new_clustered_failed: DBUG_ASSERT(ctx->trx != ctx->prebuilt->trx); ctx->trx->rollback(); diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index 0502568b312..a03415e218a 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -484,7 +484,9 @@ row_ins_cascade_calc_update_vec( const upd_field_t* parent_ufield = &parent_update->fields[j]; - if (parent_ufield->field_no == parent_field_no) { + if (parent_ufield->field_no == parent_field_no + && !(parent_ufield->new_val.type.prtype + & DATA_VIRTUAL)) { ulint min_size; const dict_col_t* col; diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc index da5674fec52..36873d5236f 100644 --- a/storage/spider/ha_spider.cc +++ b/storage/spider/ha_spider.cc @@ -209,7 +209,6 @@ int ha_spider::open( DBUG_PRINT("info",("spider this=%p", this)); dup_key_idx = (uint) -1; - conn_kinds = SPIDER_CONN_KIND_MYSQL; #ifdef WITH_PARTITION_STORAGE_ENGINE table->file->get_no_parts("", &part_num); if (part_num) @@ -639,22 +638,7 @@ int ha_spider::check_access_kind_for_connection( int error_num, roop_count; DBUG_ENTER("ha_spider::check_access_kind_for_connection"); DBUG_PRINT("info",("spider this=%p", this)); - conn_kinds = 0; - switch (wide_handler->sql_command) - { - case SQLCOM_UPDATE: - case SQLCOM_UPDATE_MULTI: - case SQLCOM_DELETE: - case SQLCOM_DELETE_MULTI: - default: - conn_kinds |= SPIDER_CONN_KIND_MYSQL; - for (roop_count = 0; roop_count < (int) share->link_count; roop_count++) - { - conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL; - } - break; - } - if ((error_num = spider_check_trx_and_get_conn(thd, this, TRUE))) + if ((error_num= spider_check_trx_and_get_conn(thd, this))) { DBUG_RETURN(error_num); } @@ -980,7 +964,7 @@ int ha_spider::external_lock( } } - if ((error_num= spider_check_trx_and_get_conn(thd, this, FALSE))) + if ((error_num= spider_check_trx_and_get_conn(thd, this))) DBUG_RETURN(error_num); if (!partition_handler || !partition_handler->handlers) { @@ -1022,9 +1006,6 @@ int ha_spider::reset() THD *thd = ha_thd(); SPIDER_TRX *tmp_trx, *trx_bak; SPIDER_CONDITION *tmp_cond; -/* - char first_byte, first_byte_bak; -*/ backup_error_status(); DBUG_ENTER("ha_spider::reset"); DBUG_PRINT("info",("spider this=%p", this)); @@ -1113,8 +1094,6 @@ int ha_spider::reset() if (check_error_mode(error_num2)) error_num = error_num2; } - - conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL; } result_list.bulk_update_mode = 0; result_list.bulk_update_size = 0; @@ -1140,7 +1119,6 @@ int ha_spider::reset() result_list.use_union = FALSE; result_list.use_both_key = FALSE; pt_clone_last_searcher = NULL; - conn_kinds = SPIDER_CONN_KIND_MYSQL; use_index_merge = FALSE; init_rnd_handler = FALSE; #ifdef HA_MRR_USE_DEFAULT_IMPL @@ -5232,7 +5210,7 @@ int ha_spider::rnd_next( DBUG_RETURN(error_num); use_pre_call = FALSE; } - if ((error_num= spider_check_trx_and_get_conn(ha_thd(), this, FALSE))) + if ((error_num= spider_check_trx_and_get_conn(ha_thd(), this))) DBUG_RETURN(error_num); DBUG_RETURN(rnd_next_internal(buf)); } @@ -5797,8 +5775,7 @@ int ha_spider::info( pthread_mutex_lock(&share->sts_mutex); if (difftime(tmp_time, share->sts_get_time) >= sts_interval) { - if ((error_num = spider_check_trx_and_get_conn(ha_thd(), this, - FALSE))) + if ((error_num= spider_check_trx_and_get_conn(ha_thd(), this))) { pthread_mutex_unlock(&share->sts_mutex); if (!share->sts_init) @@ -6361,7 +6338,7 @@ int ha_spider::check_crd() } if (crd_mode == 3) crd_mode = 1; - if ((error_num = spider_check_trx_and_get_conn(ha_thd(), this, FALSE))) + if ((error_num= spider_check_trx_and_get_conn(ha_thd(), this))) { DBUG_RETURN(check_error_mode(error_num)); } @@ -7748,7 +7725,7 @@ int ha_spider::truncate() DBUG_RETURN(ER_SPIDER_READ_ONLY_NUM); } wide_handler->sql_command = SQLCOM_TRUNCATE; - if ((error_num = spider_check_trx_and_get_conn(thd, this, FALSE))) + if ((error_num= spider_check_trx_and_get_conn(thd, this))) { DBUG_RETURN(error_num); } @@ -9335,13 +9312,11 @@ int ha_spider::drop_tmp_tables() } bool ha_spider::handler_opened( - int link_idx, - uint tgt_conn_kind + int link_idx ) { DBUG_ENTER("ha_spider::handler_opened"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider link_idx=%d", link_idx)); - DBUG_PRINT("info",("spider tgt_conn_kind=%u", tgt_conn_kind)); if ( spider_bit_is_set(m_handler_opened, link_idx) ) { @@ -9362,8 +9337,7 @@ void ha_spider::set_handler_opened( } void ha_spider::clear_handler_opened( - int link_idx, - uint tgt_conn_kind + int link_idx ) { DBUG_ENTER("ha_spider::clear_handler_opened"); DBUG_PRINT("info",("spider this=%p", this)); @@ -9382,7 +9356,7 @@ int ha_spider::close_opened_handler( if (spider_bit_is_set(m_handler_opened, link_idx)) { if ((error_num = spider_db_close_handler(this, - conns[link_idx], link_idx, SPIDER_CONN_KIND_MYSQL)) + conns[link_idx], link_idx)) ) { error_num= spider_maybe_ping_1(this, link_idx, error_num); } @@ -11569,8 +11543,7 @@ int ha_spider::append_lock_tables_list() if (!(wide_handler->trx = spider_get_trx(ha_thd(), TRUE, &error_num))) DBUG_RETURN(error_num); - if ((error_num = spider_check_trx_and_get_conn(wide_handler->trx->thd, this, - FALSE))) + if ((error_num = spider_check_trx_and_get_conn(wide_handler->trx->thd, this))) { DBUG_RETURN(error_num); } diff --git a/storage/spider/ha_spider.h b/storage/spider/ha_spider.h index 47eb4098e14..5bdbdb187fa 100644 --- a/storage/spider/ha_spider.h +++ b/storage/spider/ha_spider.h @@ -62,8 +62,6 @@ public: uint sql_kinds; uint *sql_kind; ulonglong *connection_ids; - uint conn_kinds; - uint *conn_kind; char *conn_keys_first_ptr; char **conn_keys; SPIDER_CONN **conns; @@ -632,15 +630,13 @@ public: int check_ha_range_eof(); int drop_tmp_tables(); bool handler_opened( - int link_idx, - uint tgt_conn_kind + int link_idx ); void set_handler_opened( int link_idx ); void clear_handler_opened( - int link_idx, - uint tgt_conn_kind + int link_idx ); int close_opened_handler( int link_idx, diff --git a/storage/spider/mysql-test/spider/bugfix/r/mdev_34849.result b/storage/spider/mysql-test/spider/bugfix/r/mdev_34849.result new file mode 100644 index 00000000000..9433dd7f679 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/mdev_34849.result @@ -0,0 +1,24 @@ +# +# MDEV-34849 SIGSEGV in server_mysql_real_connect, spider_db_connect, __strcmp_evex and __strnlen_evex, ASAN heap-use-after-free in spider_db_connect on INSERT +# +INSTALL SONAME 'ha_spider'; +CREATE TABLE t1 (c INT) ENGINE=Spider; +CREATE TABLE t2 (c INT) ENGINE=Spider; +SELECT * FROM t2; +ERROR HY000: Unable to connect to foreign data source: localhost +set @old_table_open_cache=@@global.table_open_cache; +SET GLOBAL table_open_cache=0; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '0' +set autocommit=0; +/* 1 */ INSERT INTO t1 VALUES (0); +ERROR HY000: Unable to connect to foreign data source: localhost +/* 2 */ INSERT INTO t2 VALUES (0); +ERROR HY000: Unable to connect to foreign data source: localhost +set global spider_connect_error_interval=0; +/* 3 */ INSERT INTO t1 VALUES (0); +ERROR HY000: Unable to connect to foreign data source: localhost +drop table t1, t2; +set global table_open_cache=@old_table_open_cache; +Warnings: +Warning 1620 Plugin is busy and will be uninstalled on shutdown diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_34849.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_34849.test new file mode 100644 index 00000000000..4890abf4c7d --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_34849.test @@ -0,0 +1,52 @@ +--echo # +--echo # MDEV-34849 SIGSEGV in server_mysql_real_connect, spider_db_connect, __strcmp_evex and __strnlen_evex, ASAN heap-use-after-free in spider_db_connect on INSERT +--echo # + +INSTALL SONAME 'ha_spider'; + +CREATE TABLE t1 (c INT) ENGINE=Spider; +CREATE TABLE t2 (c INT) ENGINE=Spider; + +# So that t2 is inserted into spider_init_error_tables and in INSERT +# INTO t2 we go into failure mode in spider_get_share() +--error 1429 +SELECT * FROM t2; + +# Resets the table cache so that the next two queries will call +# ha_spider::open() on t1 and t2 respectively +set @old_table_open_cache=@@global.table_open_cache; +SET GLOBAL table_open_cache=0; + +# This causes trx_ha->wait_for_reusing to remain false during the +# (non-)rollback at the end of the first INSERT INTO t1 statement, so +# that the second INSERT INTO t1 enters the branch in +# spider_check_trx_and_get_conn() that does not update spider fields +# including NULLing its associated connections. +set autocommit=0; + +# Misses the table cache when opening the table. Spider then opens the +# table so that the next INSERT INTO t1 causes a table cache hit and +# skips the call to open table with spider +--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE +/* 1 */ INSERT INTO t1 VALUES (0); + +# Spider opens the table and creates a t2 share, assigns it to +# conn->queued_connect_share, and frees the t2 share on failure +--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE +/* 2 */ INSERT INTO t2 VALUES (0); + +# So that the final INSERT INTO t1 will decide not to return the same +# error in spider_db_connect(), and move onto using the freed share +set global spider_connect_error_interval=0; + +# Skips call to ha_spider::open(), so it does not create a t1 share +# nor reassign it to conn->queued_connect_share, causing it to remain +# the freed t2 share, and using the share results in segv +--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE +/* 3 */ INSERT INTO t1 VALUES (0); + +drop table t1, t2; + +set global table_open_cache=@old_table_open_cache; +--disable_query_log +--source ../../include/clean_up_spider.inc diff --git a/storage/spider/spd_conn.cc b/storage/spider/spd_conn.cc index 03d347022ec..67fb8f72578 100644 --- a/storage/spider/spd_conn.cc +++ b/storage/spider/spd_conn.cc @@ -112,7 +112,6 @@ const uchar *spider_conn_get_key( auto conn= static_cast(conn_); DBUG_ENTER("spider_conn_get_key"); *length = conn->conn_key_length; - DBUG_PRINT("info",("spider conn_kind=%u", conn->conn_kind)); #ifdef DBUG_TRACE spider_print_keys(conn->conn_key, conn->conn_key_length); #endif @@ -403,7 +402,6 @@ SPIDER_CONN *spider_create_conn( ha_spider *spider, int link_idx, int base_link_idx, - uint conn_kind, int *error_num ) { int *need_mon; @@ -567,7 +565,6 @@ SPIDER_CONN *spider_create_conn( conn->semi_trx_isolation_chk = FALSE; conn->semi_trx_chk = FALSE; conn->link_idx = base_link_idx; - conn->conn_kind = conn_kind; conn->conn_need_mon = need_mon; if (spider) conn->need_mon = &spider->need_mons[base_link_idx]; @@ -654,13 +651,11 @@ SPIDER_CONN *spider_get_conn( ha_spider *spider, bool another, bool thd_chg, - uint conn_kind, int *error_num ) { SPIDER_CONN *conn = NULL; int base_link_idx = link_idx; DBUG_ENTER("spider_get_conn"); - DBUG_PRINT("info",("spider conn_kind=%u", conn_kind)); if (spider) link_idx = spider->conn_link_idx[base_link_idx]; @@ -699,7 +694,8 @@ SPIDER_CONN *spider_get_conn( pthread_mutex_unlock(&spider_conn_mutex); if (spider_param_max_connections()) { /* enable connection pool */ - conn = spider_get_conn_from_idle_connection(share, link_idx, conn_key, spider, conn_kind, base_link_idx, error_num); + conn= spider_get_conn_from_idle_connection( + share, link_idx, conn_key, spider, base_link_idx, error_num); /* failed get conn, goto error */ if (!conn) goto error; @@ -708,8 +704,8 @@ SPIDER_CONN *spider_get_conn( else { /* did not enable conncetion pool , create_conn */ DBUG_PRINT("info",("spider create new conn")); - if (!(conn = spider_create_conn(share, spider, link_idx, - base_link_idx, conn_kind, error_num))) + if (!(conn= spider_create_conn(share, spider, link_idx, + base_link_idx, error_num))) goto error; *conn->conn_key = *conn_key; if (spider) @@ -733,8 +729,8 @@ SPIDER_CONN *spider_get_conn( } else { DBUG_PRINT("info",("spider create new conn")); /* conn_recycle_strict = 0 and conn_recycle_mode = 0 or 2 */ - if (!(conn = spider_create_conn(share, spider, link_idx, base_link_idx, - conn_kind, error_num))) + if (!(conn= spider_create_conn(share, spider, link_idx, base_link_idx, + error_num))) goto error; *conn->conn_key = *conn_key; if (spider) @@ -878,18 +874,12 @@ int spider_check_and_get_casual_read_conn( if (conn->casual_read_current_id > 63) conn->casual_read_current_id = 2; } - char first_byte_bak = *spider->conn_keys[link_idx]; - *spider->conn_keys[link_idx] = - '0' + spider->result_list.casual_read[link_idx]; if (!(spider->conns[link_idx]= spider_get_conn( spider->share, link_idx, spider->conn_keys[link_idx], - spider->wide_handler->trx, spider, FALSE, TRUE, - SPIDER_CONN_KIND_MYSQL, &error_num))) + spider->wide_handler->trx, spider, FALSE, TRUE, &error_num))) { - *spider->conn_keys[link_idx] = first_byte_bak; DBUG_RETURN(error_num); } - *spider->conn_keys[link_idx] = first_byte_bak; spider->conns[link_idx]->casual_read_base_conn = conn; spider_check_and_set_autocommit(thd, spider->conns[link_idx], NULL); DBUG_RETURN(0); @@ -3016,12 +3006,6 @@ void *spider_bg_sts_action( if (spider.search_link_idx < 0) { spider_trx_set_link_idx_for_all(&spider); -/* - spider.search_link_idx = spider_conn_next_link_idx( - thd, share->link_statuses, share->access_balances, - spider.conn_link_idx, spider.search_link_idx, share->link_count, - SPIDER_LINK_STATUS_OK); -*/ spider.search_link_idx = spider_conn_first_link_idx(thd, share->link_statuses, share->access_balances, spider.conn_link_idx, share->link_count, SPIDER_LINK_STATUS_OK); @@ -3034,9 +3018,8 @@ void *spider_bg_sts_action( if (!conns[spider.search_link_idx]) { spider_get_conn(share, spider.search_link_idx, - share->conn_keys[spider.search_link_idx], - trx, &spider, FALSE, FALSE, SPIDER_CONN_KIND_MYSQL, - &error_num); + share->conn_keys[spider.search_link_idx], trx, + &spider, FALSE, FALSE, &error_num); conns[spider.search_link_idx]->error_mode = 0; spider.search_link_idx = -1; } @@ -3309,9 +3292,8 @@ void *spider_bg_crd_action( if (!conns[spider.search_link_idx]) { spider_get_conn(share, spider.search_link_idx, - share->conn_keys[spider.search_link_idx], - trx, &spider, FALSE, FALSE, SPIDER_CONN_KIND_MYSQL, - &error_num); + share->conn_keys[spider.search_link_idx], trx, + &spider, FALSE, FALSE, &error_num); conns[spider.search_link_idx]->error_mode = 0; spider.search_link_idx = -1; } @@ -3865,8 +3847,6 @@ bool spider_conn_use_handler( spider->share->use_handlers[link_idx]); DBUG_ENTER("spider_conn_use_handler"); DBUG_PRINT("info",("spider use_handler=%d", use_handler)); - DBUG_PRINT("info",("spider spider->conn_kind[link_idx]=%u", - spider->conn_kind[link_idx])); if (spider->do_direct_update) { spider->sql_kinds |= SPIDER_SQL_KIND_SQL; @@ -3932,7 +3912,7 @@ bool spider_conn_need_open_handler( ) { DBUG_ENTER("spider_conn_need_open_handler"); DBUG_PRINT("info",("spider spider=%p", spider)); - if (spider->handler_opened(link_idx, spider->conn_kind[link_idx])) + if (spider->handler_opened(link_idx)) { DBUG_PRINT("info",("spider HA already opened")); DBUG_RETURN(FALSE); @@ -3945,7 +3925,6 @@ SPIDER_CONN* spider_get_conn_from_idle_connection( int link_idx, char *conn_key, ha_spider *spider, - uint conn_kind, int base_link_idx, int *error_num ) @@ -4033,7 +4012,8 @@ SPIDER_CONN* spider_get_conn_from_idle_connection( if (ip_port_conn) pthread_mutex_unlock(&ip_port_conn->mutex); DBUG_PRINT("info",("spider create new conn")); - if (!(conn = spider_create_conn(share, spider, link_idx, base_link_idx, conn_kind, error_num))) + if (!(conn= spider_create_conn(share, spider, link_idx, base_link_idx, + error_num))) DBUG_RETURN(conn); *conn->conn_key = *conn_key; if (spider) diff --git a/storage/spider/spd_conn.h b/storage/spider/spd_conn.h index ba02178a608..ba3ca0ab62c 100644 --- a/storage/spider/spd_conn.h +++ b/storage/spider/spd_conn.h @@ -124,7 +124,6 @@ SPIDER_CONN *spider_create_conn( ha_spider *spider, int link_id, int base_link_id, - uint conn_kind, int *error_num ); @@ -136,7 +135,6 @@ SPIDER_CONN *spider_get_conn( ha_spider *spider, bool another, bool thd_chg, - uint conn_kind, int *error_num ); @@ -451,7 +449,6 @@ SPIDER_CONN* spider_get_conn_from_idle_connection int link_idx, char *conn_key, ha_spider *spider, - uint conn_kind, int base_link_idx, int *error_num ); diff --git a/storage/spider/spd_copy_tables.cc b/storage/spider/spd_copy_tables.cc index d9cf32b3923..0ea7b0dcf0c 100644 --- a/storage/spider/spd_copy_tables.cc +++ b/storage/spider/spd_copy_tables.cc @@ -501,11 +501,10 @@ int spider_udf_get_copy_tgt_conns( while (table_conn) { share = table_conn->share; - if ( - !(table_conn->conn = spider_get_conn( - share, 0, share->conn_keys[0], trx, NULL, FALSE, FALSE, - SPIDER_CONN_KIND_MYSQL, &error_num)) - ) { + if (!(table_conn->conn= + spider_get_conn(share, 0, share->conn_keys[0], trx, NULL, + FALSE, FALSE, &error_num))) + { my_error(ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), share->server_names[0]); DBUG_RETURN(ER_CONNECT_TO_FOREIGN_DATA_SOURCE); } diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc index 53b63e2ffe2..00a87bdc6a6 100644 --- a/storage/spider/spd_db_conn.cc +++ b/storage/spider/spd_db_conn.cc @@ -73,7 +73,7 @@ int spider_db_connect( THD* thd = current_thd; longlong connect_retry_interval; DBUG_ENTER("spider_db_connect"); - DBUG_ASSERT(conn->conn_kind != SPIDER_CONN_KIND_MYSQL || conn->need_mon); + DBUG_ASSERT(conn->need_mon); DBUG_PRINT("info",("spider link_idx=%d", link_idx)); DBUG_PRINT("info",("spider conn=%p", conn)); @@ -221,7 +221,6 @@ void spider_db_disconnect( ) { DBUG_ENTER("spider_db_disconnect"); DBUG_PRINT("info",("spider conn=%p", conn)); - DBUG_PRINT("info",("spider conn->conn_kind=%u", conn->conn_kind)); if (conn->db_conn->is_connected()) { conn->db_conn->disconnect(); @@ -10363,9 +10362,9 @@ int spider_db_open_handler( spider_db_handler *dbton_hdl = spider->dbton_handler[conn->dbton_id]; DBUG_ENTER("spider_db_open_handler"); spider_lock_before_query(conn, &spider->need_mons[link_idx]); - if (!spider->handler_opened(link_idx, conn->conn_kind)) + if (!spider->handler_opened(link_idx)) *handler_id_ptr = conn->opened_handlers; - if (!spider->handler_opened(link_idx, conn->conn_kind)) + if (!spider->handler_opened(link_idx)) my_sprintf(spider->m_handler_cid[link_idx], (spider->m_handler_cid[link_idx], SPIDER_SQL_HANDLER_CID_FORMAT, @@ -10390,7 +10389,7 @@ int spider_db_open_handler( goto error; } dbton_hdl->reset_sql(SPIDER_SQL_TYPE_HANDLER); - if (!spider->handler_opened(link_idx, conn->conn_kind)) + if (!spider->handler_opened(link_idx)) { if ((error_num = dbton_hdl->insert_opened_handler(conn, link_idx))) goto error; @@ -10407,15 +10406,14 @@ error: int spider_db_close_handler( ha_spider *spider, SPIDER_CONN *conn, - int link_idx, - uint tgt_conn_kind + int link_idx ) { int error_num= 0; spider_db_handler *dbton_hdl = spider->dbton_handler[conn->dbton_id]; DBUG_ENTER("spider_db_close_handler"); DBUG_PRINT("info",("spider conn=%p", conn)); spider_lock_before_query(conn, &spider->need_mons[link_idx]); - if (spider->handler_opened(link_idx, tgt_conn_kind)) + if (spider->handler_opened(link_idx)) { dbton_hdl->reset_sql(SPIDER_SQL_TYPE_HANDLER); if ((error_num = dbton_hdl->append_close_handler_part( diff --git a/storage/spider/spd_db_conn.h b/storage/spider/spd_db_conn.h index 092f4ce75d5..eb0a55e6288 100644 --- a/storage/spider/spd_db_conn.h +++ b/storage/spider/spd_db_conn.h @@ -1175,8 +1175,7 @@ int spider_db_open_handler( int spider_db_close_handler( ha_spider *spider, SPIDER_CONN *conn, - int link_idx, - uint tgt_conn_kind + int link_idx ); diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h index d5ee5868cea..4d324ae3291 100644 --- a/storage/spider/spd_db_include.h +++ b/storage/spider/spd_db_include.h @@ -174,8 +174,6 @@ typedef st_spider_result SPIDER_RESULT; #define SPIDER_SQL_LOP_CHK_PRM_PRF_STR "spider_lc_" #define SPIDER_SQL_LOP_CHK_PRM_PRF_LEN (sizeof(SPIDER_SQL_LOP_CHK_PRM_PRF_STR) - 1) -#define SPIDER_CONN_KIND_MYSQL (1 << 0) - #define SPIDER_SQL_KIND_SQL (1 << 0) #define SPIDER_SQL_KIND_HANDLER (1 << 1) diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc index ad76907c397..5370f88ec05 100644 --- a/storage/spider/spd_db_mysql.cc +++ b/storage/spider/spd_db_mysql.cc @@ -3197,7 +3197,7 @@ void spider_db_mbase::reset_opened_handler() { tmp_spider = (*tmp_link_for_hash)->spider; tmp_link_idx = (*tmp_link_for_hash)->link_idx; - tmp_spider->clear_handler_opened(tmp_link_idx, conn->conn_kind); + tmp_spider->clear_handler_opened(tmp_link_idx); } DBUG_VOID_RETURN; } @@ -7451,7 +7451,7 @@ int spider_mbase_share::discover_table_structure( int *need_mon= &need_mon_deref; if (!(conn = spider_get_conn( spider_share, 0, spider_share->conn_keys[roop_count], trx, NULL, FALSE, - FALSE, SPIDER_CONN_KIND_MYSQL, &error_num)) + FALSE, &error_num)) ) { DBUG_RETURN(error_num); } diff --git a/storage/spider/spd_direct_sql.cc b/storage/spider/spd_direct_sql.cc index be4a7842a45..0f9e6a04639 100644 --- a/storage/spider/spd_direct_sql.cc +++ b/storage/spider/spd_direct_sql.cc @@ -430,7 +430,6 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn( conn->semi_trx_isolation = -2; conn->semi_trx_isolation_chk = FALSE; conn->semi_trx_chk = FALSE; - conn->conn_kind = SPIDER_CONN_KIND_MYSQL; if (mysql_mutex_init(spd_key_mutex_mta_conn, &conn->mta_conn_mutex, MY_MUTEX_INIT_FAST)) @@ -575,7 +574,6 @@ SPIDER_CONN *spider_udf_direct_sql_get_conn( conn->queued_ping = FALSE; DBUG_PRINT("info",("spider conn=%p", conn)); - DBUG_PRINT("info",("spider conn->conn_kind=%u", conn->conn_kind)); DBUG_RETURN(conn); error: diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h index 61666275de0..d8bfbc5e342 100644 --- a/storage/spider/spd_include.h +++ b/storage/spider/spd_include.h @@ -597,7 +597,6 @@ typedef struct st_spider_conn_loop_check SPIDER_CONN_LOOP_CHECK; /* database connection */ typedef struct st_spider_conn { - uint conn_kind; char *conn_key; uint conn_key_length; my_hash_value_type conn_key_hash_value; @@ -952,6 +951,10 @@ typedef struct st_spider_transaction uint trx_ha_reuse_count; XID_STATE internal_xid_state; SPIDER_CONN *join_trx_top; + /* + Assigned from the global variable `spider_thread_id', which + starts from 1 and increments + */ ulonglong spider_thread_id; ulonglong trx_conn_adjustment; uint locked_connections; @@ -1092,10 +1095,6 @@ typedef struct st_spider_share MEM_ROOT mem_root; -/* - volatile bool auto_increment_init; - volatile ulonglong auto_increment_lclval; -*/ ha_statistics stat; longlong static_records_for_status; @@ -1595,7 +1594,14 @@ typedef struct st_spider_trx_ha */ uint *conn_link_idx; uchar *conn_can_fo; - /* TODO: document */ + /* + TODO: better documentation of this field. + + By assigning true to wait_for_reusing, in + spider_check_trx_and_get_conn the fields of the spider handler + will be updated using the trx, as well as some other small + behavioural differences there. + */ bool wait_for_reusing; } SPIDER_TRX_HA; diff --git a/storage/spider/spd_ping_table.cc b/storage/spider/spd_ping_table.cc index 8e4f8a2214b..68254a636e5 100644 --- a/storage/spider/spd_ping_table.cc +++ b/storage/spider/spd_ping_table.cc @@ -648,11 +648,9 @@ SPIDER_CONN *spider_get_ping_table_tgt_conn( ) { SPIDER_CONN *conn; DBUG_ENTER("spider_get_ping_table_tgt_conn"); - if ( - !(conn = spider_get_conn( - share, 0, share->conn_keys[0], trx, NULL, FALSE, FALSE, - SPIDER_CONN_KIND_MYSQL, error_num)) - ) { + if (!(conn= spider_get_conn(share, 0, share->conn_keys[0], trx, NULL, FALSE, + FALSE, error_num))) + { my_error(ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), share->server_names[0]); *error_num = ER_CONNECT_TO_FOREIGN_DATA_SOURCE; diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc index 93c43931112..91594cd7290 100644 --- a/storage/spider/spd_table.cc +++ b/storage/spider/spd_table.cc @@ -4381,8 +4381,6 @@ SPIDER_SHARE *spider_get_share( #ifdef WITH_PARTITION_STORAGE_ENGINE int crd_sync; #endif - char first_byte; - int semi_table_lock_conn; int search_link_idx; uint sql_command = thd_sql_command(thd); SPIDER_Open_tables_backup open_tables_backup; @@ -4579,13 +4577,6 @@ SPIDER_SHARE *spider_get_share( pthread_mutex_unlock(&share->mutex); } - semi_table_lock_conn = spider_param_semi_table_lock_connection(thd, - share->semi_table_lock_conn); - if (semi_table_lock_conn) - first_byte = '0' + - spider_param_semi_table_lock(thd, share->semi_table_lock); - else - first_byte = '0'; if (!(spider->wide_handler->trx = spider_get_trx(thd, TRUE, error_num))) { @@ -4671,7 +4662,6 @@ SPIDER_SHARE *spider_get_share( &spider->conn_can_fo, sizeof(uchar) * share->link_bitmap_size, &spider->sql_kind, sizeof(uint) * share->link_count, &spider->connection_ids, sizeof(ulonglong) * share->link_count, - &spider->conn_kind, sizeof(uint) * share->link_count, &spider->db_request_id, sizeof(ulonglong) * share->link_count, &spider->db_request_phase, sizeof(uchar) * share->link_bitmap_size, &spider->m_handler_opened, sizeof(uchar) * share->link_bitmap_size, @@ -4706,13 +4696,11 @@ SPIDER_SHARE *spider_get_share( for (roop_count = 0; roop_count < (int) share->link_count; roop_count++) { spider->conn_keys[roop_count] = tmp_name; - *tmp_name = first_byte; tmp_name += share->conn_keys_lengths[roop_count] + 1; spider->m_handler_cid[roop_count] = tmp_cid; tmp_cid += SPIDER_SQL_HANDLER_CID_LEN + 1; result_list->upd_tmp_tbl_prms[roop_count].init(); result_list->upd_tmp_tbl_prms[roop_count].field_count = 1; - spider->conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL; } spider_trx_set_link_idx_for_all(spider); @@ -4767,7 +4755,6 @@ SPIDER_SHARE *spider_get_share( !(spider->conns[roop_count] = spider_get_conn(share, roop_count, spider->conn_keys[roop_count], spider->wide_handler->trx, spider, FALSE, TRUE, - SPIDER_CONN_KIND_MYSQL, error_num)) ) { if ( @@ -5066,14 +5053,6 @@ SPIDER_SHARE *spider_get_share( pthread_mutex_unlock(&share->mutex); } - semi_table_lock_conn = spider_param_semi_table_lock_connection(thd, - share->semi_table_lock_conn); - if (semi_table_lock_conn) - first_byte = '0' + - spider_param_semi_table_lock(thd, share->semi_table_lock); - else - first_byte = '0'; - spider->share = share; if (!(spider->wide_handler->trx = spider_get_trx(thd, TRUE, error_num))) { @@ -5147,7 +5126,6 @@ SPIDER_SHARE *spider_get_share( &spider->conn_can_fo, sizeof(uchar) * share->link_bitmap_size, &spider->sql_kind, sizeof(uint) * share->link_count, &spider->connection_ids, sizeof(ulonglong) * share->link_count, - &spider->conn_kind, sizeof(uint) * share->link_count, &spider->db_request_id, sizeof(ulonglong) * share->link_count, &spider->db_request_phase, sizeof(uchar) * share->link_bitmap_size, &spider->m_handler_opened, sizeof(uchar) * share->link_bitmap_size, @@ -5179,13 +5157,11 @@ SPIDER_SHARE *spider_get_share( for (roop_count = 0; roop_count < (int) share->link_count; roop_count++) { spider->conn_keys[roop_count] = tmp_name; - *tmp_name = first_byte; tmp_name += share->conn_keys_lengths[roop_count] + 1; spider->m_handler_cid[roop_count] = tmp_cid; tmp_cid += SPIDER_SQL_HANDLER_CID_LEN + 1; result_list->upd_tmp_tbl_prms[roop_count].init(); result_list->upd_tmp_tbl_prms[roop_count].field_count = 1; - spider->conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL; } spider_trx_set_link_idx_for_all(spider); @@ -5237,7 +5213,6 @@ SPIDER_SHARE *spider_get_share( !(spider->conns[roop_count] = spider_get_conn(share, roop_count, spider->conn_keys[roop_count], spider->wide_handler->trx, spider, FALSE, TRUE, - SPIDER_CONN_KIND_MYSQL, error_num)) ) { if ( @@ -5857,11 +5832,9 @@ int spider_open_all_tables( } /* create conn */ - if ( - !(conn = spider_get_conn( - &tmp_share, 0, tmp_share.conn_keys[0], trx, NULL, FALSE, FALSE, - SPIDER_CONN_KIND_MYSQL, &error_num)) - ) { + if (!(conn= spider_get_conn(&tmp_share, 0, tmp_share.conn_keys[0], trx, + NULL, FALSE, FALSE, &error_num))) + { spider_sys_index_end(table_tables); spider_close_sys_table(thd, table_tables, &open_tables_backup, TRUE); @@ -5955,11 +5928,9 @@ int spider_open_all_tables( } /* create another conn */ - if ( - (!(conn = spider_get_conn( - &tmp_share, 0, tmp_share.conn_keys[0], trx, spider, TRUE, FALSE, - SPIDER_CONN_KIND_MYSQL, &error_num))) - ) { + if ((!(conn= spider_get_conn(&tmp_share, 0, tmp_share.conn_keys[0], trx, + spider, TRUE, FALSE, &error_num)))) + { spider_free_tmp_dbton_handler(spider); spider_free(trx, share, MYF(0)); delete spider; @@ -9018,9 +8989,8 @@ void *spider_table_bg_sts_action( if (!conns[spider->search_link_idx]) { spider_get_conn(share, spider->search_link_idx, - share->conn_keys[spider->search_link_idx], - trx, spider, FALSE, FALSE, SPIDER_CONN_KIND_MYSQL, - &error_num); + share->conn_keys[spider->search_link_idx], trx, + spider, FALSE, FALSE, &error_num); if (conns[spider->search_link_idx]) { conns[spider->search_link_idx]->error_mode = 0; @@ -9171,9 +9141,8 @@ void *spider_table_bg_crd_action( if (!conns[spider->search_link_idx]) { spider_get_conn(share, spider->search_link_idx, - share->conn_keys[spider->search_link_idx], - trx, spider, FALSE, FALSE, SPIDER_CONN_KIND_MYSQL, - &error_num); + share->conn_keys[spider->search_link_idx], trx, + spider, FALSE, FALSE, &error_num); if (conns[spider->search_link_idx]) { conns[spider->search_link_idx]->error_mode = 0; diff --git a/storage/spider/spd_trx.cc b/storage/spider/spd_trx.cc index 6a76f03c1b0..210a387e950 100644 --- a/storage/spider/spd_trx.cc +++ b/storage/spider/spd_trx.cc @@ -48,6 +48,10 @@ extern struct charset_info_st *spd_charset_utf8mb3_bin; extern handlerton *spider_hton_ptr; extern SPIDER_DBTON spider_dbton[SPIDER_DBTON_SIZE]; pthread_mutex_t spider_thread_id_mutex; +/* + Starts from 1 and increment by 1 whenever a new SPIDER_TRX is + created. +*/ ulonglong spider_thread_id; #ifdef HAVE_PSI_INTERFACE @@ -2735,13 +2739,11 @@ int spider_internal_xa_commit_by_xid( goto error; } - if ( - !(conn = spider_get_conn( - &tmp_share, 0, tmp_share.conn_keys[0], trx, NULL, FALSE, FALSE, - SPIDER_CONN_KIND_MYSQL, &error_num)) && - (force_commit == 0 || - (force_commit == 1 && error_num != ER_XAER_NOTA)) - ) { + if (!(conn= spider_get_conn(&tmp_share, 0, tmp_share.conn_keys[0], trx, + NULL, FALSE, FALSE, &error_num)) && + (force_commit == 0 || + (force_commit == 1 && error_num != ER_XAER_NOTA))) + { spider_sys_index_end(table_xa_member); spider_free_tmp_share_alloc(&tmp_share); free_root(&mem_root, MYF(0)); @@ -2979,13 +2981,11 @@ int spider_internal_xa_rollback_by_xid( goto error; } - if ( - !(conn = spider_get_conn( - &tmp_share, 0, tmp_share.conn_keys[0], trx, NULL, FALSE, FALSE, - SPIDER_CONN_KIND_MYSQL, &error_num)) && - (force_commit == 0 || - (force_commit == 1 && error_num != ER_XAER_NOTA)) - ) { + if (!(conn= spider_get_conn(&tmp_share, 0, tmp_share.conn_keys[0], trx, + NULL, FALSE, FALSE, &error_num)) && + (force_commit == 0 || + (force_commit == 1 && error_num != ER_XAER_NOTA))) + { spider_sys_index_end(table_xa_member); spider_free_tmp_share_alloc(&tmp_share); free_root(&mem_root, MYF(0)); @@ -3272,6 +3272,12 @@ int spider_rollback( conn->db_conn->reset_lock_table_hash(); } + /* + We do (almost) nothing if the following two conditions are both met: + + * This is just the end of a statement, not an explicit rollback. + * The autocommit is OFF or we are in an explicit transaction. + */ if (all || (!thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))) { if (trx->trx_start) @@ -3481,18 +3487,162 @@ int spider_end_trx( DBUG_RETURN(error_num); } +/* + Report a table error. + + The error_msg requires two format params, db name and table name. +*/ +static int spider_report_table_error(ha_spider *spider, + int error_num, const char *error_msg) +{ + TABLE *table = spider->get_table(); + TABLE_SHARE *table_share = table->s; + char *db = (char *) my_alloca( + table_share->db.length + 1 + table_share->table_name.length + 1); + if (!db) + { + my_error(HA_ERR_OUT_OF_MEM, MYF(0)); + return HA_ERR_OUT_OF_MEM; + } + char *table_name = db + table_share->db.length + 1; + memcpy(db, table_share->db.str, table_share->db.length); + db[table_share->db.length] = '\0'; + memcpy(table_name, table_share->table_name.str, + table_share->table_name.length); + table_name[table_share->table_name.length] = '\0'; + my_printf_error(error_num, error_msg, MYF(0), db, table_name); + my_afree(db); + return error_num; +} + +/* Only called from spider_check_trx_and_get_conn. */ +static int spider_trx_update(THD *thd, ha_spider *spider, SPIDER_TRX *trx) +{ + int search_link_idx, roop_count; + SPIDER_SHARE *share = spider->share; + DBUG_ENTER("spider_trx_update"); + DBUG_PRINT("info", ("spider next trx")); + spider->trx_conn_adjustment = trx->trx_conn_adjustment; + if ( + spider->spider_thread_id != trx->spider_thread_id || + spider->search_link_query_id != thd->query_id + ) { + search_link_idx = spider_conn_first_link_idx(thd, + share->link_statuses, share->access_balances, spider->conn_link_idx, + share->link_count, SPIDER_LINK_STATUS_OK); + if (search_link_idx == -1) + DBUG_RETURN(spider_report_table_error(spider, + ER_SPIDER_ALL_LINKS_FAILED_NUM, + ER_SPIDER_ALL_LINKS_FAILED_STR)); + else if (search_link_idx == -2) + { + my_error(HA_ERR_OUT_OF_MEM, MYF(0)); + DBUG_RETURN(HA_ERR_OUT_OF_MEM); + } + spider->search_link_idx = search_link_idx; + spider->search_link_query_id = thd->query_id; + } + spider->spider_thread_id = trx->spider_thread_id; + + for (roop_count = 0; roop_count < (int) share->link_count; roop_count++) + { + if (!spider->handler_opened(roop_count)) + spider->conns[roop_count] = NULL; + } + DBUG_RETURN(0); +} + +/* + Only called from spider_check_trx_and_get_conn + + TODO: this function comes from a refactoring, and the from_if param + is true iff the call is from the "if" branch, for lack of a better + name. This needs to be further understood and explained or removed + accordingly. +*/ +static int spider_trx_get_conn(ha_spider *spider, SPIDER_TRX *trx, + bool from_if) +{ + int roop_count, error_num; + bool search_link_idx_is_checked = FALSE; + SPIDER_CONN *conn; + SPIDER_SHARE *share = spider->share; + DBUG_ENTER("spider_trx_get_conn"); + for ( + roop_count = spider_conn_link_idx_next(share->link_statuses, + spider->conn_link_idx, -1, share->link_count, + SPIDER_LINK_STATUS_RECOVERY); + roop_count < (int) share->link_count; + roop_count = spider_conn_link_idx_next(share->link_statuses, + spider->conn_link_idx, roop_count, share->link_count, + SPIDER_LINK_STATUS_RECOVERY) + ) { + if (roop_count == spider->search_link_idx) + search_link_idx_is_checked = TRUE; + if ((conn= spider->conns[roop_count])) + { + /* TODO: do we need the check for !from_if here? */ + if (!from_if) + conn->error_mode&= spider->error_mode; + if (conn->queued_connect) + conn->queued_connect_share= share; + } + else if (!(conn = + spider_get_conn(share, roop_count, + spider->conn_keys[roop_count], trx, + spider, FALSE, TRUE, + &error_num))) + { + if ( + share->monitoring_kind[roop_count] && + spider->need_mons[roop_count] + ) { + error_num = spider_ping_table_mon_from_table( + trx, + trx->thd, + share, + roop_count, + (uint32) share->monitoring_sid[roop_count], + share->table_name, + share->table_name_length, + spider->conn_link_idx[roop_count], + NULL, + 0, + share->monitoring_kind[roop_count], + share->monitoring_limit[roop_count], + share->monitoring_flag[roop_count], + TRUE + ); + } + DBUG_PRINT("info",("spider get conn error")); + /* + Flag for another update (trx->spider_thread_id is at least + 1, causing the next check spider->spider_thread_id != + trx->spider_thread_id to return true). + + TODO: do we need the check for from_if here? + */ + if (from_if) + spider->spider_thread_id = 0; + DBUG_RETURN(error_num); + } + else + conn->error_mode &= spider->error_mode; + } + if (!search_link_idx_is_checked) + DBUG_RETURN(spider_report_table_error(spider, + ER_SPIDER_LINK_MON_JUST_NG_NUM, + ER_SPIDER_LINK_MON_JUST_NG_STR)); + DBUG_RETURN(0); +} + int spider_check_trx_and_get_conn( THD *thd, - ha_spider *spider, - bool use_conn_kind + ha_spider *spider ) { - int error_num, roop_count, search_link_idx; + int error_num; SPIDER_TRX *trx; SPIDER_SHARE *share = spider->share; - SPIDER_CONN *conn; - char first_byte, first_byte_bak; - int semi_table_lock_conn = spider_param_semi_table_lock_connection(thd, - share->semi_table_lock_conn); DBUG_ENTER("spider_check_trx_and_get_conn"); if (!(trx = spider_get_trx(thd, TRUE, &error_num))) { @@ -3507,234 +3657,21 @@ int spider_check_trx_and_get_conn( if (!trx_ha || trx_ha->wait_for_reusing) spider_trx_set_link_idx_for_all(spider); - - if (semi_table_lock_conn) - first_byte = '0' + - spider_param_semi_table_lock(thd, share->semi_table_lock); - else - first_byte = '0'; - DBUG_PRINT("info",("spider semi_table_lock_conn = %d", - semi_table_lock_conn)); - DBUG_PRINT("info",("spider semi_table_lock = %d", - spider_param_semi_table_lock(thd, share->semi_table_lock))); - DBUG_PRINT("info",("spider first_byte = %d", first_byte)); if ( !trx_ha || trx_ha->wait_for_reusing || trx->spider_thread_id != spider->spider_thread_id || trx->trx_conn_adjustment != spider->trx_conn_adjustment || - first_byte != *spider->conn_keys[0] || share->link_statuses[spider->conn_link_idx[spider->search_link_idx]] == SPIDER_LINK_STATUS_NG ) { - DBUG_PRINT("info",(first_byte != *spider->conn_keys[0] ? - "spider change conn type" : trx != spider->wide_handler->trx ? - "spider change thd" : "spider next trx")); - spider->wide_handler->trx = trx; - spider->trx_conn_adjustment = trx->trx_conn_adjustment; - if ( - spider->spider_thread_id != trx->spider_thread_id || - spider->search_link_query_id != thd->query_id - ) { - search_link_idx = spider_conn_first_link_idx(thd, - share->link_statuses, share->access_balances, spider->conn_link_idx, - share->link_count, SPIDER_LINK_STATUS_OK); - if (search_link_idx == -1) - { - TABLE *table = spider->get_table(); - TABLE_SHARE *table_share = table->s; - char *db = (char *) my_alloca( - table_share->db.length + 1 + table_share->table_name.length + 1); - if (!db) - { - my_error(HA_ERR_OUT_OF_MEM, MYF(0)); - DBUG_RETURN(HA_ERR_OUT_OF_MEM); - } - char *table_name = db + table_share->db.length + 1; - memcpy(db, table_share->db.str, table_share->db.length); - db[table_share->db.length] = '\0'; - memcpy(table_name, table_share->table_name.str, - table_share->table_name.length); - table_name[table_share->table_name.length] = '\0'; - my_printf_error(ER_SPIDER_ALL_LINKS_FAILED_NUM, - ER_SPIDER_ALL_LINKS_FAILED_STR, MYF(0), db, table_name); - my_afree(db); - DBUG_RETURN(ER_SPIDER_ALL_LINKS_FAILED_NUM); - } else if (search_link_idx == -2) - { - my_error(HA_ERR_OUT_OF_MEM, MYF(0)); - DBUG_RETURN(HA_ERR_OUT_OF_MEM); - } - spider->search_link_idx = search_link_idx; - spider->search_link_query_id = thd->query_id; - } - spider->spider_thread_id = trx->spider_thread_id; - - first_byte_bak = *spider->conn_keys[0]; - *spider->conn_keys[0] = first_byte; - for (roop_count = 0; roop_count < (int) share->link_count; roop_count++) - { - if (!spider->handler_opened(roop_count, SPIDER_CONN_KIND_MYSQL)) - spider->conns[roop_count] = NULL; - } - bool search_link_idx_is_checked = FALSE; - for ( - roop_count = spider_conn_link_idx_next(share->link_statuses, - spider->conn_link_idx, -1, share->link_count, - SPIDER_LINK_STATUS_RECOVERY); - roop_count < (int) share->link_count; - roop_count = spider_conn_link_idx_next(share->link_statuses, - spider->conn_link_idx, roop_count, share->link_count, - SPIDER_LINK_STATUS_RECOVERY) - ) { - uint tgt_conn_kind = (use_conn_kind ? spider->conn_kind[roop_count] : - SPIDER_CONN_KIND_MYSQL); - if (roop_count == spider->search_link_idx) - search_link_idx_is_checked = TRUE; - if ( - tgt_conn_kind == SPIDER_CONN_KIND_MYSQL && - !spider->conns[roop_count] - ) { - *spider->conn_keys[roop_count] = first_byte; - if ( - !(conn = - spider_get_conn(share, roop_count, - spider->conn_keys[roop_count], trx, - spider, FALSE, TRUE, - use_conn_kind ? spider->conn_kind[roop_count] : - SPIDER_CONN_KIND_MYSQL, - &error_num)) - ) { - if ( - share->monitoring_kind[roop_count] && - spider->need_mons[roop_count] - ) { - error_num = spider_ping_table_mon_from_table( - trx, - trx->thd, - share, - roop_count, - (uint32) share->monitoring_sid[roop_count], - share->table_name, - share->table_name_length, - spider->conn_link_idx[roop_count], - NULL, - 0, - share->monitoring_kind[roop_count], - share->monitoring_limit[roop_count], - share->monitoring_flag[roop_count], - TRUE - ); - } - DBUG_PRINT("info",("spider get conn error")); - *spider->conn_keys[0] = first_byte_bak; - spider->spider_thread_id = 0; - DBUG_RETURN(error_num); - } - conn->error_mode &= spider->error_mode; - } - } - if (!search_link_idx_is_checked) - { - TABLE *table = spider->get_table(); - TABLE_SHARE *table_share = table->s; - char *db = (char *) my_alloca( - table_share->db.length + 1 + table_share->table_name.length + 1); - if (!db) - { - my_error(HA_ERR_OUT_OF_MEM, MYF(0)); - DBUG_RETURN(HA_ERR_OUT_OF_MEM); - } - char *table_name = db + table_share->db.length + 1; - memcpy(db, table_share->db.str, table_share->db.length); - db[table_share->db.length] = '\0'; - memcpy(table_name, table_share->table_name.str, - table_share->table_name.length); - table_name[table_share->table_name.length] = '\0'; - my_printf_error(ER_SPIDER_LINK_MON_JUST_NG_NUM, - ER_SPIDER_LINK_MON_JUST_NG_STR, MYF(0), db, table_name); - my_afree(db); - DBUG_RETURN(ER_SPIDER_LINK_MON_JUST_NG_NUM); - } - } else { - DBUG_PRINT("info",("spider link_status = %ld", - share->link_statuses[spider->conn_link_idx[spider->search_link_idx]])); - bool search_link_idx_is_checked = FALSE; - for ( - roop_count = spider_conn_link_idx_next(share->link_statuses, - spider->conn_link_idx, -1, share->link_count, - SPIDER_LINK_STATUS_RECOVERY); - roop_count < (int) share->link_count; - roop_count = spider_conn_link_idx_next(share->link_statuses, - spider->conn_link_idx, roop_count, share->link_count, - SPIDER_LINK_STATUS_RECOVERY) - ) { - if (roop_count == spider->search_link_idx) - search_link_idx_is_checked = TRUE; - conn = spider->conns[roop_count]; - - if (!conn) - { - DBUG_PRINT("info",("spider get conn %d", roop_count)); - if ( - !(conn = - spider_get_conn(share, roop_count, - spider->conn_keys[roop_count], trx, - spider, FALSE, TRUE, - use_conn_kind ? spider->conn_kind[roop_count] : - SPIDER_CONN_KIND_MYSQL, - &error_num)) - ) { - if ( - share->monitoring_kind[roop_count] && - spider->need_mons[roop_count] - ) { - error_num = spider_ping_table_mon_from_table( - trx, - trx->thd, - share, - roop_count, - (uint32) share->monitoring_sid[roop_count], - share->table_name, - share->table_name_length, - spider->conn_link_idx[roop_count], - NULL, - 0, - share->monitoring_kind[roop_count], - share->monitoring_limit[roop_count], - share->monitoring_flag[roop_count], - TRUE - ); - } - DBUG_PRINT("info",("spider get conn error")); - DBUG_RETURN(error_num); - } - } - conn->error_mode &= spider->error_mode; - } - if (!search_link_idx_is_checked) - { - TABLE *table = spider->get_table(); - TABLE_SHARE *table_share = table->s; - char *db = (char *) my_alloca( - table_share->db.length + 1 + table_share->table_name.length + 1); - if (!db) - { - my_error(HA_ERR_OUT_OF_MEM, MYF(0)); - DBUG_RETURN(HA_ERR_OUT_OF_MEM); - } - char *table_name = db + table_share->db.length + 1; - memcpy(db, table_share->db.str, table_share->db.length); - db[table_share->db.length] = '\0'; - memcpy(table_name, table_share->table_name.str, - table_share->table_name.length); - table_name[table_share->table_name.length] = '\0'; - my_printf_error(ER_SPIDER_LINK_MON_JUST_NG_NUM, - ER_SPIDER_LINK_MON_JUST_NG_STR, MYF(0), db, table_name); - my_afree(db); - DBUG_RETURN(ER_SPIDER_LINK_MON_JUST_NG_NUM); - } + if ((error_num= spider_trx_update(thd, spider, trx))) + DBUG_RETURN(error_num); + if ((error_num= spider_trx_get_conn(spider, trx, true))) + DBUG_RETURN(error_num); } + else if ((error_num= spider_trx_get_conn(spider, trx, false))) + DBUG_RETURN(error_num); spider->set_first_link_idx(); DBUG_RETURN(spider_create_trx_ha(trx, spider, trx_ha)); } diff --git a/storage/spider/spd_trx.h b/storage/spider/spd_trx.h index 2055a49717e..93b03fcec21 100644 --- a/storage/spider/spd_trx.h +++ b/storage/spider/spd_trx.h @@ -227,11 +227,7 @@ int spider_end_trx( SPIDER_CONN *conn ); -int spider_check_trx_and_get_conn( - THD *thd, - ha_spider *spider, - bool use_conn_kind -); +int spider_check_trx_and_get_conn(THD *thd, ha_spider *spider); THD *spider_create_tmp_thd(); diff --git a/strings/ctype.c b/strings/ctype.c index b3c7158cf61..2975f3a2fb9 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -843,6 +843,8 @@ my_string_repertoire_8bit(CHARSET_INFO *cs, const char *str, size_t length) const char *strend; if ((cs->state & MY_CS_NONASCII) && length > 0) return MY_REPERTOIRE_UNICODE30; + if (!str) // Avoid UBSAN nullptr-with-offset + return MY_REPERTOIRE_ASCII; for (strend= str + length; str < strend; str++) { if (((uchar) *str) > 0x7F) diff --git a/strings/strcoll.inl b/strings/strcoll.inl index 1a727e23847..0da2ecc3a6d 100644 --- a/strings/strcoll.inl +++ b/strings/strcoll.inl @@ -190,12 +190,14 @@ MY_FUNCTION_NAME(strnncoll)(CHARSET_INFO *cs __attribute__((unused)), 0 >0 "a" is a prefix of "b", so "a" is smaller. >0 0 "b" is a prefix of "a", check b_is_prefix. >0 >0 Two weights were scanned, check weight difference. + + Note: weights can be zero and positive (never negative). */ if (!a_wlen) - return b_wlen ? -b_weight : 0; + return b_wlen ? -1 : 0; if (!b_wlen) - return b_is_prefix ? 0 : a_weight; + return b_is_prefix ? 0 : +1; if ((res= (a_weight - b_weight))) return res; diff --git a/win/packaging/heidisql.cmake b/win/packaging/heidisql.cmake index f745eeb060b..157e5517594 100644 --- a/win/packaging/heidisql.cmake +++ b/win/packaging/heidisql.cmake @@ -1,6 +1,6 @@ -SET(HEIDISQL_BASE_NAME "HeidiSQL_12.8_32_Portable") +SET(HEIDISQL_BASE_NAME "HeidiSQL_12.10_32_Portable") SET(HEIDISQL_ZIP "${HEIDISQL_BASE_NAME}.zip") -SET(HEIDISQL_URL "http://www.heidisql.com/downloads/releases/${HEIDISQL_ZIP}") +SET(HEIDISQL_URL "https://www.heidisql.com/downloads/releases/${HEIDISQL_ZIP}") SET(HEIDISQL_DOWNLOAD_DIR ${THIRD_PARTY_DOWNLOAD_LOCATION}/${HEIDISQL_BASE_NAME}) IF(NOT EXISTS ${HEIDISQL_DOWNLOAD_DIR}/${HEIDISQL_ZIP})